This is a commercial roguelike chess game shipping on Steam, built in Unity with a friend. I'm the lead developer, technical designer, and marketer.
It's a game I'm making with a friend of mine, I'm the lead developer, marketer, and technical designer. Because I'm developing this game with someone else I have to make sure that the systems I make are always cleanly split between front end & backend. This way my friend cannot create systematic bugs. I do this in a few ways, such as using MPV, the strategy pattern, etc...
While playing, I wrote down why I made certain moves, then reverse-engineered that reasoning into the AI's decision logic.
Borrowed a trick from Minecraft: give terrain tiles values the AI factors into its move calculations — dangerous tiles score negative, favorable ones positive.
Without any explanation, because it's much more complex than the binding of isaac people quit because they were confused
Instead of giving in & adding a tutorial I created a camera system that would zoom in on a new action. Players didn't always understand what happened, but now they knew why it happened & would try to find out instead of being confused.
To minimise bugs, I built a grid engine at the base, with separate layers of abstraction stacked on top. As a bonus, the engine itself is now reusable in future projects.
Working outside Unity's built-in tools meant building missing features myself — including a custom A* pathfinding algorithm, which the layered structure made straightforward to slot in.
everything in the game interacts with a grid layer, making it and engine within an engine
Using polymorphism, the system is easily expandable to new buffs without touching the backend & can interact with any system
creating chess pieces with their own unique abilities and movement patterns
designed & implemented boards with unique tiles & dangers, such as tornadoes and quicksand
designed interactions between different buffs to create strategic depth