Game Structure Configuration in Game Maker Studio
At first, the menu system in Vacuous was completely hand built. Each item was individually placed, including all of the buttons opening up worlds and levels. The complicated unlock logic that tied these together was also hand scripted. While at first managable for one or two menus, it quickly became a huge limiting factor, especially when changes needed to be made. Thus, I arrived at the idea of basically creating a runtime "database" map of configuration data to automatically manage these systems.
The above image shows how I did this in Game Maker. Each of these scripts adds a whole bunch of values to several different maps. These maps are then read by the menu managment system and the level management system, telling them how the game is structured. These maps are data structures created on runtime and destroyed on exit, but they serve a similar role as a database would.
Here is how the values for the worlds are defined. The world ID is mapped to things such as the world title, the music that plays in the world's levels, etc.
Likewise, similar creation scripts exist for levels and skins. Levels are assigned pointers to the actual room resources, while both them and skins are assigned values at which they unlock.
All of the expository text in the game is also stored in maps this way. This would give the added benefit of making translations easier to create.
Save data is also handled with a map, storing the unlock status of a level. A level can be either locked, unlocked, beaten without a secret orb, or beaten with it. This data is then easily accessible to the level select menu system for use.
And of course, most of this data originated in a spreadsheet where the structure of the game was originally planned.
- J. M. Stark