Vibe Coding Another ASCII Game… but in the Godot 4 Game Engine

Please note: This game doesn’t pass the basic security checks in Mac or Windows.

I’ve been sitting with a fresh playable build of my unnamed ASCII horror game, and I just spent the last couple hours answering a bunch of questions Grok generated about the whole wild ride. Instead of dumping them out as Q&A, I figured I’d turn the whole thing into one honest story—the kind I’d actually want to read on someone’s dev blog. Because this project isn’t just about the code. It’s about a kid who grew up wanting to make stuff finally getting the tools to do it without a computer science degree or a decade of grinding Java.

I’ve always been a creator, never a “coder” in the textbook sense. Back in 2012 I was deep in Roblox, building whatever my brain could dream up in Lua. I wanted that Builders Club membership so bad just so I could sell shirts in the marketplace. Then Minecraft hit, and I taught myself enough Java (through YouTube tutorials and pure copy-paste) to make two tiny mods: Obsidian+ (basically diamond armor but edgier and stronger) and Recycle Items Plus (toss junk in a furnace, get a fraction of the materials back). I even uploaded them to the old Minecraft forums and watched a thousand people download them for their modpacks. Nothing groundbreaking, but they worked. The problem was always the same: I could make the thing, but I didn’t truly understand the thing. Every update broke it. I couldn’t ask smart questions because I didn’t know what questions to ask. So the projects stayed small.

2022 AI Boom

Fast-forward to 2022 and the first wave of AI. Suddenly I had Grok/ChatGPT. I started feeding it prompts and copy-pasting the output straight into Visual Studio Code. That became my entire workflow for my first big solo project: an ASCII Adventure game built right in the browser with HTML, CSS, and JavaScript. Over about two weeks I made a grid-based Zelda-like world where you move with WASD, manage an inventory, fight, talk to NPCs with branching conversation trees, find keys, and solve simple puzzles. It was playable. It was mine. But man, the limitations were brutal.

See my other ASCII Post

The context window would forget earlier code. Grok would start truncating files—keeping the beginning and end but deleting the middle. I’d paste something, mess up the indentation because I didn’t fully understand it, get an error, paste the error back in, and the loop would repeat. I learned to be hyper-specific (“only update this one function”) and I picked up real debugging habits, but it still felt like I was wrestling the AI more than collaborating with it. The game lived in the browser, so mobile was a no-go and it never quite felt alive. I wanted atmosphere. I wanted it to feel like a real game.

That frustration is exactly what pushed me into Godot 4.

Godot 4

I asked Grok for the cheapest, most open-source, no-licensing-hassle game engine that wasn’t Unity. Godot 4 popped up. I downloaded it cold, opened it, and thought, “Okay, this is my new playground.” The early prototypes with Grok got the grid system in—cells with properties (walkable, opaque, symbol, color), a movable @ symbol player, basic map loading. I even ported over a lot of the conceptual knowledge from the browser game: using keyboard symbols to encode hidden data (a capital L on the map renders as an X for a locked door so the player can’t tell until they try it). But the same old pain points returned. Grok couldn’t see my project files. I was still manually copying .gd files into chats. It worked, but it was tedious.

Then a friend showed me what he was building with Claude. Twenty bucks later I installed the desktop app, pointed it at my Godot project folder, and everything changed overnight.

Claude Code

Claude could see the actual files. It could read the current state of the code, propose edits, and apply them directly. No more copy-paste hell. The feedback loop went from painful to magical. I’d describe what I wanted, hit play, and nine times out of ten the feature was just… there. The first big wins were visual: CRT shaders with scanlines and rounded bevels that made the terminal window feel like an old analog monitor. Then came the camera system—smooth following that zooms and locks when you enter a room. Fog of war. Line of sight that respects opaque cells. And the lighting… oh man, the lighting.

I built an additive RGB lighting system where different colored light sources mix in real time (red + green = yellow, all three = white). The player has a directional “flashlight” whose field of view I can tweak on the fly. NPCs have their own lights. Suddenly the grid didn’t feel flat anymore—it felt moody, cinematic, alive. Coming from a filmmaking background, being able to light a 2D ASCII world like a film set was pure joy.

Performance was the next mountain. The game ran buttery smooth on my 2020 M1 MacBook Air but chugged on my much beefier Windows gaming rig. I gave Claude one big prompt: “Make the entire codebase more efficient without losing any features.” It spent 45 minutes refactoring, only updating the cells that actually changed instead of redrawing the whole 500×500 grid every frame. I hit play with sweaty palms… and it just worked. Same on Windows. That single optimization might be my favorite moment of the whole project.

Once the tech felt solid, I pivoted hard into story and atmosphere. Terminals scattered around the map act as both lore dumps and advanced command consoles. The player has their own bite-powered command line (/scan, /unlock x y, etc.). Cutscenes trigger when you solve puzzles—the camera glides over to the door, it unlocks with a satisfying pause, then swings back. NPCs have dialogue trees that branch and interweave. Environmental storytelling is still the hardest part (how do you make a desk look like a desk when everything is one cell wide?), but the lighting, line of sight, and symbolic encoding are giving me tools I never had in the browser version.

The build I’m uploading right now is raw but playable. You wake up as the “bit,” explore a mysterious grid world that definitely isn’t just a metaphor for our own, talk to colored NPCs, use terminals, solve light-and-lock puzzles, and slowly piece together what the hell is going on. There are known rough edges—dialogue can feel text-heavy, some systems are still placeholder, no save system yet, and typing /terminate on the wrong terminal will literally close the game (sorry). But the core loop feels good. It runs on both Mac and Windows. And the additive lighting still makes me grin every time I play.

Reflection

Looking back, the single biggest lesson I’d scream at my past self is: Don’t waste time with Grok for serious Godot work—start with Claude. The workflow difference is night and day. This project has completely changed how I think about AI-assisted creation. I can pick it up for an hour between filmmaking gigs or podcast studio work and actually move the game forward. It would have taken me a year of traditional learning to reach this point. Instead I’m vibecoding something I’m genuinely proud of.

Six months from now I want a complete first chapter—beginning, middle, end, satisfying payoff. A map that feels alive, deeper environmental storytelling, more cinematic triggers, maybe even that corruption system where the player loses control and the bit walks itself to a terminal… we’ll see.

I’m doing this for the same reason I built Roblox shirts and Minecraft mods as a kid: because I love making things. And right now, with tools like Claude and Godot 4, it feels like the barrier between “I have an idea” and “here’s a playable thing” has never been lower. Yeah, there’s discourse about what that means for professional coders and the future of creativity. I get it. But I’m not here to replace anyone—I’m just a storyteller who finally has a paintbrush that listens when I talk.

If you download the build, thank you. I swear it’s not a virus. Tell me what breaks, what feels good, what feels confusing. I’m listening.

You can follow the chaos on X(Twitter) @TravisFlesher.

Now if you’ll excuse me, I’ve got a map to completely redesign before the next playtest.

More posts