<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zeppelin_Tsai</title>
    <description>The latest articles on DEV Community by Zeppelin_Tsai (@zeppelin_tsai).</description>
    <link>https://dev.to/zeppelin_tsai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4064685%2F75cfce08-5a54-4d22-a7a7-a5ca79159d4c.jpg</url>
      <title>DEV Community: Zeppelin_Tsai</title>
      <link>https://dev.to/zeppelin_tsai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zeppelin_tsai"/>
    <language>en</language>
    <item>
      <title>AI Doesn't Replace Experience. It Compounds It.</title>
      <dc:creator>Zeppelin_Tsai</dc:creator>
      <pubDate>Thu, 06 Aug 2026 19:12:00 +0000</pubDate>
      <link>https://dev.to/zeppelin_tsai/ai-doesnt-replace-experience-it-compounds-it-668</link>
      <guid>https://dev.to/zeppelin_tsai/ai-doesnt-replace-experience-it-compounds-it-668</guid>
      <description>&lt;h1&gt;
  
  
  AI Doesn't Replace Experience. It Compounds It.
&lt;/h1&gt;

&lt;h3&gt;
  
  
  How I deliberately reduced scope until I finally shipped a game.
&lt;/h3&gt;

&lt;p&gt;My previous project was a Godot RPG.&lt;/p&gt;

&lt;p&gt;Every month it became larger.&lt;/p&gt;

&lt;p&gt;Every month it got further away from release.&lt;/p&gt;

&lt;p&gt;At some point, I realized I wasn't building a game anymore. I was building an endless project.&lt;/p&gt;

&lt;p&gt;So I did something that felt completely backwards: I deliberately reduced the scope until I could finish a commercial game in three days.&lt;/p&gt;

&lt;p&gt;A little context first: I'm a software engineer by trade, not a hobbyist picking up code for the first time. That matters for how this story goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 0: The Plan
&lt;/h2&gt;

&lt;p&gt;I wanted one more finished commercial project for my portfolio — something with real scope, not a toy demo. My existing Godot RPG kept growing every time I touched it, so I deliberately picked a different kind of project this time.&lt;/p&gt;

&lt;p&gt;I evaluated a few genres and landed on a card game. The reasoning was practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The rules already exist. Players already understand them.&lt;/li&gt;
&lt;li&gt;No enemy pathfinding, no level editor, no procedural generation to debug.&lt;/li&gt;
&lt;li&gt;A small amount of content can still feel complete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Big Two was the obvious fit.&lt;/p&gt;

&lt;p&gt;My goal wasn't to build my dream game. My goal was to relearn how to finish one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dream games don't disappear. Momentum does.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the tech stack, I went with what let me move fastest: &lt;strong&gt;HTML5 + Phaser 3 + Vite + TypeScript&lt;/strong&gt;. Not because it's the most powerful option out there — because I already knew it well enough to stop thinking about tooling and start building.&lt;/p&gt;

&lt;p&gt;Then I wrote a real design doc — not a novel, just enough to build on: core Big Two + item system rules, a rough story outline, and the first two opponents' names and personalities. Everything else was allowed to evolve during development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: Building the Skeleton
&lt;/h2&gt;

&lt;p&gt;First priority: get the core loop playable and prove it was actually fun.&lt;/p&gt;

&lt;p&gt;I kept repeating one rule to myself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If the base card game isn't fun, nothing built on top of it matters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude Code did the initial heavy lifting on the rules engine. After that, I rotated between Codex and Copilot to keep development moving — not because of some elegant multi-agent strategy, but because agent usage limits are real, and switching tools was just what happens when you burn through one and need to keep going. I also kept a web chat window open the whole time for architecture decisions. Think of it as a rotating shift schedule, except the workers were AI agents and the shift changes were dictated by rate limits, not the clock.&lt;/p&gt;

&lt;p&gt;During this stage, every visual asset was a placeholder — plain shapes, icons, or SVGs. No feature was allowed to wait for final artwork. The priority was making sure the systems were actually wired together: save/load, multiple endings, a full playthrough from start to finish. If I couldn't click through the entire game with colored rectangles standing in for art, no amount of polish later would fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 2: Art
&lt;/h2&gt;

&lt;p&gt;For art, GPT Plus was enough — but the prompting had to be deliberate. Consistency was the hard part, not raw output volume.&lt;/p&gt;

&lt;p&gt;Before generating any story CG, I locked in character designs and room/background references first. Every new illustration reused those references, so characters and locations kept the same visual identity instead of looking like a pile of unrelated generated images stitched together.&lt;/p&gt;

&lt;p&gt;Most of the work wasn't generating images. It was preventing visual drift.&lt;/p&gt;

&lt;p&gt;One concrete example: instead of generating expressions one by one, I generated them as a single sprite sheet and sliced them afterward — same character, same lighting, same style, no drift between frames.&lt;/p&gt;

&lt;p&gt;This stage also ran in parallel with something I had zero control over: itch.io's publisher onboarding — payout mode, tax interview, PayPal linking. That process wasn't something I could speed up by working harder, so I started it as early as possible and let it run in the background while the art pipeline continued.&lt;/p&gt;

&lt;p&gt;Game development isn't just writing code. You also need to finish the boring administrative work before launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 3: Audio, Polish, and the Debugging Pit
&lt;/h2&gt;

&lt;p&gt;Audio came from two sources: Kenney (CC0 sound effects) and StockTune (subscription-based music, public-domain licensed). Once the bulk of content was in place, I built out a gallery/unlock mode, then hit what I can only describe as debugging hell — chasing down BGM lifecycle bugs, save-state edge cases, and animation polish, one at a time.&lt;/p&gt;

&lt;p&gt;Shipping an EXE didn't end debugging. It simply introduced an entirely new species of bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three-Day Thing
&lt;/h2&gt;

&lt;p&gt;I never planned to market it as "a game made in three days."&lt;/p&gt;

&lt;p&gt;Near the end, I looked at the Git history and realized something. If I pushed a little harder, it could actually be finished in three days. So I did — with some late nights involved.&lt;/p&gt;

&lt;p&gt;Ironically, the biggest productivity boost wasn't AI code generation. It was automated testing.&lt;/p&gt;

&lt;p&gt;That's the part I'd actually recommend to other solo devs: &lt;strong&gt;HTML5 + AI-assisted development pairs extremely well with Playwright.&lt;/strong&gt; Automated browser testing cut my manual QA time dramatically — every rules-engine change, every UI tweak, got verified by an actual browser session instead of me clicking through the same fifteen steps by hand, again and again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Automated testing multiplied everything AI generated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But if I'm honest, the real reason this moved fast wasn't the tooling at all. It was that I was building for myself, wearing two hats at once.&lt;/p&gt;

&lt;p&gt;As a player, I already knew what kind of experience I wanted.&lt;/p&gt;

&lt;p&gt;No filler.&lt;/p&gt;

&lt;p&gt;A few genuine surprises.&lt;/p&gt;

&lt;p&gt;Good-looking art.&lt;/p&gt;

&lt;p&gt;A satisfying ending.&lt;/p&gt;

&lt;p&gt;As an engineer, I already knew how to get there.&lt;/p&gt;

&lt;p&gt;How to structure the systems.&lt;/p&gt;

&lt;p&gt;How to keep the code maintainable.&lt;/p&gt;

&lt;p&gt;How to stop adding features.&lt;/p&gt;

&lt;p&gt;Knowing both sides meant I rarely got stuck asking, &lt;strong&gt;"What should I build next?"&lt;/strong&gt; The design doc, for what it's worth, took about three hours to write. Everything after that was execution, not discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools &amp;amp; Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tooling:&lt;/strong&gt; VS Code, GitHub, HTML5, Phaser 3, Vite, TypeScript, Claude Code, Codex, GitHub Copilot, ChatGPT Plus, Playwright, Electron, and a small custom Python + Pillow script (&lt;code&gt;asset_builder.py&lt;/code&gt;) for batch PNG → WebP conversion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audio:&lt;/strong&gt; Kenney (CC0 sound effects) and StockTune (AI-generated public-domain music).&lt;/p&gt;




&lt;p&gt;Three days sounds impossible.&lt;/p&gt;

&lt;p&gt;Until you look at the Git history.&lt;/p&gt;

&lt;p&gt;Here is what those three days actually looked like in Git:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6b5hzdvhsf8n24ddblnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6b5hzdvhsf8n24ddblnd.png" alt=" " width="702" height="157"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fouj3ssg53inwgccnhc5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fouj3ssg53inwgccnhc5e.png" alt=" " width="665" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No giant leap. Just hundreds of tiny steps.&lt;/p&gt;

&lt;p&gt;Looking back, I don't think the interesting part of this story is the three days.&lt;/p&gt;

&lt;p&gt;It's something else.&lt;/p&gt;

&lt;p&gt;As a player, I'd already spent years learning what kind of games I enjoy.&lt;/p&gt;

&lt;p&gt;As an engineer, I'd already spent years learning how to build software.&lt;/p&gt;

&lt;p&gt;AI didn't give me those experiences.&lt;/p&gt;

&lt;p&gt;It simply let me move through them much faster.&lt;/p&gt;

&lt;p&gt;AI accelerated execution.&lt;/p&gt;

&lt;p&gt;Experience accelerated decisions.&lt;/p&gt;

&lt;p&gt;Reducing scope made shipping possible.&lt;/p&gt;

&lt;p&gt;That experiment eventually became &lt;a href="https://zeppelintsai.itch.io/dulan" rel="noopener noreferrer"&gt;DULAN&lt;/a&gt;: a story-driven Big Two game in which every opponent has their own room, music, personality, and reactive dialogue, with multiple endings tied to how you choose to play.&lt;/p&gt;

&lt;p&gt;Every commit was small. None of them felt important while I was making them.&lt;/p&gt;

&lt;p&gt;Looking back, they weren't just building a game.&lt;/p&gt;

&lt;p&gt;They were compounding years of experience into something I could finally ship.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>ai</category>
      <category>indiedev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
