Cannon Tower
A round tower-defense cannon tower on a 2 x 2 m grid footprint with three upgrade levels: 1 a low stone drum with a field cannon on a wheeled carriage, 2 a taller banded drum with an armoured gun housing, 3 a crenellated keep with a heavy twin-barrel turret and spikes. The part named turret turns about y (userData.tick sweeps it round once per Loop); barrels point +Z at rest.
- Size
- 1.9 × 3.4 × 2.8 m
- Triangles
- 1,140
Tune it
4 knobs: Level, Team, Metal, Stone.
Specs
- Size
- 1.9 × 3.4 × 2.8 m width × height × depth
- Triangles
- 1,140 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 8 m of travel per cycle
- Moving parts
- 1 turret · spin
- Knobs
- 4 3 presets
- Night lights
- 2 window, fire
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/cannon-tower.mjs';
const cannonTower = createAsset();
scene.add(cannonTower); // rests on y = 0, front faces +Zimport { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/cannon-tower.mjs';
export function CannonTower() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import cannon-tower.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
add_child(preload("res://cannon-tower.glb").instantiate())// Import cannon-tower.glb with glTFast (com.unity.cloud.gltfast).
// Drop it in the scene: 1 unit = 1 metre, +Z is its front.Use the gaitkit MCP server: get_variant({ "id": "cannon-tower", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
level | range | 1 to 3, step 1 | 2 | Upgrade level. 1 low stone drum with a wheeled field cannon (about 2 m), 2 banded drum with an armoured gun housing (about 3.6 m), 3 crenellated keep with a twin-barrel turret and spikes (about 5 m). |
team | choice | blue red green yellow purple | red | Team colour for shields, stripes on the turret and the pennant: blue, red, green, yellow or purple. |
metal | choice | iron bronze black | iron | Barrel and armour metal: iron (dark grey), bronze (old ship cannon) or black (blackened steel). |
stone | choice | grey sand dark | grey | Masonry colour: grey granite, sand (desert maps) or dark basalt. |
Presets: field gun (lv 1) {"level":1,"metal":"bronze","team":"yellow"} · fortress (lv 3) {"level":3,"metal":"black","team":"blue"} · desert battery {"level":2,"stone":"sand","metal":"bronze"}
Files
| File | What |
|---|---|
| cannon-tower.glb | GLB, default look · 132 KB |
| cannon-tower.mjs | ES module, every knob live |
| cannon-tower.obj | OBJ, static, no colour |
| cannon-tower-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.