Post-mortem of my failed attempt to vibe-code a metroidvania game

TLDR; Last Friday, I gave up on my vibe-coded game because I came to the conclusion that it was never going to work. I spent about 40 hours over a couple of months chasing a dream fueled by AI marketing hype. Vibe-coding full projects is largely a myth and today’s models and agents aren’t able to build anything more than prototypes. You can’t use AI to make up for not knowing GDScript or Godot. The time you spend fumbling around with AI would be better spent learning the technical skills.

If you’re a seasoned game developer, you already know this. I’m sharing this story for anyone out there who, like me, felt like learning game dev is an impossibly huge task and that AI might be the answer to that problem. I hope this can serve as a reality check to help stem the tide of “AI Slop” inundating society. Behind every “AI Slop” is someone that is naive and hopeful they could build something useful. Experts in every field have been screaming at the top of their lungs that vibe-coding is bunk for a while now, but I still thought that *maybe* they were wrong and I was smart enough to use AI to build something good. Now I’m just another disappointed Joe Schmoe. If the hoard of vibe-coders won’t listen to the experts, maybe they’ll listen to a former vibe-coder instead. Feel free to link them here when the next one shows up.

For background, I’m a 38 year old father of 5 who has a 15-year career in cybersecurity and who has always loved video games. Part of my day job is reviewing AI use cases for my company, and vibe-coding has come up a lot. I wanted to get a better understanding of what it is and how it works, so I figured I’d try out my own vibe-coding project to learn about it. I knew I needed something interesting or I’d lose focus quickly. I’ve always wanted to create my own game and had been taking notes on one for about a year. The La Mulana series is one of my favorites, and I can’t find anything else to scratch that itch. I figured I’d take a shot at building a spiritual successor. I had no idea if it would be successful or not. This was about trying something new and learning a career skill more so than ultimately completing a game. I needed to find out if vibe-coding is all about and if it is too good to be true (spoiler alert: it is).

The plan was that I’d be the product owner for the project with a strong vision for what I wanted and QA the crap out of it until it was exactly the way I wanted it. I’d then let AI handle all of the coding and other technical pieces. I had never written any GDScript or used Godot, but I’ve done programming in the past. I wanted to let AI be the technical muscle and I’d be the creative force and QA behind the game. In the back of my mind, I doubted this would ever work, but I wouldn’t know until I tried.

Things started out pretty well for me. I used the “Pro” and “Thinking” modes of Gemini to get the initial plan for the project. I’d build the game in Godot using Replit’s vibe-coding IDE, eventually moving to Cursor once I had a working prototype. The system was basically me describing what I wanted into Gemini Web and pasting that into Replit. I’d then go back and forth with Replit to debug the code that it wrote. Things were good for a while. I had a testing room and a player that could run, jump, climb ladders, read tablets, equip a scanner, and save/load. This was all within the first 3-4 hours. Life was great.

Then, I ran into some issues with enemies and combat. No matter what I did, nothing worked. Prompt after prompt didn’t fix anything and it often got worse. At 3am one night, I almost decided to delete the entire repo and quit. I held off and cooler heads prevailed.

I worked with the AI more to figure out what went wrong. This is where I really thought I had turned a corner. I didn’t let my initial failure stop me. I spent about 2 weeks learning what I should have all along. I still wasn’t going to learn GDScript or Godot (a truly atrocious decision in hindsight). But I was going to learn how to use AI tools to their fullest extent (which has the upside of helping me in my day job). I was going to be better, faster, and smarter this time around.

I learned a ton about context windows, MCP, pipelines, project management, game production, and several other areas. I decided to beef up my development pipeline and try again. I took time to distill my year’s worth of notes into a master vision for the project and other pre-production tasks. I wrote out the core narrative of the story. I set up a HacknPlan account to manage my game design, tasks and milestones. I configured MCP servers for my Godot project, Godot language server, HacknPlan project management, and my GitHub repo. I organized my work into a roadmap with milestones and sprints. I broke my AI chat sessions into unique personas for AI operations, game design, and project management. I used separate sessions for each feature branch to focus the context and save tokens. I automated building a skeleton of my project so the chat sessions could see my whole project at a glance. I set up Continue to run locally in VSCode. I integrated Continue AI agent with Google AI Studio at Tier 1 paid. In my mind, I created a game development juggernaut pipeline and a team of 4 or 5 specialized AI personas that should be able to address any of the shortcomings that led to my previous issues.

I finally got back into programming and my next task was migrating the game from a 16x16 grid to a 32x32 grid to better fit the 128-bit vision I had for the game. That broke a few things, and the AI agent struggled with my player script. Google AI Studio saved me by re-writing the entire file in my web browser. It became clear that the player script was too long for the AI agent to parse, so it was time for a refactor into a state machine. The design was great and eventually I got it working. So far so good, right?

It was around this time I took a break to work on another vibe-coded mini project. I built a dashboard for approximating the stress of a chess player during a game. It’s nothing earth shattering, but it worked and I was really happy with it. Beside the lazy “AI Slop” comments (it wasn’t slop, I spent 20 hours of my life doing QA, polishing, and documenting it), the feedback I got was that its human approximations weren’t good enough to be useful. I wished I had gotten that information sooner so I could have saved myself a ton of time and embarrassment by quitting early.

I took this mentality back to my game and decided I wanted to come to this forum and ask for a reality check. Before that I decided that I’d let my AI juggernaut try to do the finite state machine refactor to prove itself. I put my new pipeline to work and I got something that worked. It felt like a breakthrough. Before I asked for the community’s opinion I decided to ask the AI to do an adversarial analysis and find any glaring issues, and oh boy did it find some.

It turns out the AI agent took a ton of shortcuts creating the finite state machine. The state machine was basically a global variable the player script would check. None of the logic or functionality made it into the state machine. It was all still in the player script. I set out to do a hotfix for this and Continue choked on the codebase and mangled it. I switched to Cline which did a better job, but it still broke more things than it fixed. I’d paste the code the agents wrote back into Google AI Studio to validate it, and the code had all sorts of errors that ignored the specifications in the prompt. It was clear that I’d have to work through Google AI Studio as an IDE agent couldn’t handle what I needed it to do.

It was at this point I took a hard look in the metaphorical mirror. I used the refactor as a litmus test, and the AI system I built had failed. The hard truth is that I’d have to learn GDScript and Godot well enough to do it myself. If that’s the case, why even use AI. I was right back where I started. I knew all too well that I didn’t have the time to learn it all from scratch. It was time to give up the ghost and retire the project.

While the game development failed, my quest to learn if vibe-coding was too good to be true was complete. AI models and agents as they are right now just aren’t capable of building systems complex as a metroidvania video game. While they might work for single page web apps, metroidvanias (and most games in general) are highly choreographed chaos running at 60fps. While this is probably obvious to any of you that have been doing this for a while, there’s an influx of newbies like me to pretty much every field that have been sold the myth that anyone can do anything with AI. This post is for them.

Right now, AI agents are best used for quickly doing simple tasks or brainstorming high-level designs. There’s a murky middle area that’s too specific for web based sessions and too vast for IDE based agents. While the web based agents might have the domain knowledge, they’re not able to apply it across dozens of scripts. The agents can’t handle more than 2-3 scripts at a time. There’s not much you could build with AI that you couldn’t build yourself in the same amount of time while learning the actual technical skills as you go.

If there’s anyone out there that’s had success vibe-coding a full-length game, please let me know. I’d love to be wrong here. Until then, I hope this can be a cautionary tale to anyone else caught up in the current wave of AI hype.

35 Likes

Good on you for realizing the impracticality of this, and coming forward about it in a time when all the LLM and “vibe coding” business brings about a lot of backlash. It’s not easy making yourself vulnerable.

If you do plan to go forward with learning Godot/GDScript, I would caution you not to rely on LLMs for learning. There’s no substitute for outsourcing your brain.

9 Likes

Wowza! This is the only AI thread that I actually like (besides the original AI bubble thread).

Congratulations on that achievement!

:tractor:

8 Likes

I am so here for this and will be linking the sh*t out of it.

Welcome to the forum. You should stay and learn a while. In about an hour you can follow the tutorial in the docs to have a fully functional game sans LLM: Your first 2D game — Godot Engine (stable) documentation in English

10 Likes

Wow, you guys are way more friendly than Reddit, haha. I appreciate the kind words.

I hope to build this someday or maybe spin it off into some sort of TTRPG of sorts.

8 Likes

I think you overestimate how difficult it would be to learn using Godot and GDscript! No reason to give up yet!

8 Likes

A very useful write-up, thank you. We’re most of us going to have to gain proficiency using LLMs for our work (even if we’re not programmers), and I’ve been dreading biting that bullet. Great work diving into the new world.

4 Likes

You haven’t prompted it in right ways, bro.
Also, Claude Asbestos release is due in three months. It’ll change everything.

10 Likes

Holy civilised AI thread.

And good on you for not only noticing that it doesn’t work but also telling others about it.

I see a lot of people justify vibe coding by saying that the programmer telling them already knows how to code so it’s different.

And this is great for that. Thnx.

13 Likes

Batman!

7 Likes

The funny thing is, according to OPs descriptions, the project had fallen apart before it even got past the boilerplate stage (state machine etc).

Every “successful”(?!) vibe coding report I ever saw was of some small formulaic web app, for which there’s ginormous amounts of code available to scoop from. LLM based agents are utterly useless when it comes to serious coding of large projects with high specificity, games being a notable example of such projects, even the small ones. I’ve been saying this since 2023 and have received a lot of flame for it, been called ignorant etc.

Good to see people are finally beginning to come to their senses. Too bad that in most cases It’ll take a personal experience of failure and waste of time and money, like in OP’s case here. But I totally get it, the trillion dollar “ai” hype machine is hard to resist.

If you understand how LLMs and agents based on them function, it should be immediately obvious to you that this can never work. Ever. Otherwise you’ll likely get fooled and robbed of some token money and a piece of sanity.

9 Likes

Here comes the resident Base44 “developer” :laughing:

What a fascinating and useful post! Thank you for providing such a detailed breakdown of what you went through.

You did what the vibe coder bros always claim sceptics aren’t doing: you iterated persistently, used multiple models, split personas, integrated your tooling, and performed adversarial review.

And you clearly represent the top end of the non-coder spectrum: cybersecurity career, structured thinker, project planning discipline, and realistic self-reflection. If you struggled and eventually gave up, then the average vibe coder is doomed.

There really is no substitute for knowing how to code or being willing to learn.

I used ChatGPT last year to help me learn Godot and GDScript. But I already had decades (you don’t actually need that much!) of experience programming for work and pleasure. I read the LLM outputs and ran the code, using the debugger to inspect variables and trace errors. I compared the code to how things work in C++. I asked questions about Godot’s engine architecture. I challenged ChatGPT’s answers when I thought they were wrong.

I only ever gave it small, modular assignments. The idea of being handed thousands of lines of code that I don’t understand, and will never have time to review, terrifies me.

And yes, I often found myself going to the Godot documentation (which is excellent, but I struggle to learn from documentation alone).

Even with small scope requests, I treat LLM code as untested examples and rough drafts. They should be regarded with an appropriate level of suspicion, even if they appear to work first time (and usually they don’t).

5 Likes

One could almost conclude that the whole business model of “coding agents” is, dare I say it - a fraud.

8 Likes

Part of a blitzkrieg of greed, that also threatens writing, translation, voice overs, music and filming.

There is no defense or ethical use of commercial LLMs at the moment, period. The socio economical costs are just too high.

4 Likes

Hahaha, I just had the image of a “composer” saying they were “vibe composing”… what a world we live in.

4 Likes

I think it’s more prevalent in the Music industry because people using it don’t call it that, and instead treat it as a tool they’re using - and speak of it another way. There also isn’t a popular music musicians union speaking out because music production companies have successfully taken so may rights from artists over the last century and prevented that from happening. And corporations can’t really sway public opinion.

2 Likes

I just started my test project to make a “Mario Maker” like game fully by talking with Claude AI, then someone push this post to me. I will still try and report my progress. Hope I can success, but if I fail finally, it is not bad. At least it shows a 53 years old coder is still valuable.

2 Likes

That was me who shared this post with you on Reddit :slightly_smiling_face:. Nice to see you here! Looking forward to seeing your progress, we’d all be very interested in seeing how it turned out for you.

Here’s the post if anyone is curious:
https://www.reddit.com/r/godot/s/OlPaCT8hcB

Thanks. Will report my progress continuesly