data-driven design/development

Created: Aug 05, 2022Published: Mar 28, 2023Last modified: Apr 05, 2023
No tags
Word count: 40Backlinks: 7

This pattern is so useful!

It's about separating side-effects from your code, and working with things in a much more debuggable way. It's just easier to figure out what's going on.

Ex. the clawe/toggle refactor - determine-toggle-action, execute-toggle-action.


Backlinks

Related, and probably stored in Hotel.

Likely part of the rooms api.

An attempt to capture the core of a constraint-based room design tool.

A Godot monorepo full of games, addons, and scripts.

A Dino addon.

---

An in-memory game-state database.

Supports booking data from packedScenes and registering data from a nodes' _ready() function at runtime.

Will soon persist and pull saved-state data in at Hotel.register(self) time.

Built up with check_in/check_out as write/read function names.

---

Hotel was originally a Room manager, but it has grown into a full game state db.

It supports 'booking' data based on your static scenes, 'registering' nodes with the hotel when a node is _ready(), and 'checking-in' data as in-game events happen.

The main feature supports reloading zones and rooms that have already been visited, and restoring the state from the player's last visit. Ex: was this candle lit? What was this enemies health? Was this item already found?

Hotel as a UI view that can be used to access game data in a debug overlay or in the Godot editor.

Pulling data from your static files makes it simple to connect nodes together - the initial use-case for this was making it possible for teleporters (elevators) in different rooms/zones to reference eachother as a destination.

Hotel exposes a useful Hotel.query({}) function as well, which supports several basic keys (e.g. groups, is_player ) and a general "filter" key for fetching whatever data you need.

Hotel also offers a signal for all data check_ins, which provides a nice separation of concerns for updating the HUD or sending out notifications based on changed data.

Related but not yet implemented: I hope to get to hotel themes soon, which is a step back toward the room management idea, but with a focus on data-driven or constraint-based look and feel (i.e. constraint-based room design ).