Hex Strategy Map — Turn-Based Strategy Toolkit for Godot 4.6+
A downloadable Godot plugin
Complete hex toolkit for Godot 4.6+ — strategy, tactical RPGs, wargames
Combat · Turns · Units · Procedural maps · Tiled importer · Visual editor · Skirmish demo
Everything you need to ship a hex-based game — turn-based strategy, tactical RPG / CRPG, hex-and-counter wargame, or hex crawl.
See it in action — two playable demos, built entirely with the addon:
🎮 2-Player Skirmish — combat, city capture, fog of war, flow-field group movement, elevation-aware LOS
🔷 Match-4 Hex Puzzle — hex grid, neighbor queries, adjacency detection — no extra infrastructure
If you tried the free version, you already have the foundation: hex grid, pathfinding, fog of war, rendering, camera. That's the boring half — the part where it draws nicely and units can find their way around.
Hex Strategy Map Pro is the other half — the part where it starts to feel like an actual strategy game. Units that move and exhaust their points. Turns that cycle through players and phases. Combat that resolves with your rules, not someone else's. Maps you paint visually in the Godot editor. A working 2-player skirmish you can pull apart line by line.
Pro is for the moment you realize that "just a small combat function" has somehow become twelve files, the turn system has bugs you can't reproduce, and the actual game design is still a Notion doc you haven't touched in a week. You've already accepted you need a strategy toolkit. This is the rest of it.
What you can build with it
- Turn-based strategy — 4X, civ-likes, wargames. Turn cycles, fog, procedural maps, combat, victory conditions.
- Tactical RPGs / CRPGs — XCOM, Wasteland, Banner Saga, Battle Brothers-style. Movement points, line of sight with elevation, flanking, terrain bonuses, per-unit initiative via
TurnManager. Plug your stats / inventory / skills intoHexCell.metadataandCombatResolvercallables — the addon handles the tactical layer, you bring the RPG layer. - Digital board games / hex-and-counter wargames — Panzer General, Memoir '44, Combat Commander-style. Terrain modifiers, LOS with elevation, flanking, zones of control via edge costs.
- Hex crawls and exploration games — fog of war + procedural maps + terrain costs, no combat code needed.
- Roguelikes with hex grids — LOS, pathfinding, fog, terrain costs out of the box.
Why this addon (not roll-your-own)
- Deterministic, JSON-serializable simulation. Logic runs on coordinates and data — no rendering, no hidden randomness. With a seeded RNG you get reproducible runs, which means the addon is suitable for play-by-email, lockstep multiplayer, headless servers, replays, and AI/ML training environments.
SaveManageralready serializes state to JSON. Bring your own netcode; the addon stays out of the way. - Tiled Map Editor import built in. Design maps in Tiled (the industry-standard 2D map editor) and load them with
TiledImporter— tilelayers → terrain, objects → tag/metadata. No other Godot hex addon ships this. - In-editor visual map painting.
HexMapNodeis a@toolnode: paint terrain directly in the Godot inspector, no scripting required. Game designers can build maps without touching code. - Render-agnostic logic. Grid, pathfinding, fog, combat, turns, units — none of them depend on the bundled 2D renderer. Drive them from a 3D scene, a headless server, or any custom renderer.
- One toolkit, full stack. LOS + elevation + flanking + flow fields + Tiled + visual editor + 3-state fog + procedural gen + combat + turn manager + save/load. Most addons cover one or two of these.
Built from a real project
I'm developing a game with a strategic exploration phase inspired by Heroes of Might and Magic. After three iterations of that phase, I noticed something: most of what I'd written wasn't actually specific to my game. The terrain costs were constants, but they didn't have to be. The visibility formula was hardcoded, but if I passed it in through the constructor the same code could power very different games. The combat rules, the fog behavior, the path filters, the turn hooks — same story. Piece by piece, the exploration phase stopped looking like "my game's map system" and started looking like a generic toolkit for hex-based strategy games. That realization became this addon.
I keep updating it as I develop. When I hit friction, need a function that doesn't exist yet, or find a better approach — it goes in here. If you're building something with hexes, I hope this saves you some time. Questions, ideas, or something missing? I'm always happy to chat.
What Pro adds on top of Free
9 strategy-specific modules, a visual map editor, and a full 2-player skirmish demo:
| Module | What it does |
|---|---|
| MapToken | Unit movement with configurable movement points, path following, signals, serialization |
| TurnManager | Turn cycle with player phases and configurable interval hooks |
| CombatResolver | Pluggable combat — injectable damage, terrain bonus, flanking, outcome Callables |
| FlowField | One field serves N units — efficient group movement via trace_path. On 250×250: build ~1.9 s, trace_path ~85 µs — ~22 000× faster to trace than rebuild, so amortizing over many units is essentially free |
| MapGenerator | Procedural terrain via noise, rivers, scatterable locations |
| UnitRegistry | Centralized unit tracking by owner, coordinate index with auto-sync, stacking rules |
| HexMiniMap | Minimap rendering with per-player fog and token markers |
| TiledImporter | Import Tiled Map Editor JSON maps directly — tilelayers → terrain, objects → tag/metadata |
| SaveManager | JSON-based save/load slot management with list, delete, validation |
Plus:
- HexMapNode (
@tool) — paint terrain directly in the Godot editor, auto-serialized, runtime-ready - 2-player skirmish demo — full source: combat, city capture, fog of war, flow-field group movement, elevation, victory conditions
Free vs Pro — what's the difference?
Free gives you the foundation. Pro gives you the game.
| Capability | Free | Pro |
|---|---|---|
| Hex grid + offset/cube coordinates | ✓ | ✓ |
| Pathfinding (Dijkstra + A*) | ✓ | ✓ |
| Fog of War (3-state per player) | ✓ | ✓ |
| Hex rendering + batch mode (200×200+) | ✓ | ✓ |
| Camera (follow, drag, zoom, edge-scroll) | ✓ | ✓ |
Unit movement (MapToken) | — | ✓ |
Turn management (TurnManager) | — | ✓ |
Combat with injectable rules (CombatResolver) | — | ✓ |
Flow field group movement (FlowField) | — | ✓ |
Procedural map generation (MapGenerator) | — | ✓ |
Unit registry + stacking (UnitRegistry) | — | ✓ |
Minimap with fog + tokens (HexMiniMap) | — | ✓ |
Tiled JSON map importer (TiledImporter) | — | ✓ |
Save / load slot system (SaveManager) | — | ✓ |
Visual @tool map editor (HexMapNode) | — | ✓ |
| Full 2-player skirmish demo (source included) | — | ✓ |
| Modules | 7 | 17 |
| Automated tests | 560+ | 560+ (shared core) |
| License | MIT | Commercial, royalty-free, unlimited projects |
| Where to get it | Godot Asset Store · itch.io | itch.io |
Pro ships standalone — it includes the full core. You don't need to install the free version separately.
Quick start — Pro features
# Procedural map generation
var grid := MapGenerator.generate_noise_terrain(16, 16, {
"seed": 42,
"frequency": 0.08,
"water_level": -0.25,
"mountain_level": 0.4,
"forest_level": 0.1,
})
MapGenerator.generate_rivers(grid, 3)
MapGenerator.scatter_locations(grid, 5, [HexGrid.Terrain.PLAINS])
# Or import a Tiled map
var grid := TiledImporter.from_file("res://maps/my_map.json", my_terrain_fn)
# Token movement with custom movement formula
var token := MapToken.new()
add_child(token)
token.setup(Vector2i(2, 2), grid, func(_level: int) -> float: return 6.0)
token.move_to(Vector2i(5, 5))
# Flow field for group movement (one field, N units)
var field := FlowField.build(grid, Vector2i(10, 10))
var unit_path := FlowField.trace_path(field, Vector2i(2, 2))
# Pluggable combat
var combat := CombatResolver.new()
combat.damage_fn = my_damage_fn
combat.combat_resolved.connect(_on_combat)
combat.resolve(attacker, defender, grid)
# Turns + phases
var turns := TurnManager.new()
turns.setup([0, 1])
turns.player_turn_started.connect(_on_turn_start)
# Save / load
var save_mgr := SaveManager.new()
save_mgr.save(0, {"grid": grid.serialize(), "fog": fog.serialize()})
Every stateful module supports round-trip serialization. Save / load works out of the box, no schema-juggling.
Paint maps in the editor — HexMapNode
HexMapNode is a @tool node: drop it in your scene,
pick a terrain from the inspector, and paint hexes directly in the Godot
editor. Terrain data is auto-serialized into the node, so the rest of your
game reads it as a runtime HexGrid with zero conversion. No
external tools, no JSON juggling, no exporters to babysit.
Need to import from somewhere else? TiledImporter reads Tiled
Map Editor JSON files directly — tilelayers become terrain, objects
become tag/metadata. Use either, mix both, or do procedural and only
hand-edit the spawn points.
2-player skirmish — full source included
Hot-seat skirmish with two players, combat, city capture, fog of war, flow-field group movement, elevation-aware LOS, and victory conditions. Built end-to-end on Pro. Read the code, lift what you want, fork it into your own game.
Think of it as a worked example: every Pro module is wired together in a
context that makes sense. When you're stuck on "how do I plug
UnitRegistry into CombatResolver with stacking?",
the demo answers it.
Everything is still injectable
Same design philosophy as Free — every game-specific rule is a Callable you pass in. No subclassing, no magic strings, no hardcoded assumptions:
- Combat damage formula via
damage_fn - Terrain bonus via
terrain_bonus_fn - Flanking rules via
flanking_fn - Combat outcome via
outcome_fn - Movement formula per token
- Stacking rules in
UnitRegistry - Turn-interval hooks (every N turns)
- Player phases with start/end signals
- Tiled terrain mapping via callable
- Minimap token colors via callable
Benchmarks, published
Microbenchmarks for every core module ship in benchmarks/ —
run them yourself with godot --headless --script benchmarks/run_benchmarks.gd.
Reference numbers, hardware notes, and a guide on choosing between A*,
cached Dijkstra and FlowField live in
docs/benchmarks.md.
Highlights on a 250×250 grid: FogTextureRenderer.update_cell
is ~84 000× faster than the full sweep, and
FlowField.trace_path is ~22 000× faster
than rebuilding — the value props of both modules in numbers you can verify.
560+ automated tests
Every module is covered by gdUnit4. Tests run before each release.
HexGrid(98) · HexRenderer(71) · HexMiniMap(52) · FogOfWar(49) · PathFinder(36) · TurnManager(32) · HexCell(29) · UnitRegistry(24) · MapToken(23) · BatchHexLayer(20) · SaveManager(19) · MapGenerator(17) · FlowField(15) · TiledImporter(14) · MapCamera(14) · TerrainPalette(14) · CombatResolver(12) · HexMapNode(11) · Translations(10)
Examples included
| Example | Shows |
|---|---|
basic_map | Complete API tour — all 17 modules, save/load, 3 phases |
strategy_map | 2-player skirmish hot-seat — combat, city capture, fog of war, victory |
combat_demo | CombatResolver with custom damage and terrain bonus |
fog_reveal | FogOfWar + MapToken movement revealing fog |
turn_cycle | TurnManager — turn cycle UI |
pathfinding | Dijkstra vs A* vs Flow Field — interactive comparison |
texture_tiles | Textures, atlases, animated sprites |
camera_only | Camera controls + procedural map |
map_gen | Interactive procedural generation with sliders |
Requirements
- Godot 4.6+
- No external dependencies — pure GDScript
- The free version is not required — Pro ships standalone with the full core
License
Commercial license, royalty-free:
- Unlimited commercial and non-commercial projects
- No revenue cap, no per-game fees
- No attribution required
- Modify and extend freely for your own projects
- Redistribution of the plugin itself is not permitted
Full terms in LICENSE_PRO.md.
Not for
To save you a download, here's what this addon is not:
- Square or isometric grids — use Godot's built-in
TileMap. - Free-form 3D movement on meshes — use
NavigationServer3D. - A full RPG framework — provides the tactical / map layer. Stats, inventory, dialogue and quests are your game's responsibility.
- Real-time action games — designed around turn-based and step-based simulation.
A note from the author
I built this because I wanted a hex map plugin that stayed out of the way — no hardcoded assumptions, no magic strings, just clean building blocks you can shape into whatever game you have in mind.
I hope it saves you time and lets you focus on the fun parts. And if you finish your game, please let me know — I'd genuinely love to play it.
islasjavieralf@gmail.com
Acknowledgments
Hex coordinate algorithms informed by Red Blob Games — Hexagonal Grids by Amit Patel.
Commercial License — unlimited projects, royalty-free.
17 modules · 560+ tests · Visual editor · 2-player skirmish demo
| Updated | 20 days ago |
| Status | Released |
| Category | Tool |
| Author | Dimcairion |
| AI Disclosure | AI Assisted, Code |
Purchase
In order to download this Godot plugin you must purchase it at or above the minimum price of $30 USD. You will get access to the following files:
Development log
- v2.1 — Free-for-all and teams, without breaking two-player37 days ago
- It's not just for 4X; tactical RPGs, wargames, and hex crawls too41 days ago
- Hex Strategy Map 2.0 is out43 days ago
- The heuristic was loose — that's why the tiebreak didn't help.46 days ago
- 1.5 is out: A* that actually beats Dijkstra, fog texture in the strategy demo, a...48 days ago
- What do you mean A* is worse? It was an optimization over Dijkstra...52 days ago
- v1.4.0; Fog of war that actually scales54 days ago
- I built a hex strategy toolkit for Godot56 days ago








Leave a comment
Log in with itch.io to leave a comment.