@ttws/boardcode
v0.11.0
Published
board game description language
Downloads
108
Readme
Boardcode: DSL for board game modeling
Text format to model board states of board games.
Concepts:
- Seat: a rectangular area on the table, dedicated to a subset of players.
- Zones: a sub rect in a seat, that contains a certain coordinate system within.
- Coordinate: a position in a zone, that contains a list of parts.
- Part: a board game piece placement.
Grammar
Grammar is line-based and has these types of lines:
- Placement: seat/zone/coord/part statement.
- Layout: zone layout statement.
- View: cross-seat state overrides.
- Carry: coord/part layering rules
In addition to these, comment lines starting with //
and empty lines are also allowed.
The grammer is space-insensitive, and doesn't involve brackets.
Placement
There are four segments in a Placement line:
- Zone: a path-list segment, identifying the zone to place.
- Coord: a
[a, b]
part that points to a location in the zone. - Label: type, id, serial and copies information that identify parts.
- State: part transformation states.
Zone/Coord/State segments carry over to remaining lines. But only lines with a Label segment actually contribute to placements.
Layout
Uses a grammar similar to Markdown Table:
| a | b |
| c | d |
Continuous rows with the same width form layout tables.
Each table's first row and first column specify the row/column sizes.
Use units fr
and mm
for relative and absolute positioning.
Use ^ to expand areas from above.
Areas auto-expand to the right.
Use unused area codes to stop the expansion.
Commands
parsed separately. commands are word pairs that describe board changes. commands are generated by frontend and not human written directly, for now. AIs are expected to parse & generate commands in the future.
Prefabs
parsed separately. prefabs are lines of part label codes. no state codes are expected.
Views
seat::seat/public .face=down
view states are used for hidden information.