Grand Theft Auto: San Andreas Q&A - Under the Hood
The developers at Rockstar North fill us in on what's new and what's different in the PC version of last year's top-selling video game.
GameSpot may get a commission from retail offers.
After outselling Halo 2 to become last year's hottest video game, Grand Theft Auto: San Andreas is heading to the PC next week. And don't be surprised that the PC version looks a lot better than the PS2 version, as the game has been modified to take advantage of the PC's strengths, such as larger memory capacity, higher-resolution graphics, and more-powerful hardware. This means that you'll be able to play as CJ, the protagonist in San Andreas, in sharper detail than before, as you explore the different cities of the game and live the '90s gang life in high style. To give us the lowdown on some of the new modifications in San Andreas as well as those made for the PC version, we caught up with several of Rockstar North's development team. Also, take note that we'll have the second part of our Q&A this Friday.
GameSpot: How was the Vice City engine changed to allow for the much larger world map in San Andreas while still getting completely rid of the loading times for the world area?
Obbe Vermeij: A completely new level of detail system was implemented whereby a number of models (buildings) can share a single low-detail model. This way, the low-detail models could be loaded as the player moves around the map as opposed to in one go as the player moves between islands, like in Vice City.
GS: With this new, streaming map, is there any limit to the size that the world map can be? What creates this limit if there is one?
John Whyte: There are always limits! There are limits to the number of objects that can be in any section of the map, and this determines more than anything the density of objects in the game. Some of the city sections have effectively maxed out the game in its current form. If we wanted to increase the density of objects, then we would have to go back to the code and rewrite it to handle much larger numbers. (Technically speaking, there are a lot of structures in code that rely on 8-bit indexing to save space.)
GS: With the rampant rumors of "Bigfoot" running around in the game, is there a way to control the probability that an event will appear? Can a single event be scripted to occur extremely rarely, say once a year?
JW: That's a good idea! But I'm afraid there isn't any way of the scripts identifying the date and creating events that are scheduled like this.
GS: What is the estimated real-world scale of the game? How big is San Andreas in "real" terms?
JW: The map is 6 by 6 kilometers or 36 million square meters. That's just the outside map and doesn't include the interior locations in the game, of which there are many. On top of that, the player is not restricted to the populated area of the map. The player can take a boat or plane and travel in any direction as far as he or she may want.
GS: How many objects (cars and pedestrian-type things) are or can be active at any one time? Is this number increased in the PC version from the PS2 version?
JW: Definitely. The PC version has a further clip distance so more of the map is always visible, and the map has a lot of the detail that had to be removed from the PS2 version to get it to fit in the smaller memory footprint. The clip distances for cars and pedestrians are increased, as well. We have to draw these things further out because the PC will run at a higher resolution. In total, this means that the PC is pushing around a lot more than the PS2.
GS: How has the scripting engine changed since Vice City? How has it improved? What are some of your favorite new features?
Chris Rothwell: Our dedicated team of programmers are always continually striving to improve feature sets, efficiency, and usability of the scripting engine throughout the development of the GTA series. Although fundamentally the scripting language and engine hasn't changed much since it was used to make GTA3 five years ago.
Since Vice City, numerous improvements have been made to make scripting more powerful, such as the addition of arrays, switch statements, sequence tasks for character artificial intelligence, and uncountable game-specific commands. A favorite tool that was added during San Andreas was the ability to record cars' positions while driving them around the city in the game, then being able to replay these car recordings in real time during a mission. This enabled us to really polish and improve our on-rails missions and scripted cutscenes.
A lot of the new gameplay features in San Andreas were only made possible by these advancements in the scripting language. For example, the 2D-based casino and console games weren't viable in Vice City until a host of heads-up display sprite commands were added during the development of San Andreas. There were also very few custom animations used during missions in Vice City, but for San Andreas we had a brand-new animation scripting interface. This system allowed the designers to implement animation-heavy gameplay coded entirely within the scripting language, such as in the pool game, the basketball odd job, the parachute, and in numerous other areas.
The Many Forms of CJGS: What can be scripted in-game? How are the scripts managed?
CR: The GTA scripting engine is incredibly powerful and flexible, and within the game there is very little that cannot be affected, altered, or modified by script. In theory, nearly any genre of game could be made using the GTA engine without a single change to the executable just by adding new scripts and art assets.
We have an overall governing script we call the "main script." Among other things this main script keeps track of your progress in the game, then loads and launches a mission script when you step on a mission trigger or start one of the odd jobs. Only one mission script is in memory and running at one time. In addition to the missions we have ambient scripts resident in memory throughout the duration of the game that keep track of a wide variety of in-game systems. Examples of these are the mobile phone, stunt jumps, and shop interface scripts. Another type of ambient script streams in and out of memory as the player moves around the map. These would be used for location-specific encounters or attached to the various usable objects around the map like the crane or vending machines.
GS: Will you be allowed to reskin the main character the way you were able to in the PC version of Vice City?
JW: Reskinning is a much more complicated task in San Andreas. This is because the model for CJ has three variations (normal, buff, and fat, depending on gameplay), and the clothes for the model have to be put together item by item because you have full control over CJ's wardrobe. It can still be done, but will probably require some custom tools to be usable.
GS: If you are able to do the reskinning, how will the player as well as the artist deal with the fact that the character model can change shape greatly during the game?
JW: By trial and error!
GS: What kind of polygon count can the graphics engine output? Is this an increase from Vice City? How was this increase accomplished?
OV: The rendering code generally has been given a big overhaul. Improvements have been made in the culling techniques that stop things from being rendered when they are not visible onscreen. The resulting higher frame rate, in combination with tons of new effects, gives the game a smashing new look.
GS: How were the texture assets managed between all the versions so that the textures could be the same as in the PS2, yet be so much more sharp and detailed on the PC?
JW: The textures were all originally created at their highest resolution and then cut back for those platforms that didn't have the memory or performance to handle it.
GS: How are the reflections handled when projected onto the side of the cars and shadows onto CJ?
JW: Shadows are a mixture of shadow buffers and shadow volumes to get the results we wanted. Unfortunately, it is difficult to get a consistent look with them when mixed. Reflections on cars were being done at one point by environment--mapping the contents of the screen buffer onto the car with a low alpha. But it didn't look right in some cases so we took it out.
GS: Why do you use Z-buffers instead of binary space partition fields for texture laying?
JW: A lot of the code in San Andreas is done in a particular way to keep it closely in sync with the console versions, otherwise it would have taken a lot longer to finish! On the consoles we have to rely a lot more heavily on the graphics hardware to do things, rather than being able to process through the CPU.
GS: Thank you, guys. It was enlightening.
Got a news tip or want to contact us directly? Email firstname.lastname@example.org