Game development process is iterative. This means that the game is built in cycles of testing and evaluation, where the design evolves and becomes more defined through each step. The so called “waterfall model” is often mentioned as an opposite to the iterative process. In the waterfall model of software development the design is defined at the beginning of the process, and then elaborated step-by-step in a more straightforward manner. Even though the waterfall model was originally meant to be read as iterative, it has been hailed as an example of a more rigid model compared to agile methods used in modern software development.
In game making, the iterative nature of the design process is not limited to software. All games are experiential, and building such systems for others to interact with, experience and enjoy, is not a straightforward task. You don’t have full control on the details from the get go. Game development needs constant testing since every change and addition to the design (and the code) can affect the whole. Also many ideas end up not working either as such, or together with other ideas, and thus you gradually advance towards the final form – in cycles.
Fig 1. Iteration process can be seen as a series of prototype testings to find the final form of your design.
A typical way of describing the game development process is that you start with new ideas, build a prototype to test or explore these ideas, and then fine-tune your design based on the feedback and observations. Finally, when everything works, you have a piece of game ready for launch. The whole process could also be described as a funnel, where the design space is narrowing down the further you proceed.
Some game developers also might see the process as a series of funnels (or diamond shapes). Some features are “locked in” at development milestones, narrowing the subsequent design space, but they might also need to be opened again if further design challenges come up at later milestones. There are many unknowns in the game development process and you need to constantly create and solve new design problems. Not all challenges are under your control: the device interfaces and platforms might change, new technology might arise, user interests might shift and so on. The modern world of online games is providing new possibilities for the design to be changed after the game has been published, but this also creates multiple consecutive design funnels with their respective design challenges.
Testing is important in order to make sure that the game you build is a meaningful and understandable experience for your players. You want to make sure that you actually reach your intended experiences – or bring other value to your fans. Testing practices vary from one company to another, and the approach to testing can also take different forms depending on the stage of development. Typically in the beginning of development, the game is constantly tested by the developers themselves, but the further you move, the more you need to test the game also with outsiders. It is important to also note that testing the game with players external to the development team should not be pushed too far in the schedule when there is no more time for design iteration based on testing feedback, or when important changes are hard to make.
In reality, iterative processes can take different forms and can also be more chaotic than the textbooks of game development might make you think. In order to maintain this chaos, many game companies use some kind of Agile method, their own version of Scrum, for instance. The most common practice is to have frequent face to face checkups of what each person in the team is working on, how long it will take, and what kind of challenges they have faced. The design is then changing based on if the team was able to execute the vision in the planned way – or need new direction or solutions to beat the current challenges.
The iterative process cannot be avoided, but each iteration costs time and money, which is a crucial constraint to take into account in a commercial game production process. Looking at other games and benchmarking your design instead of coming up with everything through exploration is therefore important. Experienced designers also have more design gambits up their sleeves, and can sometimes foresee whether features will work or not. If you are not that experienced, or the genre is new to you, there are more iteration loops that you might have to go through. The more conventional the design is, the more existing design knowledge there is to draw upon. In experimental games the iteration loops, exploration, and early user exposure, becomes even more important.
It is very rare that you go through your design process with very little iteration, so it is always important to make sure that there is enough time planned for the production. If you are not skilled at estimating how much time something will take, you can train this ability for instance by attending very short game jams. Smart project management is crucial for making sure you finish your game on time: when you or your team mates estimate how much time something will take, you can almost always multiply this estimation – there will be many unknowns on the way.
In summary, iteration cannot be avoided. Even simple games require iterations, and sometimes even more since simplifying a design is far from easy. It is a commonly held opinion among game developers that it is much easier to just add features than to remove them when facing a design problem. Beware of such “feature creep”, as it rarely fixes the original problem in your design.
Learn more from:
Kultima, A. (2015) Developers’ Perspectives on Iteration in Game Development. In the Proceedings of the 19th International Academic Mindtrek Conference. (Author’s copy available here)
Fullerton, T. (2008). Game Design Workshop, Playtesting and Iterative Design. pages: 248-249.
Keith, C. (2010). Agile Game Development with Scrum. London, UK: Pearson Education.