An engine for describing games built around Xerces, exprtk, and SFML.
Status: implemented (name, class, filters, unique names for grid cells); class inheritance and compound selectors are ideas only
Objects have a name (their unique identifier) and an optional class (a group label). This is borrowed from HTML’s id and class, with the same purpose: target one specific thing, or all things of a kind.
<object name="paddle1" class="paddle"> ... </object>
<condition class="paddle" variable="score"><atleast>15</atleast><push state="gameover" /></condition>
A single condition on class="paddle" checks either paddle’s score, instead of writing one condition per paddle.
<condition class=".." object="..">: either filter or both (combined with AND); neither matches any object.<collision class=".." object="..">: an object-against-object rule that only responds to a kind of other object or to one instance. Without edge, naming a class or object is enough to make it an object rule, and a <collision> with no selector at all matches anything.class="projectile" has a built-in meaning: the object starts invisible.The author’s view was that every object block needs a unique name anyway. Every cell of a <grid> is now its own object, named after the grid with its column and row counted from 1 (aliens.3.2). The grid’s own name still works where the whole group is meant: <show object="aliens"/>, a rule or condition with object="aliens", <reset object="aliens" />, while a single cell can be named on its own. This is what lets each cell be swept and killed on its own (11) and lets a condition watch one alien. Names for formations (group1[x]) were not built. The members of a <group> are named the same way, the group’s name and a number (logrow3.2), and the group’s own name means all of them (29).
paddle belonging to one player, to separate a two-player win from either-player win. Judged premature for Pong; noted so it is not forgotten.platform class that extends a solid class. Related to the collision classes in 12.player1.*), in the style of mIRC’s scripting engine, as a way to work with groups of values. This would sit on top of a per-object variable map (07).block[x,y], wildcards.