configuration management systems, more commonly referred to as source-control
systems, are a necessity in today's software development projects. With
a complex 3D game engine being developed simultaneously for three different
platforms in quarterly release cycles, engineers at Lithtech wanted an
industrial-strength but simple-to-use tool. The product that was deemed
best suited to our particular demands was Perforce, which happens to be
both the name of the product and the company that creates it.
Because we are developing an engine for multiple platforms, it's a requirement that any source-control system be multi-platform. Perforce handles this in spades, as the list of supported operating systems is quite impressive. The Perforce server runs on Unix or Windows NT, and client programs are available for most flavors of Windows, Unix, Linux, Macintosh, QNX, BeOS, and OS/2.
Fortunately, just because this is a cross-platform product doesn't mean you have to suffer with an antiquated command-line interface. While there is a command-line client available, most users will be using the Windows-native (P4Win) or web-based (P4Web) user interface, greatly reducing the learning curve. The Windows UI is comparable to many other source-control products, both in functionality and in ease of use. The main window is split three ways, with the file tree displayed on the left, a multi-function display area on the right, and a scrolling status window on the bottom.
Perforce is available with a Windows native (P4Win) or web-based (P4Web) user interface
While the Windows client is a huge step up from a command-line interface, there are a few annoyances, as well as some obvious holdovers from Perforce's command-line heritage. When setting up client information, paths connecting the file depot (the database) and the local hard drive must be set up in a nonintuitive command-line fashion. The worst part of this is that Windows users may not be aware of the fact that Perforce treats all directories and file names as case sensitive, an obvious requirement for Unix and Linux development. But there are no clues for the hapless Windows user as to why the paths they're typing in don't seem to work.
But despite a few small nitpicks, Perforce really shines where it counts. File operations are blazingly fast and the database is reliable and space-efficient. In addition, Perforce works in a different manner from simple file-based systems. Files are grouped together in numbered "change lists" consisting of modifications, additions, and deletions of individual files. This makes it easy to track single feature-based changes or bug fixes instead of having to scan the entire database for similar check-ins.
In addition to a friendly Windows front-end, Perforce has several other options for use. It integrates with Microsoft Visual Studio, Metrowerks' Codewarrior, IBM VisualAge, and others for quick access to basic functionality from within your work environment. It has a clever web-based interface as well, meaning that it supports nearly every platform that can display a web page. Frankly, I haven't used the web interface for any real work, but I did check out a sample database on Perforce's web site, and it seemed fairly simple to use. The integration with Visual Studio is generally solid, but there are annoyances here as well. Perforce insists on altering project and workspace information when no changes have been made, and clicking through warning dialogs becomes tiresome.
Overall, despite some minor issues, Perforce is a robust and solid-performing source control tool for game developers, particularly if you have multiple projects with shared code or do any sort of cross-platform development work. Perforce is $600 per user for 20 or fewer users and costs less with more seats purchased.
$600 per user for 20 or fewer users, less with more seats purchased.