Clone Videogames to Learn Real-Time Videogame Design

Jun 29, 2011

Is there a videogame you enjoy that uses simple graphics, relies more on action or puzzles than high fidelity art/audio atmosphere, and can get by with straightforward level structures and (if applicable) AI?

Clone it. Or at least most of its core functionality. Not as a business move, and not to try to get famous off it, just as an exercise in studying the details of its gameplay.

By cloning a game that you already like, you will…

  1. …be pulled into studying the concrete ins and outs of an existing game in great detail.

  2. …have a clear, complete, and coherent target to compare your work against.

  3. …avoid being stalled by uncertainty about what else is left to be done.

  4. …skip the common beginner risk of stalling until quitting from lack of knowing when/how to end the design phase.

  5. …focus first on how to make things work, without being distracted by deciding what to make work.

  6. …know for certain that the skills you’re practicing are immediately applicable to the sort of videogames you enjoy.

I’m not suggesting this as a way into becoming a programmer – I’m suggesting this as a way into becoming a better designer. People can talk for a long time about how much better something in one game feels vs another (combat, navigation, camera, level layout, pacing, difficulty, power-up design…), but until someone can actually make something that feels the way in question, they’re likely overlooking the most critical aspects in favor of the few qualities that are easiest to verbalize.

As the clone nears completion, there’s room to experiment with making it your own. The goal doesn’t need to be per-pixel recreation of the original, but instead a careful understanding of it, in the interest of advancing our understanding as designers. Sometimes that can best occur by contrasting your own implemented ideas to the workings of the unchanged version. (When our Great Ideas for what we thought ought to have been done differently turn out much worse in practice than the original approaches: bonus learning!)

With practice and variation, this translates to being able to express your ideas to others by making the ideas come to life. This leads to becoming more effective as a standalone developer, should you choose that route, due to knowledge of how to make each part for yourself when needed. It can also make someone a more effective and articulate team leader, on account of the gained sense for how all the pieces fit together.

It’s a worthwhile investment of time to do this just to share the results with friends, or to enjoy them for yourself, but most of all for the learning. In the future, when taking on more ambitious projects without a clear, predefined target, you’ll be able to accelerate exploration by Frakenstein-ing together source code, strategies, and learning from your practiced clone projects.

(Disclaimer: I do not propose nor condone cloning for the development of commercial videogames. By the time people are experienced enough to make videogames to earn money, they ought to be capable of coming up with and developing their own ideas.)



Subscribe by e-mail to receive an update every month of all new HobbyGameDev articles, videos, and game development resources.



7 Comments

  1. […] (Cloning with variation to learn while growing code and experience to draw upon for later original wo… is quite different, and something I outright encourage. Competitive analysis is just a smart part of business, too; no sense in completely ignoring the 3 decades of lessons learned. It’s the complete, shameless, point-for-point and creatively-devoid knockoff that’s objectionable.) […]

  2. […] redundancy, to not misuse our lives exploring beaten paths. (For people new to making videogames, cloning can be helpful as a form of detailed study or to get initial momentum, but that’s neither who nor what’s being addressed […]

  3. […] else’s already popular work to ride part of its success (note: which is very different from cloning as a learning exercise, which is legit and very helpful), good luck. (1.) You’re already a full development cycle […]

  4. Guillermo says:

    The best game to do this, In my opinion, is Tetris, but where do I find the resources to do so? Any page prepared to do this?

    • Chris DeLeon says:

      Tetris is actually a bit of an odd example – the way it handles motion is very unlike most other games (or game genres, in any case), and aside from using 90-degree matrix rotations and having a basic menu-play-end structure, it’s a bit of an odd duck in terms of transferring programming for Tetris-like functionality to other games.

      That said, my impression is that it has been used as an early game programming example for many years, so surely folks are finding some value in it. Google something along the lines of “how to program Tetris” (without quotes) and you’ll get a big pile of resources on using C++ or Java to do it. That said, if you’d like to see the tutorial in a specific language, framework, or if the only examples you can find are somewhat out of date and no longer work on modern machines, just let me know (here or by e-mail) and I’ll be happy to put together a more up-to-date example.

      Thanks for the question!

  5. […] Program clones or pieces of simpler videogames that you like (classics, or casual webgames), nearly exactly, to learn about how the design ideas translate into program code to form a finished project. […]

  6. […] you go out of your way to specifically copy some particular example in as much detail as possible (a fine way to just practice when new, though of course that’s more questionable when business gets […]

Leave a comment

Comments Form
  • Your email will not be used for any purpose other than to update you in replies to your comments. Your website address will be shown as a link from your name with your comment. Your profile photo is auto-magically provided by Gravatar.

All contents Copyright ©2014 Chris DeLeon.

Site production by Ryan Burrell.