Snap charge is a physics based puzzle game where the player has to set up bombs and other equipment to blow up simple buildings. Each level has a series of sensors, which need to fall into the right area to win. The game allows the player to carefully plan when and where each bomb goes off and is tasked with beating each level either as quickly as possible or using the smallest possible budget.
Ongoing developmentThe first release of the game consisted of 40 levels, though I'm planning to slowly expand this to a full 100. The game stands to be released on Android (google play store) and later IOS. Though demo versions will also be accessible via browser, though without any paid features.
The game is of course implemented in Unity. It offered a few interesting design challenges.
First of all is the system for saving and loading the levels themselves. Note that every level occurs in the same Unity scene, each level is saved in and generated from a json file that describes the nodes and connecting members of the building itself, as well as the environment layout and some additional metadata such as the tools available to the player.
Another interesting challenge was to make sure the physics is deterministic, in this way each solution leads to a unique outcome, allowing the player to carefully tweak their setup. E.g. bombs are inactive in physics terms, so adding more bombs to the structure will not affect the outcome until they explode. It also prevents sending the player trough a frustrating loop of retrying the same solution dozens of times trying to get a lucky outcome. Determenism is achieved only trough careful coding, planning and a torough reset of the physics system, as well as avoiding non-deterministic elements in the Unity physics engine.
Designing the levels themselves is probably the most pleasant part, given the builtin level editor.
Adding player made levels
At the time of writing (23/01/2021) I am still open to adding user made levels to the game. All I need is a vague idea from a screenshot or preferrably the level file itself. The levels should be clean and sensible, without floating geometry, and have a satisfying solution, that does not depend on unpredictable quirks of the physics engine. Level files can be found the Unity persistent data path, which will depend on the platform.