- GDScript 91.4%
- Python 6.8%
- GAP 1.5%
- Shell 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .grok | ||
| addons/godot_ai | ||
| assets | ||
| scenes | ||
| scripts | ||
| shaders | ||
| tests | ||
| tools/blender | ||
| .gitignore | ||
| AGENTS.md | ||
| icon.svg | ||
| icon.svg.import | ||
| Makefile | ||
| project.godot | ||
| README.md | ||
| start.sh | ||
Echo Spire
A Godot 4.7 vertical slice of a Chrono Trigger-style seamless world with round-based positional combat and Paper Mario: TTYD action commands (Stylish follow-ups, Guard / Super Guard).
You walk Hollowbrook and the roads that leave it in real time. Bump a wanderer and the fight happens on that ground — the camera dollies in, no battle scene, no fade to an arena. After the echo fades, you keep walking.
Combat uses a round command queue. During Party Planning, enter a command and position the shadow for every living party member; enemies are paused until the whole party is locked in. The party then resolves its commands in order, including the Grandia-style cast delay, TTYD action command, Stylish follow-ups, positioning, and air juggles. After the party resolves, the enemy turn begins and incoming hits open Guard / Super Guard windows. The IP gauge still communicates COM → CAST → ACT timing during resolution, while the round boundary keeps command entry deliberate.
Play
./start.sh
Or ./start.sh editor for the Godot editor, ./start.sh test for headless tests.
| Input | Explore | Battle |
|---|---|---|
| WASD / arrows | Walk the party | Walk the shadow (after a command) |
| Shift | Run | |
| J / Enter | Talk / pick up | Queue command · confirm · action command · stylish · guard |
| K / Esc | Close talk | Cancel |
| ↑ ↓ | Dialogue choices | Command menu |
| I | Open party dossier | |
| Q E | Rotate facing | |
| J / Space | Action command |
Don't stack the party — enemy slams are circles. Plan the full party before the enemy turn. Guard incoming blows: mid-time J is Guard, late J is Super Guard.
The I party dossier has Status, Equipment, and Items tabs. Use ↑/↓ to select a party member and ←/→ to change tabs; J expands the selected profile's skill list, and K/I closes the menu. Equipment bonuses feed the same battle stats shown in combat. Hollowbrook now has three garden plots: use J to till, plant a turnip seed, water, and harvest; crops grow while you explore. The three marked hub spots can be customized with lanterns, benches, or flower beds. At the Reedfen dock, cast a line and press J when the bite appears. Inventory state persists while you continue exploring the same world.
The north road now climbs into Echo Spire through a series of walkable stairs and a mountain plateau. West of town, a stepped Whisperwood path reaches Venn's raised cliff ledge. Terrain edges are traversable only through these connected steps, so dropping straight off a cliff is blocked.
Town and roads
Hollowbrook has four gates.
| Road | Region | Who |
|---|---|---|
| North | Echo Meadow → Echo Spire | Elder Thorne's Hollow. Garrick's wisps. Tavi's charm by the yellow rocks. |
| West | Orchard Road → Whisperwood | Venn and the cold cairn |
| East | Mill Docks → Reedfen | Nera at the mill, lantern in the reeds |
| South | Millbridge | Pell on the farm |
Lessa (inn) and Brin (shop) stay in town. The camera pulls in when a fight starts and eases back out when you walk on.
Commands by move
| Move | Action command | Stylish |
|---|---|---|
| Attack (everyone) | Timed star-in-gold | 1 |
| Kael Slash | Timed star-in-gold | 2 |
| Kael Sweep | Mash J | 2 |
| Ryn Pierce | Hold J, release in gold | 3 |
| Ryn Volley | J → K → Space | 2 |
| Mira Burst | Mash J | 3 |
| Mira Bolt | Timed (ping-pong) | 2 |
| Potion | Instant | — |
| Flee | Instant (chance) | — |
Assets
Town, trees, NPCs, and orcs are Kenney CC0 kits in assets/kenney/ (Fantasy Town, Mini Characters, Mini Dungeon). Party combat still falls back to the Blender cast / procedural meshes if those files are missing.
Cel-ready GLBs are generated by Blender 5.2 (headless). The fight still runs on procedural fallback meshes if the GLBs are missing.
# blender is symlinked from /Applications/Blender.app
./tools/blender/export.sh
godot --path . --import
Install the Blender MCP addon (optional, for live iteration):
blender --background --python tools/blender/install_mcp_addon.py
# Then in a GUI Blender: sidebar N → BlenderMCP → Connect
Tests
make test
Tooling
- Godot 4.7 +
addons/godot_ai(enable the plugin; Grok usesgodot-ai attach) - Blender CLI on PATH
- Project MCP:
.grok/config.toml→blender-mcp