Inspiration
Most survival games reward defeating enemies. I wanted to build one where the safer choice is to understand them.
Ashen Garden is an isometric dark-fantasy survival game about an infected survivor crossing an abandoned village, monastery, ossuary, forbidden garden, laboratory, and observation station. The story is not delivered through cutscenes. Players reconstruct it from places, bodies, items, creature behavior, and records that do not always agree with one another.
What it does
The central loop is search, observe, decipher, apply, and survive.
- Sound is a tactical resource. Sprinting, attacking, throwing stones, and ringing bells create noise. That noise can expose the player, but it can also redirect a predator and open a safer route.
- Knowledge is progression. Watching a creature from a safe distance and deciphering three stages of an old script unlocks useful facts about detection, movement, and counterplay.
- Creatures have different ecologies. One hunts by sound, another feeds on corpses to recover, and a parasite reproduces through vulnerable hosts. Burning bodies and interrupting parasitic attacks are real survival decisions.
- Survival systems interact. Health, stamina, hunger, fatigue, pain, bleeding, infection, carry weight, partial looting, sleep, day and night, melee combos, shoving, and local saving all feed the same journey.
- The world is designed for inference. Reaching the ending requires both exploration and understanding, not only combat.
How I built it
The project is built in Godot 4.7 with GDScript and the OpenGL Compatibility renderer.
Its main technical decision is a hybrid architecture. An authoritative 2D simulation owns survival state, creature AI, collisions, and save identity. A presentation-only 3D layer projects that state into the world as buildings, props, lighting, fog, cutaway interiors, and spatial audio. This let me expand the presentation without breaking the deterministic simulation underneath it.
The 4800 x 2700 handcrafted world is streamed around the camera in a maximum 3 x 3 window. Distant creatures move from full simulation to a slower metadata tick while still remembering important signals such as noise. Save data is split into global state and deterministic chunk state, with a migration path for older saves.
I used Blender 4.5, Python, Pillow, glTF/GLB, and shared PBR atlases to build repeatable asset pipelines. OpenAI Image Generation supplied visual references and source components for characters, creatures, environmental pieces, UI, and key art. I then removed chroma backgrounds, split and normalized frames, mirrored directional assets, modeled and rigged characters, generated atlases, and integrated the results into the game. The shipped game is offline and does not call a generative model at runtime.
How I used Codex and GPT-5.6
During Build Week, I used Codex with GPT-5.6 as an implementation and verification partner across the repository.
I converted design goals into small work orders with explicit contracts and test gates. Codex inspected the existing code before changes, helped implement GDScript systems, wrote headless regression coverage and benchmark comparators, and used Computer Use to drive real Godot GUI playthroughs. I kept key decisions visible in the repository, including the authoritative 2D / presentation-only 3D boundary, the nine-chunk residency cap, save migration rules, combo timing, and performance budgets.
This workflow was especially useful when a combo input bug appeared during a full playthrough. The fix addressed the input-window root cause instead of hiding the symptom, then verified complete three-hit chains at 0.35, 0.45, and 0.60 second input intervals. The same pass added save regressions for distant opened doors and burned corpses.
Codex accelerated iteration, but the project still required product judgment: deciding what knowledge should change mechanically, which simulation contracts could not move, when generated art was only a reference, and which failures needed a new regression test.
Challenges I ran into
The hardest challenge was scaling presentation without corrupting simulation state. Streaming a 3D object out of view must never delete the underlying creature, reopen a door, restore a burned corpse, or change a save identifier. Keeping those responsibilities separate made the code easier to reason about and test.
The second challenge was performance. The streamed presentation layer needed to stay bounded as the world grew. In a documented four-times-world comparison, draw calls fell from 718 to 629 and frame p95 improved from 10.264 ms to 9.109 ms while keeping save identity stable.
The third challenge was turning generated visual material into shippable game assets. A concept image can communicate silhouette and mood, but it does not replace modeling, retopology, rigging, baking, texture cleanup, animation, and in-engine validation.
Accomplishments that I am proud of
- A complete playable route from the village through the monastery, ossuary, forbidden garden, laboratory, and observation station to the ending.
- A latest recorded regression pass of 43 Godot headless tests plus 4 world-streaming benchmark comparators.
- A modular 18-bone character system with equipment layers and save-compatible slots.
- Deterministic world streaming, distance-based AI LOD, and versioned chunk saves.
- Local Windows and macOS release candidates.
- A game where learning a creature's behavior is a concrete survival advantage.
What I learned
The most important lesson was that AI works best here as part of a verified production loop. Codex made it much faster to inspect, implement, test, compare, and document. Image generation made exploration faster. Neither removed the need for clear contracts, playtesting, art cleanup, or decisions about what the player should feel.
I also learned that knowledge can be more satisfying than a stat upgrade when the game immediately lets the player act on it.
What's next
Next I want to finish blind end-to-end testing on Windows and Apple Silicon, improve controller and accessibility support, publish a judge-friendly build, and expand the observation and deciphering systems with more ecological interactions. I also plan to turn the current development evidence into a concise public demo video and clearer setup documentation.
Log in or sign up for Devpost to join the conversation.