GTA: Streaming

3 min read
24 November 2023

The hardest technical challenge to solve during the development of gta3 was the streaming. Streaming involves loading and un-loading models as the player moves over the map. The streaming was coded by Adam Fowler.

When we started out with gta3 the hope was that the entire map would fit in memory. The map would simply be loaded at the start of the game.

Memory was limited on the PS2 and the artists were forced to reduce the texture sizes and to re-use textures everywhere. This resulted in the city looking bland. They eventually asked Adam whether he could develop a streaming system.

The idea of streaming is to load the map only around the player. As the player moves, the models for nearby models are loaded from the CD into memory and buildings that are now far away are removed.

Streaming is also used for vehicle models, pedestrian models, sound effects, music and scripts but the map posed the greatest difficulty as this involved more data than everything else combined.

Unfortunately the CD was quite slow in loading the models. The loading speed depends on the location of the models on the CD (the track). Models that are close together are loaded quickly but models that are far away are slow. (This is because the CD needs to accelerate/decelerate as the head moves to a different track). This is causing a lot of the sounds coming from the CD drive when playing gta.

Adam spent a lot of time ingenuously moving the models around on the CD. The idea was to place models close together in the CD if they were also close together in the world.

Even after all these optimizations, streaming was still not fast enough. You can literally think of it as a race between the player travelling and the streaming loading the models. At times the player would be too fast and the world just wasn't there yet. These problems seemed to get worse with older CDs.

If we couldn't speed the streaming up any further, we had no option but to slow the player down.

In Portland (first island in gta3) there used to be a big strip running all along the island. This was a worst case scenario. The player could go fast and there were loads of buildings to load. The streaming couldn't cope here. Eventually the artists had to change the layout and basically put a building on top of the strip. The player had to go around which would slow him down allowing the streaming to catch up.

Over time we identified other areas where the streaming was not coping and we would set up zones here. Within these zones we increased the drag (air resistance) on the vehicles a little. Maybe 5 or 10%. It was hardly noticeable but it helped.

In case you have found a mistake in the text, please send a message to the author by selecting the mistake and pressing Ctrl-Enter.
May I 63
Joined: 2 years ago
Comments (0)

    No comments yet

You must be logged in to comment.

Sign In / Sign Up

  • GTA: The trouble with cheats

    (Warning: techy) The cheats in the trilogy were activated by simply typing a sequence of characters. On PC the sequence would be something like ILOVESCOTLAND...

    May I · 24 November 2023 · 4
  • GTA: How does the weather work?

    Every in-game hour, the next weather type is picked from a table. The table is 40 (or maybe 34, can't quite remember) entries long. If it is raining now, it wil...

    May I · 24 November 2023 · 6
  • Fastest Cars In GTA 5?

    GTA 5 is one of those Rockstar's games that will not pass on even following 8 years of its delivery. Obviously, the story method of Fantastic Burglary Auto 5 is...

    Chris Jordan · 10 December 2022 · 179
  • Distractions: Agent & Z - GTA

    Making games is hard word and after a while you really want a change. After Vice City there was a sense within North that it would be nice to do something else...

    May I · 24 November 2023 · 2
  • GTA: Bugs bugs bugs

    During gta3 the game was buggy during most of its development. This happened because we started the game from scratch and also used a new rendering engine (Rend...

    May I · 24 November 2023 · 4