When a company is one of the world’s biggest independent games developers, with sites and teams spread across the world, keeping track of the sheer volume of code and other assets is no mean feat. However, Kuju manages to keep on top of all this and still react rapidly to a continual cycle of deadlines by using software configuration management to integrate and manage projects.
Since joining Kuju in the ‘90s, technical director Adrian Hawkins has seen how SCM has become an essential part of the video games industry by helping developers to stay informed about all aspects of a particular project. At the same time, SCM takes a great burden off their shoulders by managing and versioning the majority of source code, documents and assets, regardless of the scale or complexity of the game involved.
With ten sites across the globe and approximately 400 staff, Kuju is certainly a large-scale operation – especially when the studios are as diverse as the likes of doublesix and Zoë Mode, each with different focuses and objectives.
The scale of Kuju’s business success brings its own challenges, says Hawkins. “Our development teams can be quite
dispersed. In one recent example, we spread product development across five different sites. Then, on any one site, we’ll have multiple products being developed and teams often need to collaborate on common code bases.
“Also, like most of the industry, we work under development contracts that have monthly milestones which we must meet in order for our customers – the publishers – to pay us. In addition to the target of shipping the game, these regular milestones represent time pressures to complete tasks and deliver builds, so the underlying software platform cannot be unreliable. It has to work smoothly.”
When Hawkins first joined the company, all code and assets had to be integrated manually, which could easily consume whole days. “As soon as we started using SCM, we had immediate productivity benefits,” he explains. “For instance, as source code can go through a lot of iterations and some code needs to be shared by multiple teams, numerous variants of common code can exist. Digital asset databases can be very large too, and need to accommodate contributions from external resources. SCM is vital for managing these issues.”
For the past five years, the SCM tool of choice for Kuju is Perforce, exclusively for source control and often for asset management too. Aside from its scalability and ability to handle large data sets, Hawkins cites the Perforce Proxy as particularly useful for the company. A self-maintaining proxy server that caches versioned files for re-use on any local network with remote access to the Perforce Server, any number of proxies can be quickly deployed without requiring additional hardware or software.
“The Perforce Proxy functionality has been pretty key for us in managing dispersed development. It gives us better network utilisation, better response time for end users and minimises the manpower and costs that we would otherwise have had. It would be much worse if everyone was running their own local source control server and we then had to pull all that code together by hand.”
The ability to have a visual representation of the branching feature within Perforce has also proved its value to Kuju. “Because of the way we work, we may need to share code across teams, but local teams may need to vary that code – so we could have lots of code that is very similar but with slight variations. The Revision Graph tool enables us to visualise who has changed what on different branches: imagine a sideways tree. We can not only see changes to code, we can view how the code was integrated back again. The Revision Graph gives us a map and shows how all the code ties together.”
Furthermore, Kuju has taken the benefits of SCM one stage further by building its own set of technology around Perforce, using the available APIs, adds Hawkins. “Comprehensive asset management is very important to us. Custom art – which is often stored in the same repository as code – represents a lot of files. So, to support our custom art production pipeline, we’ve built more advanced search functionality on top of Perforce. It means we can have metadata-based searches on assets in our database for game specific information.”
One thing is clear: Adrian Hawkins views SCM as an integral part of how he and his colleagues work. “Perforce has become a core part of our standard suite of development software. Today, it would be unthinkable to handle source control manually because of the size and dispersed nature of our organisation. We’re confident that we have a platform that will continue to scale to meet future challenges.”
Adrian Hawkins’ top tips for SCM
Explore SCM’s features:
“Don’t just think of it for checking stuff in and out. Take the time to look around your SCM system and
find out what else it can do.”
Use SCM to help manage dispersed development: “Proxies simplify integration of dispersed sites, thus
reducing manpower and associated costs.”
Take your SCM to the next level:
“Use the APIs provided to enhance and tailor your SCM system to match your company’s specific needs.”