Skip to content

Implement Proper Versioning for Lua & Storyboard - #322

Open
menvae wants to merge 18 commits into
InventiveRhythm:gamemodesfrom
menvae:lua-thing
Open

menvae wants to merge 18 commits into
InventiveRhythm:gamemodesfrom
menvae:lua-thing

Conversation

@menvae

@menvae menvae commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor
image

Changes

  • added missing resource locations for hitobject classes
  • add StoryboardApiVersion which validates and holds latest version as well as being a changelog
  • add a virtual ScriptRunner.Initialize method for script runners
    • used for registering the runtime stuff but I have found the best place to call it was in ScriptRunner.Run so we have minimum VersionedLua.Resolve calls. a general resolve after initializing (always version 1) and one after SetVersion (the selected version)
  • add new VersionedLua for registering members based on LuaVersion Attribute
    • and LuaVersionResolver just selects a version from candidates
  • added versioning to ToLuaTable
  • added an explicit class and conversion for lua hitobjects
  • NotesInRange, EventsInRange, etc. functions have been replaced by ObjectsInRange using resource locations
  • NotesInRange now uses resource locations
  • added proper migrations for storyboard when updating a storyboard
  • lua scripts now create their own local temporary storyboard to properly mimic actual storyboard
  • lua definitions now support [Obsolete] attributes which would add @deprecated
  • lua definitions now support versioning
  • removed event types from definitions

I might've forgotten the rest...

lua definitions now support versioning

To be precise it prioritizes the most latest version, only matters for conflicting member names.

menvae added 13 commits October 19, 2026 05:09
+ use System.Version instead of numerical types
+ add version converter for json
+ make script template use new StoryboardApiVersion versioning
…lly doing it again in lua to avoid stability issues
+ change version to use ints instead of system.version
+ add explicit conversion for lua hitobjects
latest members get priority over older members with the same name

+ remove event types enum since we now rely on resource locations
since lua versions now use ints instead of `System.Version`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant