XMLGameEngine

An engine for describing games built around Xerces, exprtk, and SFML.

View the Project on GitHub beefviper/XMLGameEngine

23. Jump and air control

Status: idea, refines the plan in 13; not built

Where 13 left it

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.

An alternative split: jump model plus air control

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.

Movement as capabilities

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.

Test for the vocabulary

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.

Open

Sources