The bonus map alphabet keeps the mandatory parser model but extends it with
additional accepted symbols for bonus-only gameplay and rendering systems.
Bonus alphabet
Bonus symbols extend the map language without changing the mandatory base
Doors, pickups, and extra wall families are parsed through bonus helpers. The mandatory alphabet stays intact; the bonus binary adds new accepted symbols and routes them to the correct runtime behavior.
01 Families of bonus tiles The page is organized around the semantic groups the parser and renderer actually care about.
Doors
AD
Dedicated door tiles with runtime state and passability logic.
Accepted through BONUS_DOOR_SET and resolved as progress-aware collision and dedicated door textures.
Sprites / pickups
*@)/
Traversable gameplay markers projected as sprites instead of wall hits.
Used for HP, ammo, armor, and score pickups; they stay reachable by BFS and free for player movement, even though some of these glyphs also belong to the broad punctuation alphabet.
Extended wall families
2..9 and a..z 2349abcz
Additional wall buckets for larger texture vocabularies.
Each accepted value maps to a distinct wall family and remains solid for validation, collision, and DDA.
Symbol walls
BONUS_WALL_SYMBOL_SET !#%&+-[\]~
Punctuation-based wall tiles for extra themed textures.
They behave like walls, not floors or sprites, because sprite tiles are filtered out first before symbol-wall matching. 02 Behavior by subsystem The critical distinction is not the glyph itself, but whether the symbol is considered solid, traversable, or stateful by BFS, collision, and rendering.
| Symbol | BFS | Collision | DDA / render |
A / D | solid while closed | state-aware | door texture / door slice |
2..9 / a..z | solid | blocked | family-selected wall texture |
symbol walls | solid | blocked | symbol-selected wall texture |
* @ ) / | traversable | free | projected sprite |
03 Validation path The bonus parser does not replace the mandatory validator. It extends it with one explicit gate for bonus symbols.
mandatory alphabet = { 0, 1, N, S, E, W, ' ' }
bonus extension = bonus_is_valid_map_char(c)
accepted extras = doors + extra wall families + symbol walls + pickups
priority rule = sprite tiles excluded before symbol-wall matching
✓ Invariant after validation Player spawn remains strict even in bonus mode.
Only N/S/E/W can initialize the player. Bonus symbols widen the tile alphabet, but they do not redefine spawn semantics or the mandatory parsing path.
- door tiles:
A, D
- extended wall families:
2..9 and a..z
- symbol-driven wall families via
BONUS_WALL_SYMBOL_SET
- sprite and pickup markers:
*, @, ), /
Keep this page synchronized with the bonus parser, validation helpers, and
texture selection logic. Player spawn remains N/S/E/W even in bonus mode.
The bonus wall-symbol set is broad, but sprite markers are carved out first and
treated as traversable sprites rather than solid walls.