An engine for describing games built around Xerces, exprtk, and SFML.
Status: idea, refines the plan in 13; not built
A jump is either static (same height, length, arc, time and animation every time, as in the early Castlevania games) or dynamic (height from how long the button is held, length from run speed, steering in the air, as in Super Mario Bros.). One verb with two models and a few parameters each.
The second batch of conversations argued for separating two things that the first plan bundles:
Horizontal air control is not one switch. A small ladder of behaviors:
| Behavior | Meaning |
|---|---|
| none | trajectory is decided at takeoff |
| steer | the player can bend the path |
| accelerate | input changes horizontal velocity |
| brake | input can reduce existing velocity but not reverse it |
| reverse | the player can build velocity the other way |
| full | horizontal motion is essentially player-controlled |
They combine, and the ladder explains a set of games without naming any of them: a fixed-arc game has none; a game where the player can stall but not turn around has brake; the Mario ledge trick (jump out, come back and land on a ledge directly above) needs reverse.
The broader form of the same idea is to describe movement as a list of capabilities on the ground and in the air rather than as a named jump type:
An author of a fixed-arc game says the air has no control on either axis; an author of a free-control game says full. The engine offers no type called after a specific game.
A useful check, repeated across the conversations: can the language describe the jump of game A, game B and game C using only the shared words and different values, without a word that means behave like one of them. If a game needs its own type name, the underlying property has not been found yet.