Honestly, building a turn-based strategy engine from scratch in Unity is one of those projects that looks straightforward on paper until you get bogged down in grid coordinate math, action point management, multi-layered turn states, and pathfinding edge cases. The Turn-Based Strategy Toolkit takes that entire burden off your shoulders by providing an extensible, event-driven framework designed specifically for tactical, grid-bound gameplay.
At its core, the architecture relies on a decoupled GridManager and TurnManager system. Rather than coupling unit behavior directly to world transform positions, units bind to grid nodes. The toolkit uses a clean state machine for turn flow: handling player decision phases, environmental hazards, enemy AI calculations, and post-turn cleanup sequentially without locking up the main thread. In my experience, the decision to separate spatial awareness from unit state logic makes integrating custom game systems—such as fog of war or cover mechanics—significantly cleaner.
What sets this toolkit apart from generic grid controllers is its out-of-the-box readiness for modern visual pipelines alongside deep programmatic extensibility. Below are the key structural components that make it stand out:
The system natively supports both square and hexagonal grid topologies. Pathfinding utilizes an optimized A* algorithm customized for grid heights and terrain cost penalties. You can mark nodes as blocked, dynamic obstacles, or high-cost movement zones (like water or mud) dynamically at runtime.
Rather than relying on brittle, nested switch statements for enemy behavior, the included AI uses a utility-based evaluation system. Enemies score potential moves based on criteria like distance to target, available cover, action point cost, and kill potential before committing to a turn.
BaseAction allow you to spin up new abilities (e.g., area-of-effect spells, overwatch mechanics, healing) with minimal boilerplate code.Here is an example of how straightforward it is to extend the toolkit's base action framework to create a custom target-based attack ability:
using System;
using UnityEngine;
public class DirectStrikeAction : BaseAction
{
[SerializeField] private int attackRange = 2;
[SerializeField] private int damageAmount = 25;
public override string GetActionName() => "Direct Strike";
public override void TakeAction(GridPosition targetGridPos, Action onActionComplete)
{
ActionStart(onActionComplete);
// Retrieve target unit at target grid node
Unit targetUnit = LevelGrid.Instance.GetUnitAtGridPosition(targetGridPos);
if (targetUnit != null)
{
transform.LookAt(targetUnit.transform.position);
targetUnit.TakeDamage(damageAmount);
}
// Finalize action and yield control back to turn system
ActionComplete();
}
}
While designed primarily for tactical strategy games, the underlying grid and action logic adapts remarkably well to multiple genres:
Here is the key takeaway for getting up and running quickly: don't start by building your own scene. Instead, work backwards from the included prefab hierarchy to ensure all manager instances are properly referenced in your project.
If you are working inside a Universal Render Pipeline (URP) project, ensure you assign the included Grid Projector Renderer Feature to your main ForwardRendererData asset. This enables selection rings and path markers to draw cleanly over uneven 3D terrain without mesh z-fighting.
Drop the GridSystem and TurnController prefabs into your scene. Configure the grid dimensions inside the GridManager component inspector:
// Script snippet to programmatically adjust grid dimensions at scene start
public void InitializeDynamicBoard(int width, int length, float cellSize)
{
GridSystem.Instance.CreateGrid(width, length, cellSize);
Pathfinding.Instance.Setup(width, length, cellSize);
}
Add the Unit component to your character GameObject. Ensure your prefab includes an Animator setup with matching parameter triggers (e.g., "IsMoving", "Attack"). Attach your custom action scripts (like the DirectStrikeAction listed above) directly to the Unit GameObject; the toolkit automatically scans and populates available actions in the UI on selecting that unit.
BaseAction and implementing just a few override methods.UnityEngine.UI elements rather than the newer UI Toolkit.Yes, out of the box the standard materials work across built-in and URP pipelines. If you are targeting HDRP, you will need to run the standard shader auto-converter for the included unit materials and update the projector shaders to use Decal Projectors.
The engine naturally supports square and standard 2D/3D hex topologies. If you require irregular, non-uniform polygon tiles, you will need to extend the underlying GridPosition translation logic, though pathfinding node linking remains fully functional.
Assets provided through this platform are hosted strictly for educational, testing, and architecture evaluation purposes only. They are not cleared for commercial production releases. If you plan to ship a commercial game using this asset, please purchase an official license directly from the Unity Asset Store to support the original creators and receive official support updates.