Engine work for Rival Fortress is coming coming to a close. This weekend I decided to give it a test run with a simple prototype in order to get a feel how the API was shaping out.
While I was at it I also extracted the engine into a separate Git repository by using Git subtrees.
Git subtrees are a simple way to both split a subdirectory of an existing repository into a separate repository and include an external repository within your main repository.
I use subtrees to extract reusable components into libraries from projects I’m working on. In Rival Fortress’s case, the directory tree was structured like so:
root - engine - game - platform - generated - libs - game - libs
As you can see all engine code is contained in the
engine subdirectory, so it was easy to pull out into a separate repository while keeping all commit history relative to the subdirectory.
Convention over configuration
I’m a big fan of convention over configuration, and this is reflected by the way I structure engine and game code.
The engine expects certain files to be named in a specific way, as well as the folder structure to follow the one outlined above. I find that this makes it easy to bootstrap projects as well as giving the user of the engine/framework smarter defaults.