A novel strategy game where you play as both sides. For now the development has been discontinued
gameplay.mp4
- Configurable gameplay loop
- AI that adapts to designer made constraints
- Custom Scriptable Objects for making new unit types
- Serialization system for the unit types
- Audio integration with FMOD
The design of the game has suffered a few iteration, therefore the code assumes a linear structure to each phase of the game. Broadly speaking, the gameplay loop is:
- Player selects side to play as
- Show fog of war for the opposing side
- Player makes new placements
- Units advance their turn which is: attack, move, boost(certain units can retrigger the first two actions)
- Repeat until final turn is reached, or one side looses When one side looses a menu pops-up that allows the player to change a unit from the losing side.
Below is the Phase System that is used to configure each of the events mentioned above via events.

Stalemate is based on chess and it is using backtracking to generate all possible permutations of the 5 units in the 4 squares that are available at a time. In the project there is a scene called Backtracking that showcases how the AI rates a board. In the video below you can see how the test scene is used to generate permutation using a max cost. These are sorted based on a developer defined rating. Blue side is configured to have a smaller rating if there are fewer units placed, therefore, the highest rating boards have as many units as possible.
export.import.mp4
The rating is defined using a ScriptableObject offline:
Each unit is represented with ScriptableObjects. It is as simple as providing the gameplay information and adding a grayscale sprite. The pipeline uses a shader that colors the each of the sprite with a different color palette.

Code - Bogdan Mocanu
Everying else - Jasmine de Jong