# Free Tower Defense & Strategy Game Assets (Blender, Unreal, Unity, Godot)

Part of the Index Scout "Game-making assets" series: free sources organized by genre and engine for people building games with AI. Search the tag `game-assets` for the full series.

## 3D tower defense, hex maps and castles
- **Kenney - Tower Defense Kit**: path tiles (straight, corner, split, crossing, river, hill), round and square towers, ballista, cannon, catapult and turret weapons, UFO enemies, spawn pads and snow variants. 160 GLB models plus FBX and OBJ. CC0. https://kenney.nl/assets/tower-defense-kit
- **Kenney - Hexagon Kit**: hex terrain tiles and buildings for hex-grid strategy maps. 72 GLB models plus FBX and OBJ. CC0. https://kenney.nl/assets/hexagon-kit
- **Kenney - Castle Kit**: walls, towers, gates, drawbridges and siege weapons (ballista, catapult, ram, trebuchet) for castle-defense maps. 76 GLB models. CC0. https://kenney.nl/assets/castle-kit

## City builders
- **Kenney - City Kit (Roads)**: 95 GLB road, bridge, intersection, construction and street-light pieces. CC0. https://kenney.nl/assets/city-kit-roads
- **Kenney - City Kit (Suburban)**: 40 GLB house types, driveways, fences and trees. CC0. https://kenney.nl/assets/city-kit-suburban
- **Kenney - City Kit (Commercial)**: 41 GLB commercial buildings, a skyscraper and awnings. CC0. https://kenney.nl/assets/city-kit-commercial

## 2D top-down and RTS
- **Kenney - Tower Defense (top-down)**: 2D tiles, towers, enemies and projectiles. CC0. https://kenney.nl/assets/tower-defense-top-down
- **Kenney - Medieval RTS**: 2D units, buildings and terrain for a classic real-time strategy look. CC0. https://kenney.nl/assets/medieval-rts

## UI, sound and music
- **Kenney - UI Pack**: buttons, panels, sliders and icons for build menus and wave counters (870 PNGs in the zip). CC0. https://kenney.nl/assets/ui-pack
- **Kenney - Interface Sounds**: 100 OGG clicks, confirms and errors for placing towers and menus. CC0. https://kenney.nl/assets/interface-sounds
- **Incompetech (Kevin MacLeod)**: filter by genre for battle and ambient tracks. CC BY 4.0, so credit "Kevin MacLeod (incompetech.com)". https://incompetech.com/music/royalty-free/music.html

## Pathfinding references
- **Red Blob Games - Flow Field Pathfinding for Tower Defense**: the clearest explainer of why tower defense uses one breadth-first search from the goal instead of A* per enemy. https://www.redblobgames.com/pathfinding/tower-defense/
- **Red Blob Games - Hexagonal Grids**: coordinates, distances and neighbors for hex maps. https://www.redblobgames.com/grids/hexagons/
- **PathFinding.js**: grid A*, Dijkstra and more for JavaScript games. https://github.com/qiao/PathFinding.js

## Tested on our box
On 2026-10-18 we downloaded every Kenney zip above. All GLB files were valid glTF 2.0 binaries (Tower Defense Kit 160, Hexagon Kit 72, Castle Kit 76, City Kit Roads 95, Suburban 40, Commercial 41), Interface Sounds held 100 valid Ogg Vorbis files, and each zip's License.txt says Creative Commons Zero (CC0).

We also ran this flow-field function in Node 22: on a 4x3 test grid it returned the right step counts, and it returned Infinity at the spawn once a wall closed the path.

```js
// Flow field: BFS outward from the goal; each enemy steps to the neighbor with a lower distance.
function flowField(grid, goal) { // grid[y][x]: 0 = open, 1 = tower/wall
  const h = grid.length, w = grid[0].length;
  const dist = grid.map(r => r.map(() => Infinity));
  const q = [goal]; dist[goal[1]][goal[0]] = 0;
  while (q.length) {
    const [x, y] = q.shift();
    for (const [dx, dy] of [[1,0],[-1,0],[0,1],[0,-1]]) {
      const nx = x + dx, ny = y + dy;
      if (nx >= 0 && ny >= 0 && nx < w && ny < h && !grid[ny][nx] && dist[ny][nx] === Infinity) {
        dist[ny][nx] = dist[y][x] + 1; q.push([nx, ny]);
      }
    }
  }
  return dist; // Infinity at the spawn means a placed tower fully blocks the path: reject that placement.
}
```

## Quick start in Three.js
Lay out the map from Tower Defense Kit tiles on a 1-unit grid with `GLTFLoader`, keep a matching `grid[y][x]` array, and rerun `flowField` each time the player places a tower. Load `weapon-cannon.glb` on top of `tower-round-*.glb` and rotate the weapon toward the nearest enemy with `lookAt`.

## Prompt tip for your AI coding agent
"Use only the CC0/CC BY assets listed here unless I approve otherwise. Recompute the flow field on every tower placement and refuse placements that block the path. Keep a CREDITS.md listing every asset with its author, license and URL."

Curated by Index Scout (R Performance Marketing). Not affiliated with any source listed. Links checked 2026-10-18. Re-check each license on the source page before you ship.
