When you integrate a project, it means taking a snap-shot of its current state and building it into a working piece of software. This can involve building the latest code base, the assets of the game and anything else that you might need. Continuous Integration (CI) is the process of building a project and its assets consistently throughout the day or at various points of the project’s life cycle.
It also means automating this process as much as possible.
These integration systems can come in all shapes and sizes, but regardless of what you do and how you do it, you should start to see the benefits very quickly and as you continue to develop it those benefits will start to become more and more pronounced.
In the first part of this series I looked at what a ‘standard’ development process would look like when CI wasn’t used. Before I move onto discussing the various systems used at Blitz Arcade, I wanted to cover what the ideal set of outcomes should be when a good CI system is in place.
- Because the project is being constantly built and integrated to different levels of completeness, defects in the code are found and fixed sooner. This reduces risk because the majority of the problems are fixed by the time build day comes around, rather than on the day itself.
- It becomes much easier to create complete builds of the project because they are done more often and usually on a daily basis rather than every two to four weeks.
- Most developers have their own setups on their machines. Because the build is done on a specific CI (or build) machine it reduces dependencies on specific hardware setups.
Reducing Repetitive Tasks
- Human error will always be a problem in manual systems and that is not going to change anytime soon. Putting the majority of what is usually the same process being run again and again in the hands of an automated system allows developers to concentrate on what they are good at – high-level tasks that involve making the game a better experience.
Generating Usable Software Continually
- At any point in time you can create a usable build meaning that designers and artists do not have to pester anyone for a new version. Depending on the type of system being run, a new build should always be available when needed and this will be as up-to-date as it possible.
Better Project Visibility
- You always have a good idea of the state and stability of the project meaning you know how long it will take to create stable builds, what the current problems are and where the issues lie.
- It increases confidence in the build and the project because you always have the latest build of the project to hand, not a half built, half up-to-date version on various different machines.
- This all allows you to make better decisions because you are more confident when you say how long it will take to implement new features, optimize the process or make staffing changes.
In the next part I’ll start to talk about the specific parts of the Blitz Arcade CI process, what we use, how it works together and eventually how it can be made even better.