Software
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.
![]() |
|
![]() |
||
![]() |
||||
![]() |