The book · Chapter 11

Coming from another engine

This page is for you if you've used another engine, and you'd like to know what its words are called here. If you haven't, you can skip it: nothing else in the book needs it.

Most of another engine's ideas have a counterpart here, under another name and often in a plainer shape. The engine has no scene tree (a hierarchy of objects, as in Godot) and no entity system (game objects as loose bundles of data, as in Bevy) by default, and a game's state is plain structs it owns. A struct is Rust's named group of values.

The table gives Shuyi's word first, with the chapter that explains it, then the words of five engines for it. A dash means that engine has no such word; "none yet" means Shuyi has no counterpart today.

Shuyi EngineGodotUnityBevyGameMakerPICO-8
a Screen on the screen stack (2)a scenea scenea state (States)a roomthe game's modes
a Transition: Push, Pop, Replace (2)change_scene_to_fileSceneManager.LoadSceneNextStateroom_goto—
a plain struct the game owns, in a screen or in the state its TurnRules change (6)a nodea GameObjectan entityan instance—
Screen::update, which changes the state through commands (2, 6)_processUpdate()a systemthe Step event_update
Screen::draw, a skin painting a view (4)_draw——the Draw event_draw
a real-time game's fixed steps (6)_physics_processFixedUpdate()FixedUpdate——
input.dt(), the frame's seconds, for what a screen shows; rules count steps or turns (6)deltaTime.deltaTimeTimedelta_time—
the game's data, ctx.game, on the context every screen shares (2)an autoloada singletona resource (Res)a global variablea global
an ActionSet and the player's keymap (3)the input map's actionsthe Input System's actionsButtonInput (keys)keyboard_check (keys)btn, btnp
a kind of asset and its formats, through the registry (5)a resource (.tres), an importan asset, a ScriptableObjectan asset, the AssetServeran included filethe cart's data
the bundle's layers, and a baked pack (5)a .pck filean AssetBundle——the cart
the SimRng kept in the rules' state (6)randi()Random—randomrnd
a screen's answer (Transition::pop_with), or the rules' events (2, 6)a signalan eventan eventa user event—
Storage, in the player's profile (7)user://, ConfigFilePlayerPrefs—ini_opencartdata, dset
a module, turned on with cargo shuyi add (2)a plugin, an addona packagea Pluginan extension—
none yet: a game builds its pieces in code, from its dataa packed scene's instancea prefaba scene——
none yeta tweena coroutine—an animation curve—
cargo test, with the Harness (8)unit tests (GUT)the Test Runnertests over an App——
a target's profile, and cargo shuyi web (9)an export preseta build profile—a targetexport

What has no counterpart elsewhere

A few of Shuyi's ideas are rarer in other engines, and the chapters that explain them are worth reading first: