Tool Development
This article focuses mostly on two major tools developed for Escape from Briar Mansion.
The first is the Level Editor. The second is Asset Processor.
Level Editor
As part of the development for Escape From Briar Mansion, the Design team was going to require a robust level editor to be able to quickly iterate on puzzle ideas - and importantly, be able to do their work autonomously with out requiring me to recompile the game.
Given that the game is grid based, it made sense to use an auto-tiling system that allowed users to carve hallways with a brush. The Tile Brush dynamically detects neighboring tiles and populates wall panels as required.
Once the general layout is brushed in, users can edit the properties of individual tiles - configuring the walls, floor, traversal and visibility conditions.
Entities can be added to tiles, and copied or relocated to other tiles with a single action.
Users can jump in to and play the level instantly, and jump back out to tweak and test without game/editor restarts.
Working with the Designers and Artists, functionality was regularly added to meet the demands of the game and its development.
I took advantage of libraries like DearImGui for the UI and nholman/json for serialisation to speed up development time so that I could balance Engine, Game and Tools development appropriately. The Editor is a single class that lives inside the games code-base, and talks to the level manager API in the game, the same way the game engine does.
I kept the level file format as flat as possible. I wanted to maintain simplicity given that we were laying the train tracks immediately in front of the train, so to speak.
As features got added and systems were refactored, none of this was ever destructive to the existing level format. No designer ever lost work and upgrades were handled silently without them noticing.
It was a very enjoyable process building the level editor and I am so happy with the results that I made it accessible in the game for the public to use.
Asset Processor
Being the sole programmer on the bespoke engine powered Escape From Briar Mansion project, I did not want to be a blocker for the artist to import assets in to the games resource repository.
Features
Drag and Drop loading of .FBX and .TGA files
Intelligently creates Materials based on filenames exported from Substance Painter (albedo, normal, metallic, etc..)
Preview Models, Animations & Materials as they will be displayed in game.
Adds configured Models and Materials in to game data source control repository.
Loads in seconds.
I wanted artists to be able bring assets in to the game autonomously. They should be able to preview their models and animations as they would be rendered in the game, and have ownership over configuring materials to ensure nothing was lost in communication.
Respecting that this is a student project and Artists are learning many tools, I wanted my tool to be as simple as possible to use.
File input is entirely through dragging and dropping .FBX or .TGA files onto the window. I read the file names and search for particular keywords to automatically assign texture maps to the various samplers of the PBR materials.
I enforce a particular naming convention by templating all asset types in the staging environment. (e.g. decorations vs monsters vs tiles) to keep things organised.
Once the asset is configured correctly in the preview window, the Artist can press a button to inject the asset in to the games resource repository. Any new and modified files are updated - Then the artist commits their changes via their favorite source control utility.