So last week I said that Grand Theft Auto V has amazing technology but frequently fails at game design fundamentals. A couple of people wanted to know more about what makes the technology so great. Okay then. Let’s talk about that.
What we’re not talking about is “graphics”. Lots of games have nice graphics. Many games look just as nice as GTA V in screenshots. Having nice graphics is always appreciated, but it’s not all that rare and it’s certainly not what sets GTA apart.
First, let’s look at what makes sandbox games hard in general before I talk about what makes GTA V amazing.
Games have assets. The 3D models that make up the characters in the scene. The textures that cover their surface. The animations that make them move. The audio files of all the dialog and sound effects. The scenery. The background music. This stuff takes up a lot of space. A typical game gets to have loading screens where the game unloads all the old stuff it’s not going to use anymore and loads in all the assets it’s going to need in the coming area. A sandbox game has to do that in real time, while you’re running around looking at other assets. It’s the difference between moving into an empty apartment and moving into an apartment while the previous resident is also moving out. It’s a lot more complex.
A non-sandbox game gets to put walls around the play area. The buildings in the distance can be simple boxes with nothing inside, because the player can’t jump over this one-meter hedge to reach them. You can have high-detail areas where the player will travel, and low-detail areas where they can’t. In a sandbox game, everything has to be done at the highest possible detail level because the player can go anywhere, and they will notice if they walk up to a building and it looks blurry and barren. Worst of all, the “play area” tends to be massive. So not only does everything need to be more densely packed with detail, but that detail needs to stretch to the horizon instead of just covering a small area.
A non-sandbox game can put walls in the way to block line-of-sight. If the game slows down when the factory and warehouse buildings are visible at the same time, the level designer can throw a wall or a hill between the two so the game never has to draw both at once. In a sandbox game, all bets are off. You can’t throw random mountains in the middle of a city, and urban buildings aren’t big enough that you can count on them to control lines of sight. Sure, if I’m standing right in front of the bank I can’t see the apartment buildings behind it, but if I drive one block away then the bank and apartments are both visible, and therefore the game needs to be able handle both.
A non-sandbox gets to have choke points where it can do background loading. (It’s like a soft loading screen.) Once the player enters the docks area, the game knows it’s time to load the inside of the warehouse where they will be going, and the designers can make the walk to the warehouse take long enough that by the time the player reaches it, all the loading will be done. In a sandbox game, all bets are off. The player might parachute in. They might approach fast-moving by vehicle. There aren’t predictable choke points where the game can safely add assets. The game basically needs to be able to load stuff at a moment’s notice, and it needs to keep stuff ready “just in case”.
What happens is that urban sandbox games end up relying heavily on Level of Detail. Every asset – every building, every car, every city block – needs to have multiple versions. One version of the corner store is a simple box that looks acceptable from a kilometer away. Another version has the proper shape of the building and looks okay from a hundred meters or so. Another version is the full-detail model with moving doors, stuff on the shelves, advertisements in the windows, and graffiti all over one side of the building. The entire game world ends up being one big loading zone where the game is constantly replacing low-detail stuff with high-detail stuff in front of you and doing the opposite behind you.
On top of all this, urban areas are the most challenging kind of environment to build. (The easiest is a tunnel, which is explains the popularity of corridor shooters and sewer levels.) There’s a lot of detail in a city, and that detail needs to be unique. A player won’t notice or care if half the trees in a forest are exact clones of each other, but they will notice if half the cars are the same. Or buildings. Or pedestrians. Aside from trees waving in the wind or flowing water, very little in a nature scene is animated. But a city has cars, people, animated signage, traffic lights, gates, and dozens of other things that are constantly moving and changing.
Okay, those are problems that a developer needs to solve if they want to make a garden-variety urban sandbox game: Mafia, Saints Row, Sleeping Dogs, etc. Here is what sets GTA V apart:
Grand Theft Auto V has a fanatical approach to fine detail and unique assets.
Like I said before, games have textures and models they have to load. Most games will try to reuse those as much as possible. There will be one standard street texture that ends up covering most of the drivable surfaces. There will be one sidewalk texture that gets repeated over and over, so most of the sidewalks are the same size and color of concrete tile. The doors and windows on one apartment will be identical to the doors and windows on an adjacent apartment. None of this is true for GTA V.
At one point I was driving around the city and (because I’m strange) I just had to pull over and look at the sidewalk. It was a huge field of unique information and I couldn’t see any repetition. At the corner were big tiles. Then some smashed and cracked tiles. Beyond that was an area where grass was growing up between the slabs. Then there was a section with bits of diamond plate set into the surface. Then there was a stretch where the tiles were a different size and shape. I walked the length of the whole block, and I didn’t see a single tile repeated.
The same is true of the streets. They could have just used basic blacktop and nobody would have complained about the lack of detail, but instead they went way beyond that. The road is a patchwork of different materials, with old construction scars visible in places. You can see the difference between the crumbling streets in the slums and the perfect streets in the Vinewood (Hollywood) hills.
Each area of the city has a large collection of unique inhabitants with their own sayings and behaviors. Gone is the feeling of walking down the street and thinking, “Oh, there’s that guy again. And I saw that same woman two blocks ago.”
This dedication to variety is everywhere: Dumpsters, store fronts, apartment windows, trash cans, newspaper boxes, abandoned furniture in the street, electrical junction boxes, litter, and dozens of other little details. Not only do they include details that most of us wouldn’t miss (I don’t think I’ve ever played an open world game and thought “this lack of electrical boxes is really taking me out of the game”) but they include a greater variety than any reasonable design document might call for. Forget the challenge of rendering all this stuff, I doubt any other studio could afford enough artists to fill in an entire city at this level of fidelity.
All of this makes the earlier loading problems that much harder to solve. A greater variety of street clutter means that much more stuff that needs to be loaded and drawn as you move around the world. And to top it all off, the world is simply gigantic.You could probably take the game world of several other urban sandbox games and fit them into the world of GTA V.
On top of all this, Grand Theft Auto V makes it all look so easy. You can drive – or even fly – around the world at high speeds without seeing the engine struggle to keep up. GTA doesn’t just give you a world with more detail than we’ve ever had before, but it does so without making a big deal about it.
(Assuming nothing major happens news-wise, next week I’m probably going to answer more reader questions. So send them to [email protected].)
Shamus Young is a programmer, critic, comic, and crank. You can read more of his work here.