Skip to content

auburnsummer/vert

Repository files navigation

VERT

VERT is an implementation of MiniScript for use in Rhythm Doctor levels. It is an experiment to see how scripting can be used in RD levels.

ℹ️
This is in an experimental stage. It might never get to a point where I feel that it is useful enough to justify the resulting custom levels split it would cause. In its current form it doesn’t do anything more interesting than RDCode does.
⚠️
Posting any levels that use VERT to the Rhythm Doctor Lounge is a violation of the server rules.
💡
I’m looking for a new name for the project. Probably more overtly medically themed to keep in line with existing tools and phrases such as "surgery" and "scalpel". In particular, VERT sounds similar to things like HOMvert, which I want to avoid. Please suggest names via this form.
Rhythm.Doctor.2022-06-09.15-23-38.mp4

Goals

In particular, I want to explore the concept of "hub" levels, which contain links to other levels with a cohesive narrative. The main game, for instance, contains a mix of gameplay levels, cutscene levels, and short scenes within the level select. With scripting, it may be possible to implement a "level select" as an RD level.

What might such a level need?

  • Unlike normal levels, a level select doesn’t proceed linearly with time. Instead, it transitions between states based on the player input.

  • A level select would need to be able to store information about a player’s progress.

  • A level select would need to able to play other levels, and then go back to the level select.

I found that there are some levels already that have to incorporate state-based behaviour. These levels often work by encoding the state in either RDCode values or the position of the playhead.

MiniScript

I evaluated several languages and decided on MiniScript:

  • MiniScript is explicitly designed as a beginner friendly language that is easy to learn.

  • The MiniScript API is very suitable for injecting in a mod. Stuff like Lua MoonScript, for instance, relies on annotations or build steps which I, as a modder, do not have access to.

  • The MiniScript VM is very small and compact, and it should be possible to serialize and deserialize the entire VM safely. This will be important for the level select scenario (we need to serialize the host level VMs, load a new level, and then restore the state of the host level afterwards)

A syntax guide to MiniScript can be found here.

MiniScript is a little bare and lacks some features. What we might end up doing is "MiniScript with RD enhancements", adding in certain syntax features as it becomes apparent that they are needed. But for now, it’s vanilla MiniScript.

Installation

tbd

About

scripting language for Rhythm Doctor levels

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published