Brett Vickers is team lead for the game content programming team at ArenaNet. He is instrumental in developing the company's code and asset management infrastructure.
ArenaNet was established in 2000 by three key members of the Blizzard Entertainment development team. ArenaNet's mission is to create a state-of-the-art, interactive game network, and to design and publish premier multiplayer online games for dedicated game players.
In December 2002, ArenaNet was acquired by NCsoft Corp., the world's largest online game company.
ArenaNet's first title, Guild Wars, was released on April 28, 2005 and became an instant number-one seller around the globe. More than one million copies have been sold, and the numbers continue to increase. Guild Wars is a competitive online role-playing game that rewards player skill more than time played. Players explore a rich fantasy game world, acquire skills, build personalized characters, and compete in head-to-head guild battles with players from around the world.
ArenaNet followed up with a new campaign, Guild Wars Factions, which was released in Spring 2006.
Guild Wars was developed over the course of five years. Because of the extraordinarily large size of the project—consisting of millions of lines of code, hundreds of design documents, and thousands of individual art assets—the key challenge to ensuring a smooth development process was to keep track of each file's complete change history.
The Solution: Perforce Provides Complete and Fast Asset Management
ArenaNet chose the Perforce SCM System to manage and store virtually every one of Guild Wars' assets.
Perforce ensures that all assets are reproducible and traceable. Users can revisit and reproduce any past version of the software or asset under Perforce's control, and use any version as the baseline for patches or new development.
"When a problem arises with a given file," said Vickers, "we use Perforce to trace file histories and find out who to contact in order to correct the problem."
Developers can also easily call up old versions of a file, or compare two revisions of a single file.
"Dozens of ArenaNet employees use these Perforce features on a daily basis to improve their productivity, reliability, and communication," said Vickers. "Even with Guild Wars' huge database of art and code, users are able to synchronize their local files with Perforce's database in a very short amount of time."
Perforce Appeals to Both Programmers and Artists
Perforce provides a number of client interfaces, two of which are widely used across the Guild Wars team. Programmers heavily use the command-line interface for everyday tasks such as editing files and submitting changelists, as well as for more esoteric tasks such as batch automating complex processes. Artists and designers, on the other hand, tend to use the P4Win graphical user interface for most Perforce tasks.
The team also relies on a proprietary "build server" that generates new versions of Guild Wars executables and DLLs for both the client and servers. The build server uses the Perforce command-line interface to manage tasks such as checking out the current code and art, labeling new builds, and checking in code that's modified during the build process.
The Guild Wars Team Relies on Perforce's Powerful Parallel Development
"Parallel development is essential to the effectiveness of our development team," Vickers said. "This is especially true for our programmers, who are often working on different sections of the same files."
When file conflicts arise, Perforce provides the necessary tools to resolve them quickly and easily.
Perforce's Branching Model Makes Multiple Releases and Multileveled Development Lines Traceable
The development team also makes heavy use of Perforce's branching and integration features. At any one time, there can be several active code and art branches: one for development, one for the current version of Guild Wars that's running live, and another for testing changes that are about to go live.
"Perforce has made it possible for us to develop in separate branches without losing track of the full change history of each file," explained Vickers. "It has also allowed us to seamlessly integrate changes from one branch—for example, the testing branch—into another, such as the live branch."
Perforce's change-oriented model, complete with atomic change transactions, ensures that the overall history of the source code moves forward in a traceable, understandable process.
"Perforce plays an instrumental role in the release and ongoing development of Guild Wars," Vickers concluded. "Perforce is a great product, and our entire programming team, many of whom are SourceSafe refugees, is as enamored with Perforce as one can possibly be about SCM software."