Crimson Tactics
A grid tactics game. I built a runtime board, wrote an A* pathfinder from scratch, and programmed a pursuing enemy AI that inherits your move count each turn - plus an in-editor tool for painting obstacle layouts by hand.
Playable Open the WebGL tab to play it in your browser.
-
01
Grid Procedural Board
Built the board at runtime from a configurable width and height, instantiating a tile per cell and stamping each with its grid coordinates so every tile knows where it sits.
TileGenerator.cs -
02
Selection Tile State & Click-to-Move
Programmed material-swapping tile states and a camera raycast that resolves the tile under the cursor, plots a path to it, and walks the unit one cell at a time.
TileInfo.cs·PlayerUnit.cs -
03
Pathfinding Custom A* Pathfinder
Wrote A* from scratch over the grid - open and closed sets, g / h / F costs, a Manhattan heuristic, four-directional neighbours, and a came-from retrace - with no NavMesh, reused by both the player and the enemy.
Pathfinder.cs·Node.cs -
04
AI Pursuing Enemy
Built a pursuing enemy that receives the player's exact step count through a C# event on turn end, spends that budget A*-pathing to the closest reachable tile beside the player, and triggers game over the moment it lands adjacent.
EnemyAI.cs -
05
Architecture Unit Base & Cell Reservation
Structured the player and enemy on an abstract
Unitbase and anIAIinterface, with a GridManager that reserves the destination cell before each step so two units never overlap.Unit.cs·GridManager.cs·IAI.cs -
06
Tooling Custom Level Editor
Built a custom
EditorWindowthat paints the obstacle layout as a clickable button grid and marks the asset dirty to save, so designers author levels visually - and the same ScriptableObject grid feeds the runtime spawner and the pathfinder.ObstacleEditor.cs·ObstacleData.cs