🐢💀 Necro-Turtle: Project Story

🧙‍♂️ Inspiration

I've always loved the simplicity and charm of Logo turtle graphics — a language where drawing a square felt like casting a tiny spell. For Kiroween, I wondered: What if those spells literally became magic?
That question became Necro-Turtle, a resurrection of the classic turtle concept, now reimagined with necromancy, rituals, and undead minions. Reviving a 1960s educational language with a dark twist felt perfect for the Resurrection category.


🔮 What it does

Necro-Turtle is a web-based game where you control a turtle familiar using a spooky DSL (Domain-Specific Language). By writing necromantic commands, you draw ritual sigils on a canvas. If the sigil forms a closed shape, it gathers magical energy — energy that can be used to raise zombies, cast rituals, and defend against threats.

Players write code-like spells such as:

// Draw a cross
summon(100)
banish(50)
spin(90)
summon(50)
banish(100)
summon(50)

The turtle performs the commands, the sigils come alive, and your undead army grows.


⚙️ How we built it

The project was built with TypeScript, Vite, HTML Canvas, and a custom interpreter for the Necro-Turtle DSL.
Kiro played a central role throughout development:

Vibe Coding

Through conversational coding sessions, Kiro helped me design commands, refine syntax, and build interpreter logic. It supported everything from command execution to generating GitHub workflows and deployment setup.

Specs

Project specifications guided the code generation process. Kiro helped formalize the TypeScript structure, testing expectations, game mechanics, and quality standards. Every foundational rule of the project was captured in the spec.

Hooks

Hooks created a development-assistant environment that automated build checks, TypeScript validation, dev server runs, and more. Kiro generated most hook logic and even helped investigate performance issues during development.

Steering Docs

A “Necromancer Compiler” persona ensured all generated code stayed thematic, spooky, and TypeScript-correct. Steering docs kept Kiro consistently aligned with the project’s tone and constraints.


⚰️ Challenges we ran into

  • Keeping the interpreter, game loop, rendering system, and canvas interactions aligned
  • Achieving smooth real-time canvas rendering without a full game engine
  • Designing a DSL that was both readable and fun while remaining extensible
  • Maintaining tone and structure across AI-assisted code generation

🏆 Accomplishments that we're proud of

  • Building a fully working custom DSL from scratch
  • Creating a playable, thematic drawing-based game loop
  • Designing a smooth canvas renderer and ritual detection system
  • Using Kiro’s tooling effectively across specs, hooks, vibe coding, and steering
  • Achieving a unique blend of retro programming nostalgia and spooky gameplay

🧠 What we learned

  • How to design and interpret a custom programming language
  • How to structure canvas-based rendering and geometry calculations
  • How to collaborate productively with an AI assistant
  • How important specs and steering docs are for keeping an AI-guided project coherent
  • That building spooky software is extremely fun

⚰️ What's next for Necro-Turtle

  • Adding procedurally generated quests and spells
  • Expanding the DSL with more ritual commands and mini-programming concepts
  • Implement zombie with AI and introducing enemy factions
  • Adding sound effects, particle shaders, and animated sigils
  • Creating a full campaign mode where players learn magic through code

Repo: https://github.com/laser-me/necro-turtle
Tagline: Old Logo never dies — it just reanimates.

Built With

Share this project:

Updates