{"slug": "how-i-made-25k-in-15-days-with-a-game-built-by-claude-code", "title": "How I made $25k in 15 days with a game built by Claude Code", "summary": "A developer won the $25,000 grand prize in the 2026 Vibejam game development competition with a game built almost entirely using Claude Code, an AI coding tool. The game, \"A Game About Capybaras Delivering Food,\" was created in 15 days and features a physics-based delivery loop with a mini-mart minigame and an explorable world. The developer used Claude Code's plan mode and custom rules to coordinate multiple AI sessions and avoid code conflicts.", "body_md": "# How I made $25k in 15 days with a game built entirely by Claude Code\n\n## What it actually took to vibe-code a game that won the 2026 Vibejam\n\n## Introduction\n\nI'm proud to announce my game won #Vibejam2026. This article breaks down a huge part of the workflow and the development details of my entry for the event. The prize was $25k USD.\n\nAs an iOS Software Engineer for almost 9 years, this was the first time I tried developing a game. You can play it below, then come back to continue reading.\n\n### About vibejam\n\nIt’s a game dev competition hosted by @[levelsio](https://x.com/levelsio) where 90%+ of the code must be written by AI. The event ran through April 2026, and I had to submit the code in accordance with the event [rules](https://vibej.am/2026/#rules).\n\n“The event is also an open benchmark for how fast AI coding is improving. Every edition measures what a solo developer with an AI copilot can ship in a single month — and every year the games get noticeably better. 2026 is the second run.”\n\n[This year’s edition was sponsored by Cursor, Bolt.new, Glif, and Tripo AI.](https://vibej.am/2026/press)\n\n### About my game\n\n[A Game About Capybaras Delivering Food](https://capybara-vibejam26.leocoout.dev/) is a single and multiplayer game where you control a capybara on a scooter, carrying a pile of food that has to be delivered on time.\n\nThe core loop is three parts:\n\n**Accept orders from your phone,** each with a different difficulty (more items, easier to drop).**The mini-mart minigame:** rush through a convenience store to collect the requested items before the time runs out, on a slippery floor**A physics-based stack** strapped to the back of the bike that tilts, leans, and topples depending on how you drive.\n\nAround that loop, I built a world worth exploring, full of small, funny details, with distinct areas like the city, suburbs, and countryside, plus monuments riffing on Christ the Redeemer, the Hollywood Sign, and the Golden Gate Bridge.\n\n### About vibe coding\n\nVibe coding is a way of programming where you describe what you want in plain language, and the AI writes the actual code. Instead of worrying about syntax and implementation details, you describe the “vibe” or intent of a feature. It’s less like speaking to a machine and more like handing your requirements to something like a super programmer.\n\nIn practice, I spent most of my time brainstorming, planning, and playing rather than generating code. I ran 2–3 Claude Code sessions at once, each working on a different part of the code to avoid conflicts. New features always used a fresh session with no context; I kept one long-running session for bugs that needed more context of what was already built.\n\n### Define the project rules\n\nClaude Code rules are instructions and guidelines you set for Claude Code. As a starting point, I dropped the VibeJam rules into Claude’s `/rules`\n\nfolder, alongside coding conventions that aren’t obvious to the model but mattered for this project. Not following the jam rules could eliminate me from the event.\n\n### Planning with plan mode\n\n`/plan`\n\nmode is a feature that lets the AI study your whole project, research online, reason, run commands, explore, and brainstorm before touching a single file. It then writes out a plan as a document file and asks whether it can proceed. You can keep refining that loop until you're happy with the plan.\n\nYou can plan every feature before implementing it, and saving the plan to a file lets the LLM reference it again if the session is terminated.\n\nTo make the plan mode even more powerful, I combined it with the game-creator Skill [https://github.com/PlayableIntelligence/game-creator](https://github.com/PlayableIntelligence/game-creator), which gives Claude extra Three.js game-dev context and knowledge.\n\n⭐️ Tip: ask Claude to\n\ninterviewyou back. This helps it implement the feature the way you actually want it.\n\n### Avoiding the /loop usage\n\n`/loop`\n\nlets the AI run tasks automatically over and over, without constant manual input. It works well when the AI can judge its own output and degradation workflows: it tries something, scores the result, and then keeps iterating until it hits a target you set, as long as you give it enough context.\n\nThis project needed a lot of manual validation and gameplay, so `/loop` would have burned all my tokens blindly testing toward a result that couldn’t satisfy me as a player, losing quality at every failed iteration. Instead, I worked in many small iterations and validated each one myself.\n\nThe overall workflow was simple:\n\nI think, Claude researches, we brainstorm, Claude plans, I approve, Claude generates, and I test.\n\n### By the numbers\n\n**Tools:**\n\n**Code:** Claude Code (Opus 4.7) and Three.js**Skill:**[https://github.com/OpusGameLabs/game-creator](https://github.com/OpusGameLabs/game-creator)** Textures & illustrations:**GPT images 2 and Grok** 3D models:**Tripo3d** Music & SFX:**Suno and ElevenLabs\n\n**Cost to develop (values in USD):**\n\n**Made with AI:**\n\n- 100% of the code (188 commits, 27k lines of code)\n- The logo, illustrations, textures, and 3D models\n- The music and SFX\n- All the tooling (the in-game editor, cutscene maker)\n\n**Made by hand:**\n\n- Writing the prompts for code, art, audio, and 3D\n- Playing the game, fine-tuning the feel, and placing the cameras for cinematics\n- Spotting development gaps and asking AI to build tools to help fill them\n\n### Development timeline\n\nIt took around 15 days to finish and submit my game on time. Many late nights, though.\n\nCheck the game's evolution comparing my\n\n[first post]vs[submission post].\n\n## First Week\n\n### Inspiration and concepts\n\nThe inspiration sat somewhere between Death Stranding (post-apocalyptic courier delivering supplies) and Easy Delivery Co. (a driving sim where you control a cat delivering packages in its little truck): the curvy stacked-items mechanic, the PSX-style graphics, or simply a combination of both.\n\nThe final look of the game wasn't there from the start; much of the gameplay loop, visuals, and mechanics took shape throughout development.\n\n### From concept to 3D\n\nI had the idea in mind (the capybara and scooter), but the details were still blurry, so I brainstormed with Grok/GPT. I asked them to generate a sheet with variations in style, shape, and character design, then iterated on top of it until I was satisfied. I even tried to draw the capybara on the scooter for reference (it didn't work well).\n\nWhy not automate this?Some participants used automated in-game image-generation workflows, but I wanted more control over the result before deciding whether to add it to the game.\n\nHere are some examples of the creative process behind the main character creation.\n\nNext, prepare the design for 3D: ask the LLM for at least 3 angles (FRONT, BACK, LEFT-RIGHT SIDE). The more angles you provide, the better the 3d generation, without letting AI \"guess\" what you want. You can see the prompts in one of my chats [here](https://x.com/i/grok/share/09da83c3b501445e873b1ca5bb6f16c6).\n\nThen I used [Tripo3D](https://studio.tripo3d.ai/) for the image-to-3D: drag and drop your pictures, select the texture quality, and the number of squares/triangles. The process was the same for every item or visual asset in the game\n\nNot everything worked in one shot. Some models took far more trials than they should, which cost credits. This bridge, for example, still has issues after 20 generations. You can see the problems in its side details. For every generation, you have to fine-tune the squares/triangles, play with the smart mesh and the texture, and improve the visibility of the uploaded images, all of which vary from object to object.\n\n### Debug panel and constants\n\nYou don’t want to waste tokens asking the LLM to fine-tune things you can do yourself. Instead of “make it faster” or “make it bigger”, add a `/rule`\n\nmaking every object property editable via sliders or input fields and saved to a config.\n\n**Player controls**\n\nStarting with the basics, I wanted vehicle controls with drift mechanics, collision, and a camera following the bike. I built a sandbox map to drive around, test collisions, and tune the feel with the debug panel. When drifting, the line at the back changes color to show the boost you’ll get on release; there’s a “high speed” effect, and the camera shakes a bit.\n\nHere’s the evolution over the first few days:\n\n**Item physics**\n\nThe main mission is to deliver food from A to B on time without dropping it. The first version had the basket items sliding side to side, but I wasn’t satisfied. The GIFs below show the evolution.\n\nAt some point, I tried stacking the items on top of each other. Moving left and right created an arch, and past a threshold, the items could drop. I refined the values to make it less realistic (physics-oriented) and more fun (a % chance of falling once past the threshold), which is much more unique and fun.\n\n**Phone simulator: Part I**\n\nThis is where you receive the mission of collecting the food.\n\nI asked Claude to design a phone simulator with iOS-like animations and visuals, and it one-shot the whole thing in CSS. The animations were impressive from the first version.\n\nI later polished the phone UI to make it more realistic and comical: slide-to-unlock over a lock screen of a capybara taking a mirror selfie, an iOS-style notification badge, working volume buttons, and “Capyfied” versions of real apps, for example, CapyMaps works like Maps, and Capify is a music app that actually plays music in the game.\n\nThe Capybara playlist used in the game is on YouTube, proudly made by\n\n[!]@peluucs\n\n**Inconvenience Store**\n\nThe mini-mart adds a challenge to getting the food. Instead of fruits just appearing on the back of the bike, I wanted the player to go into the store and hunt for the requested fruits, with some extra spice:\n\n- Spot the shopping cart that appears randomly\n- Find each fruit on the order list\n- The floor is slippery, and the walls bounce you back\n- The banana peel (removed from the game)\n- More fruits mean more bonus, but they're easier to drop, which loses points\n- All this under 60 seconds (later reduced to 45 seconds)\n\n😂Fun fact: even after the Jam, the judges still don’t like my convenience store, mainly because it's so hard to move around.\n\nGetting from the world map to the mini-mart uses a scene switcher with in/out animations. I later dropped an early idea of randomly generated shelves and floor hazards in favor of static shelves with randomly placed items on the ground.\n\nThe convenience store’s evolution was my favorite. I reworked the camera perspective, added lighting and animations, and replaced the default shelves and items with real 3D props. Combined with the right sound effects, the result was amazing.\n\nIn the next section, you’ll see how I set up cameras, animations, and more with the Editor tool.\n\n### The map (attempt 1)\n\nI first tried a map fully generated by LLM: Grok for the illustration, Tripo3d to convert to 3D. But it’s very hard to get granular control over the city details, the quality fell apart when zoomed in, and the whole map was a single piece, which is not optimized for the game and is bound to cause issues.\n\nSo how do you get a fully customized, handcrafted map?\n\n### The Editor Tool\n\nTo build a handcrafted map, I needed an editor: place items where I wanted, use brushes to “paint” terrain and mountains, and generate procedural roads. A big part of the game’s uniqueness comes from this map.\n\n“Claude, create an editor tool with terrain construction and an entire road system with light poles and a sidewalk. Make no mistakes.”\n\nThe editor was very simple and personal; I didn’t work much on improving the interface of the panels. They’re just floating windows, but it worked fine.\n\nSome of the capabilities available in the editor:\n\n- Place, delete, move, rotate, and scale objects\n- A brush to raise, lower, smooth, and flatten terrain\n- A brush to paint grass, dirt, water, and other visuals\n- A road system with intersections, light poles, and sidewalks\n- Cameras and in-game cinematics (added in the second week)\n\nI forgot to ask for a Ctrl+Z until second week through building the map.\n\nTo open the editor, I added an `?editor`\n\nendpoint. Later, I split the editor from the main code so Claude could update the game without reloading the editor and wiping my changes (which happened a few times).\n\n### Road builder tool: Part I\n\nThe very first version of the road builder was too simple, so I kept adding features and fixing bugs. Usability: click points on the terrain, and it draws a smooth curve between them, lays down asphalt or dirt, and carves the ground so the road sits flat, with the terrain blending back at the edges. The road also appears in the CapyMaps app on the phone, showing the shortest route to the destination.\n\n### Building the map by hand\n\nSince getting AI to generate the map the way I wanted was so hard, I used the editor to build it manually. This is the only “heavy” manual work I did. I had a “European”-style city in mind, but it went the opposite direction as you will see.\n\nThe idea I had was to put the convenience store at the very top of the main mountain of the map, visible from anywhere, with a magical light coming from the sky, then build the city around it. After many iterations and hours, I had a genuinely playable city.\n\n### Day and Night cycle + Rain\n\nThese were extras. They could have come later, but one of my Claude sessions was idle, so I asked it to implement them.\n\n### Animations\n\nThis was tricky. I didn’t export the model with joints because of the scooter, but each piece was mapped by Tripo3d, so I asked Claude to animate the wheels when turning, move the head, and vibrate the bike when idle.\n\nHere’s the result:\n\n### Multiplayer\n\nMultiplayer was simpler than expected for a jam. A single global city/lobby hosts the room over a live WebSocket on Cloudflare. As players join, their position and item stack are relayed to everyone else.\n\nBandwidth grows with the square of the player count: every rider broadcasts ~10x/sec, and the server relays each message to all other players. 5 players is okay; 50 players means fanning out 50 messages to 50 clients, 10x a second.\n\nYou can also send messages, honk, and even hear what nearby players are listening to.\n\nI didn’t do heavy optimization or pay for expensive servers. A few things stay client-side only to keep it light: the day/night cycle, rain, particles, and drifting.\n\n## End of first week results\n\nBy end of the first week, we had:\n\n- Main character, stacked item physics, collision\n- Convenience store 90% polished\n- Phone with simple apps\n- Wired mission loop (receive order + minigame + deliver)\n- Weather and day/night cycle\n- Map development started\n- Editor tool with terrain builder\n- Multiplayer logic\n- Simple SFX + some of the final music\n\n## Second Week\n\n### Polishing the materials\n\nWith the core mechanics defined, it was time to give the game the visuals it deserved. I went for a PS1-style visuals: low-res images, limited colors, reduced resolution. PS1 was a very limited console, so the right textures, color depth, mapping, and filtering get you that look.\n\nI highly recommend\n\n[this article]by Roman Liutikov for reproducing these effects in Three Js.\n\nChatGPT Images-2 had just been released, so I generated realistic textures, resized them on free websites, and applied them to the game.\n\nThe same process replaced the mockup trees with 2D textured ones.\n\nFor PS1-style trees, I asked Claude to place the flat foliage PNGs in an X shape (2+ crossed planes):\n\n“Create two flat planes, place them one on top of the other, and rotate one by 90° to form an “X” when viewed from above.”\n\nI generated textures for every material too (asphalt, grass, dirt, wood, sand, water, farmlands), and Claude swapped the old “green” brush I’d painted for the real textures. On the right you can see the final result combining the textures and map polish.\n\n### Road builder tool: Part II\n\nThe final road builder details improved crosswalk generation and added procedurally generated sidewalks, light poles, lane marks, guardrails, fences, and banners.\n\n### Working on the map\n\nThe most fun but the most time-consuming part. I added references to Christ the Redeemer, the Golden Gate Bridge, and the Hollywood sign. The city is a mix of everything I thought it would be cool.\n\nThe map evolved into what you can see below: the fog improved (which amplifies the sense of scale), the sky got a noise texture to mimic the clouds, and the financial and suburban districts are now clearer than before.\n\nOne of my favorite parts is the “countryside”, a different landscape from the city: dirt pathways, a farm, and simpler houses next to a highway.\n\nFrom another angle, you can see how Christ the Redeemer sits in the landscape. I first thought about a lake, but it became a beachside next to the city.\n\n### Cutscene Editor\n\nThe game opens with a cutscene before jumping into gameplay. It gives the player context and makes the whole thing feel like a real game. Here’s a preview:\n\nYou can watch the first 4 minutes of gameplay with sound\n\n[here]\n\nLet's start with the overall view of the cinematic editor UI, and then I'll walk you through some cool details. This editor was created in a way that I could visualize the progress of the cutscene in a timeline, just like a real video editor, while making it easy to insert or remove clips, move them around just by drag-and-drop, insert time skips, music, transitions, and overlays. It's visually messy, but delivering the game was more important.\n\nAll scenes are recorded in-game and replayed in real time, so if other players are online, they appear in the intro too.\n\n### Recording\n\nFirst, I recorded the capybara around the city. The “Record” tool lets me place the bike anywhere on the map and drive while capturing the path.\n\n### Camera positioning\n\nWith the path set, I arranged cameras around the city for nice takes. This also helped populate the on-screen details around each area.\n\nEach camera has its own properties: animations, FOV, transitions, and even changes the time of day for each camera. Then, I could just wire them to a specific block in the timeline.\n\n### Menu\n\nThe cinematic cameras could be reused in the game menu via a “Use in menu” checkbox.\n\n**Localization**\n\nSo far, the game supports English, Brazilian Portuguese, Spanish, Korean, Mandarin Chinese, German, and Hindi. Claude did well on the languages I know, with a few tweaks needed. And for the rest, I’ll probably use another agent to validate.\n\n### Launching the game\n\nThe last step was the thumbnail for the [Vibejam](https://vibej.am/2026/#games) website. After a few references, ChatGPT kept the low-poly style well, though it messed with the background light, the side roads, and the Christ the Redeemer mountain at the back.\n\nThe game was submited here\n\n[https://vibej.am/2026/#games]\n\n## Final Result\n\nThe final result can be seen by yourself!\n\n## What did I learn?\n\nCompared to last year, it’s clear AI coding has crossed a threshold. A few takeaways:\n\n- Quick dopamine, low-cost MVPs: you can stand up a playable mechanic in an afternoon.\n- Time shifts from coding to deciding: you spend less time coding and more time typing, planning, testing, and taste-making. That’s the real bottleneck now. Many people struggle to write good prompts, meaning a clear thought turned into text.\n- Tooling compounds: the biggest multiplier wasn’t the game code, it was asking Claude to build the editors that let me build the game faster. Every detail is built on demand.\n\n### Will I put this game on Steam?\n\nNo. This was a good game for a jam, and it should end there. For Steam, it would need to be more complete, like adding hours of enjoyable gameplay and a sense of progress. Right now it’s good for 5–10 minutes.\n\n## What's next?\n\nI enjoyed this project a lot, and AI gave me superpowers for building MVPs and testing ideas fast. Used right, it’s an amazing tool. Now I want to dive deeper into game development concepts and keep using LLMs to bring these ideas to life faster than ever. Perhaps you will see my games on Steam in the future.\n\nFollow me on [LinkedIn](https://www.linkedin.com/in/leocout/) or [X](https://x.com/leocooout) I will post about my new projects!", "url": "https://wpnews.pro/news/how-i-made-25k-in-15-days-with-a-game-built-by-claude-code", "canonical_source": "https://leocoout.medium.com/how-i-made-25k-in-15-days-with-a-game-built-entirely-by-claude-code-94b3b817f0ce", "published_at": "2026-07-13 10:34:21+00:00", "updated_at": "2026-07-13 11:05:13.719408+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "ai-tools", "generative-ai"], "entities": ["Claude Code", "Vibejam", "levelsio", "Cursor", "Bolt.new", "Glif", "Tripo AI", "PlayableIntelligence"], "alternates": {"html": "https://wpnews.pro/news/how-i-made-25k-in-15-days-with-a-game-built-by-claude-code", "markdown": "https://wpnews.pro/news/how-i-made-25k-in-15-days-with-a-game-built-by-claude-code.md", "text": "https://wpnews.pro/news/how-i-made-25k-in-15-days-with-a-game-built-by-claude-code.txt", "jsonld": "https://wpnews.pro/news/how-i-made-25k-in-15-days-with-a-game-built-by-claude-code.jsonld"}}