Riad is the product manager of Codecks. He is also the co-founder of indie games company Maschinen-Mensch and still believes that Street Fighter 2 is the most beautiful video game ever created. Coincidentally he also believes that Codecks is the best project management tool for game developers. Apparently he has been creating video games for over 14 years now and considers himself a productivity nerd: scrum, kanban, extreme programming, waterfall, seinfeld. He has tried it all.
Codecks is a project management tool inspired by collectible card games. Sounds interesting? Check out our homepage for more information.
If you’re in game development, you know as well as I do that the word “iteration” gets tossed around a lot, particularly in team meetings. “We’re iterating on the combat system,” or “This sprint is all about iterating on level design.” It sounds good, it sounds productive. But what do we really mean when we say we’re iterating, especially in the wonderfully chaotic world of game development?
Much like its cousin “agile”, “iterative” is a term that’s easy to claim but harder to truly embody. We wrote about this before, in our blog post all about agile in game development. Too often, we think breaking down big tasks into smaller pieces is iteration. Or that having short development cycles automatically means we’re iterating. But if those pieces don’t form a playable, functional whole regularly, or if those cycles end with a bunch of disconnected assets and systems, we might be missing the magic of what true iteration offers.
This isn’t about getting hung up on definitions for the sake of it. It’s about understanding a development approach that can be incredibly powerful for “chasing the fun,” managing risk, and actually building momentum. So, let’s unpack what genuine iterative development looks like and why it’s a game-changer (pun intended) for us game devs.
At its heart, true iterative development is about one core principle: at the end of every single iteration (or cycle, or sprint), you should have a working, potentially shippable product. Now, “shippable” in early game development doesn’t mean “ready for Steam launch.” It means you have an integrated, functional slice of your game that can be played and tested. It could be a very rough version, but it works. The new mechanic is in, the character can perform the new action, the basic game loop is playable with the latest additions.
The entire purpose of this is to enable continuous feedback and learning. Each iteration isn’t just about producing code or assets; it’s about producing a playable experience that allows the team, stakeholders, and even early testers to see, feel, and react to what’s being built. This feedback loop is golden. It lets you know if you’re on the right track, if the feature is fun, if it performs well, and if it integrates with the rest of the game as expected.
You might be thinking, “But what if I build one enemy ‘completely’ and then, after adding three more, I realize the overall enemy design philosophy needs to change? Haven’t I wasted time on that first one?” That’s a valid concern. The key here is that “complete” for an early iteration (like the first enemy) means functionally complete enough to test its core gameplay contribution and our ability to build it. It’s not about final polish. The learning gained from building that first, rough but playable enemy (about its AI patterns, its “fun factor,” the animation pipeline, how it interacts with the player) is invaluable. This knowledge directly informs the next enemies or even the systemic changes needed. It’s about de-risking the overall vision by testing its components in a playable state early, rather than building many parts in isolation and hoping they all work together fun-ly at the end.
There’s a famous analogy (often depicted visually) that perfectly illustrates true iterative development versus a more component-based (but often mistaken for iterative) approach. Imagine you want to build a car:
The “Pile of parts, often mistaken for iteration:
Iteration 1: Design all four wheels.
Iteration 2: Manufacture all four wheels.
Iteration 3: Design the chassis.
Iteration 4: Build the chassis.
The True Iterative Approach:
Iteration 1: Build a skateboard. It’s basic, but it rolls! It provides a rudimentary form of transport. You can get feedback. Is it fun? Does it work?
Iteration 2: Add handlebars. Now it’s a scooter! More control, new possibilities. More feedback.
Iteration 3: Evolve it into a bicycle. Add pedals, a seat. Now it’s much more versatile.
Iteration 4: Motorize it – a basic motorcycle.
Iteration 5: Refine it into a car.
…and so on, until months later, you finally assemble a car. The “customer” (be it your team, publisher, or players) doesn’t get to try anything or give meaningful feedback on the experience until the very end. If the car handles poorly, you find out very late.
At each step of the true iterative approach, you have a functional product that delivers some value and can be tested and experienced. This allows for learning and adaptation throughout the entire process.
Let’s bring this back to making games:
The “Pile of Parts” in Game Dev: Imagine you’re creating ten new enemy types for your game.
The True Iterative Approach in Game Dev:
This way, you’re constantly validating your designs and technical approaches in a real gameplay context.
Now, you might be thinking, “This sounds great for a simpler arcade game or something prototyped at a game jam, where you can quickly find a core fun loop and just add more enemies, levels, and weapons. But what about my complex city builder, deep simulation, or sprawling RPG? The real ‘fun’ in those often emerges from the complex interplay of many systems, which only come together much later in production!”.
This is a perfectly valid point. The nature of the “shippable/playable product” from an early iteration will indeed differ based on genre complexity. For a game jam title, that first iteration might genuinely be a miniature version of the final game loop. For a complex RPG, an early iteration’s “shippable product” might not be a slice of the epic story with full voice acting. Instead, it could be:
In these complex genres, early iterations are often focused on de-risking foundational systems and validating core mechanics in a more isolated, controlled manner. The “fun” might emerge more slowly, from the gradual, iterative layering and integration of these proven systems. The goal remains the same: to build, test, and get feedback on functional pieces of the eventual whole, rather than developing all components in parallel and hoping they magically synergize at the end. The “skateboard” for a complex simulation might be a very focused technical prototype of its core economic engine, but it’s still a vital, testable first step.
Similarly, some teams successfully use what feels like a mix: they might graybox all their levels first (a more waterfall-like phase for level structure) and then iteratively add art and gameplay details to those approved grayboxes. The iterative principle applies to how that art and detailing is done – section by section, testably, rather than all at once in isolation.
It’s easy to fall into traps where we think we’re iterating, but we’re missing the core ingredient of an integrated, functional outcome:
Embracing genuine iterative development can profoundly impact how we “chase the fun” and manage the inherent uncertainties of creating games:
Even with the best intentions, it’s easy to slip into patterns that look like iteration but miss the substance:
While tools don’t make you iterative, the right tools can certainly support an iterative mindset and workflow. And this is something we built our tool, Codecks, for.
True iterative development isn’t just a trendy way to organize tasks; it’s a fundamental shift in how we approach building games. It’s about consistently delivering working, playable increments of our game, no matter how small, and using the feedback from those increments to guide our next steps. It’s about learning by doing, and by playing, at every stage.
So, take a moment and look at your team’s process. Are you diligently assembling individual car parts in separate corners of the factory, hoping they all fit together perfectly on assembly day? Or are you focused on getting that first skateboard rolling, then the scooter, then the bicycle: learning, adapting, and delivering an evolving, playable experience every step of the way?
The latter is where the real power of iteration lies, especially in our quest to “chase the fun” and create games that resonate with players.
Do you have any questions about Codecks, game development or anything else? Send them over, and we'll answer them asap!
Codecks is a project management tool inspired by collectible card games.