The past weeks have been spent intermittently working on the format and structure of the most complicated piece of the toolset so far: The Campaign Editor. A campaign loads in a tile map created in the map editor, a set of sprite bank files created in the sprite banker, and allows the user to lay out a set of entities across the map and set up all the behaviours that make up an interactive scene in the game.
The editor is created by pulling code from the actual game engine and throwing it together behind a totally different interface so you see a very cut-down version of the game running while you compile your campaign together by hand. Creating the editor has been a very good learning experience for how to quickly create a window and button based interface that can quickly capture button clicks while a game scene runs in the background. A lot of this knowledge will go into improving the interface used in the actual game engine.
Moving back to the game itself, the engine now has working doors that can be locked and unlocked via the trigger system. AI creatures will use doors where available, and if they are unsure whether a door is locked or not, they’ll give it a try and remember for later whether they were able to pass through it. Doors are treated as “creatures” by the game and are part of the normal AI loop, allowing them to make decisions about when to open and close as a part of the normal AI process keeping everything very tidy.
In an unrelated milestone, the game quietly moved from a prototype to a prealpha build, as it’s becoming clear that the existing engine will be able to support all the intended features of the final game. Prior to this, it was unclear whether certain features were going to require a full rewrite of the engine to implement, but it now appears that will not be the case and the existing codebase will be able to handle it.