What grid sizes can we expect in Gran Turismo 7? (32 players to a grid is possible!)

  • Thread starter sk8er913
  • 112 comments
  • 6,575 views

How big of a grid would you like to see in GT7?

  • 32

    Votes: 76 46.3%
  • 24

    Votes: 53 32.3%
  • 19.7

    Votes: 20 12.2%
  • 19

    Votes: 1 0.6%
  • 16

    Votes: 12 7.3%
  • 12

    Votes: 2 1.2%

  • Total voters
    164
4,101
United States
California
Sk8er913
There has been a lot of speculation about an increased grid offline for GT7, because of the PS4s increased processing power. Also many of us would like to see an increased amount in online lobbys. So I will build a hypothetical network and the stresses that it would place on a network.

Internet connection target, a normal minimum developers seem to use is a low end DSL connection well say that it has these speed constraints:
Download:156KBytes/s
Upload: 78KBytes/s
Ping: 175 Ms


Things that need to be communicated between players in a network.

3 position axis, XYZ. Probably uses 16 values of accuracy for each one. So a hypothetical position could be 53,050.1234567890, 53,050.1234567890, 53,050.1234567890

That is 48 bits of information, but they also have a name attached to them well call them Pos-X: Pos-Y and Pos-Z. That is an extra 18 bytes of information, so we can reasonably communicate where a car is located in approximately 66 bytes of information, however this needs to be updated to make the car move a reasonable speed to update would be 30 times per second since the game is 30 FPS (probably).

Position will use 720 Bytes of data per second


3 rotation axis, same as position

To save space since rotations don't have to be as accurate and have generally smaller numbers than position so we can use 8 values of accuracy for rotation instead of 16. This saves us 3 Bytes per packet! Making our rotation packet size a small 21 Bytes.

Rotation will use 630 Bytes of data per second




We're not done yet, we still need information on throttle input, steering, brake input, gear selection, lap times, sector times, current speed, tire condition, fuel amount, and what player it is.

Thr: 8bit val = 5 bytes per FPS = 150 Bytes
Brk: 8 bit val = 5 bytes per FPS = 150 Bytes
Str: 8 bit val = 5 bytes per FPS = 150 Bytes
Fuel: 8 bit val = 6 bytes per second (Per FPS sounds excessive.)
TireC: 8 bit val = 7 bytes per second
Gear: 8 bit val = 6 bytes per FPS = 180 Bytes
Spd: 8 bit val = 5 bytes per FPS = 150 Bytes
Sect: SectX + time = 8 Bytes per section (I think?)
LapT: Time = 6 Bytes per section




We need to know what car they are in right?
An efficient system could possibly only use 5 bytes per fps per category.

Car knowledge will use 1800 Bytes of data per second




That is for a 2 person lobby. Lets add it up to see how much it stresses the internet. :D

720 + 630 + 450 + 13 + 180 +150 + 14 + 1800 /1000 = 3.957KB/s



Our bottleneck in the connection
is the upload speed of 78KB/s now that we know per peer we can figure out what the pressure on our host is. We can simply divide 78 by 3.957 to find how many players we can network together.


78/3.957 = 19.7 connections.

And we can't have 0.7 people playing so its 19. Which an increase from 16 to 19 doesn't sound like much fun. PD probably did the exact same test that I just did, and that's why our numbers were so close together. I think I may have been a little conservative, so 16 sounds perfect. If you want GT7 to have a 32 car grid. You better update your old DSL connections quickly, if you have a connection like our example here. :)





Day #2 Optimization and correction of errors made in the original post

Adding in RPMs,
apparently I accidentally forgot RPM, so I will add it now.

RPM: 8 bit val = 5 bytes of information, every FPS, that is 150 Bytes per second.


Optimization!


Do we really need to update position and rotation EVERY FPS? We have all of the components to drive the car already, so it's more of a correction thing. We could likely lower it from every 30 fps to every 10 FPS, and not notice any change in quality.


Position will use 240 Bytes of data per second instead of 720.
Rotation will use 210 Bytes of data per second instead of 630.

@daan questioned my use of car information per FPS. And why it was needed. It is actually player information, so that cars can be in different positions at the same time. And after thinking about it, it does not need to be updated every FPS per category, it only needs to be updated every update per category which saves us a lot of work.

Position updates 10 times = 50 Bytes
Rotation updates 10 times = 50 Bytes
thr, brk, and str update 30 times each = 450 Bytes
fuel, tires update 1 time each = 10 Bytes
Gear, Spd, and RPM update 30 times each = 450 Bytes
Sect and LapT = 10 Bytes in a rough second.

100 + 900 + 20 = 1020. MUCH BETTER THAN 1800!!!!!!!!

Over connectivity per player will be:
240 + 210 + 450 + 13 + 180 + 300 + 14 + 1020 /1000 = 2.427 KB/s

78/2.427 = 32.13 connections, BUT we want to have a little extra for features like text chat. And for players joining in the middle of a game. 24 Players is completely reasonable. 32 is also reasonable if the host has an upload speed higher than 78 KB/s
 
Last edited:
I don't see what's wrong with keeping it at 16. For GT7 I'm expecting either it to stay or an upgrade to 20 or 24.
 
I think it'll remain the same. Hell I wouldn't be surprised if it was cut down to 12 given the amount of useless gimmicks that tend to be thrown in, as well as other things that will murder the frame rate if they try to push 60fps again.
 
The poll says would you like not how many it's reasonable to be. But let's not get pedantic and stay focused.
Very interesting data, there is no way to compress it(or is it impractical, takes too much time)?
 
Why does each console have to be told what car you are in, every second?
So the game knows which player the information is for.

I don't see what's wrong with keeping it at 16. For GT7 I'm expecting either it to stay or an upgrade to 20 or 24.
Endurance races on large tracks like the nurburgring can get quite boring. I think they can upgrade to 20 or 24 without too much issues.
 
And if it's a one make race where everyone is in the same car?
If you didn't label which car it is, then every car would be in the same location. Its not to actually say what car you're driving. Its to tell the code which car is for which player.




I forgot RPMs... :P


@daan thank you for getting me to look at the way I carried player information it helped me out a lot. I was able to save nearly an entire Kilobyte!

@Shahar I just "compressed it" by being more intelligent about how I'm updating it, it is now about 40% more efficient!
 
Last edited:
Can the game send relative position? So the position change from something like 50,505.xxx to something like 10.xxx.
Then you can cut at least a byte of data representing X, Y and Z.
 
Can the game send relative position? So the position change from something like 50,505.xxx to something like 10.xxx.
Then you can cut at least a byte of data representing X, Y and Z.
It doesn't work that way. 8 numbers is 1 byte and 16 numbers is 2 bytes, and you can't change them on the fly. Unless you make a work around for it. But that would be a waste of processing power. Letters are 1 byte each so if you make the names shorter it will save data, I think.

Who uses the sig, "GTPlanets only XNA user?" They could review my fake code and make sure everything makes sense. :D

@RACECAR @Grandea GTR
 
Last edited:
I mean that position is a big number that takes at least 2 bytes ( to represent in the mantissa). No car can do more then 256 meter change in position in one axis per FPS. So you can send a 5 or 4 byte floating point number instead of 6 byte number.
 
Last edited:
Around 30 is fine.

I'm really hoping for large numbers in offline events too. Even if the AI quality isn't super intelligent, sheer numbers of cars to beat is always more fun.

The Sierra rally is a good example of this idea. At least 30 crazy rabbits to chase down. This would also be very welcome at tiered endurance events.
 
I mean that position is a big number that takes at least 2 bytes ( to represent in the mantissa). No car can do more then 256 meter change in position in one axis per FPS. So you can send a 5 or 4 byte floating point number instead of 6 byte number.

Its not a 6 byte number, Its a 1 or 2 byte number with a 4 or 5 byte name.


I meant 30 cars bud.
I think he meant for my OP

You say the game is 'probably 30fps' but historically Kaz has targeted 60fps whenever possible and has repeatedly stated that being his goal.
Then multiply everything by two it is pretty simple. But I remember someone doing a benchmark on GT5 or GT6 and it was 30 FPS... 30 FPS is already smoother than film quality. So there's not a huge importance to make it into 60.
 
Its not a 6 byte number, Its a 1 or 2 byte number with a 4 or 5 byte name.

I think he meant for my OP

Then multiply everything by two it is pretty simple. But I remember someone doing a benchmark on GT5 or GT6 and it was 30 FPS... 30 FPS is already smoother than film quality. So there's not a huge importance to make it into 60.
60 fps is the defacto standard target for all racing simulations. There is almost zero chance that GT7 will target anything but that.
 
Considering there are no other technical constraints, 32. The more, the better.
 
Again I'd suggest a separation between online and offline grid sizes as the two can potentially be vastly different as Project Cars illustrates.
 
Even though 32 would be entirely possible, I think Kaz and PD would be their traditional selves and keep it the same.
 
If you look at the car count for some of the bigger racing series, I think it shows 24 is the minimum to give them justice but 32 would be more ideal

43 - NASCAR
38 - Super GT
34 - TUSC
32 - WEC
30 - BTCC
25 - V8 Supercars
24 - Indycar
24 - DTM
20 - Formula 1
17 - WTCC
 
If you look at the car count for some of the bigger racing series, I think it shows 24 is the minimum to give them justice but 32 would be more ideal

43 - NASCAR
38 - Super GT
34 - TUSC
32 - WEC
30 - BTCC
25 - V8 Supercars
24 - Indycar
24 - DTM
20 - Formula 1
17 - WTCC
Nurburgring 24h allows 96 I think. :lol: Le Mans is 56.
 
Then multiply everything by two it is pretty simple. But I remember someone doing a benchmark on GT5 or GT6 and it was 30 FPS... 30 FPS is already smoother than film quality. So there's not a huge importance to make it into 60.

Gt5 and 6 both run 60fps. Only ever dipping into the 30s in extreme occasions. GT5 runs smoother some times due to lack of dynamic lighting, which does affect GT6's fps. GT6 seems to run smoother in the static city circuits, where it almost never dips below 60fps.



Check out Digital Foundry's other GT6 fps test videos to see where it does take a hit to the fps (biggest hit is in rainy conditions in more open tracks with more opponents where there is a bit going on.
 
Ideally, 24 online and 32 offline sounds like a good idea

I remember when I knew GT5 was going to get 16 cars on track, I was completely amazed, now it's just not enough and want more vehicles on track.
Lol 16 cars on track is amazing? 16 only works on tracks under 1.5 miles long. :P
 
If you look at the car count for some of the bigger racing series, I think it shows 24 is the minimum to give them justice but 32 would be more ideal

43 - NASCAR
38 - Super GT
34 - TUSC
32 - WEC
30 - BTCC
25 - V8 Supercars
24 - Indycar
24 - DTM
20 - Formula 1
17 - WTCC
Why not shoot for 43 offline then?
 
Back