How to create a race style progress system?

Hey,

I’ve got a racing game and I want to show the progress of all the racers on a straight progress bar.

The issue I’ve got is the competing racers can be anywhere from 50 to 50000 depending on the race you do.

I’m planning to have the other racers be phased out of existence unless you’re within a certain range to keep performance. But I will have to show essentially upwards of 50000 arrows. On the progress bar.

This has to be as ultimately performance friendly as possible, and can be as ugly as it needs to be to keep that.

Been trying to rattle my brain this morning on the most performance friendly way to do it but the sheer chaos of it is what I want to show.

Basically server already knows of each racers progress, if we sort things it can go sideways interms of performance. It can also go sideways if we query the server for biggest progresses. However server can always update the sort and you can query server for X entry relevant players.

Think getting 10 cars within range and directly accessing their tracking progress and showing those as sorted with a fixed interval is the best scenario.

Still I don’t understand why you have to show more than X number. Cause in terms of player UX player attention can be only focused to driving aspects at that moment and maybe some of the chasing cars at most. I don’t see any reasoning if the game is 2d or some other gameplay aspects that we/I am not aware of. If cars phased out (not relevant for player) why you show them in progress bar?

Still if so you have to show, you have to get the data with some steady rate which is a super big network cost you can open a thread with a que to update them when there is enough processing power and network with a low frequency sort.

Also using prediction for out of phase cars can be an option rather than getting data. The cars that is under a certain range can be predicted.

Also I don’t understand how you are going to visualize 50k lines in a screen that have limited pixels.
it its 1px lines.
50k lines in vertical is 50000px
I don’t know any monitor have that much pixels :smiley:

After race complete in stats you can query server to retreive sorted stats, display players own stats with in range of 10(1) (5+ 5-) or give option to expand all data etc.

If there is no networking included think the rate of update and chunks would solve a problem with a display like this

1 Like

Ah, I should have been more specific.

It’s significantly more basic offline game style. Simply mostly a side scroller like older flash style games.

So they’ll be a bar at the bottom to show where everyone is (eg.1) Or there could be some type of holographic minimap that floats around that you could spin or something and see where everyone is on the track.

And then on the screen you’d have the visuals of what you have to do and change.

It’s more of a management style game than a racing game.

Something like this xD excuse the graphic lol

The little grey dots being the other cars, but there could be thoursands of them.
Ive read up on bucketing, so if 10000 cars are all pushed up together maybe show them as one icon and show a number. And when you get close to them it expands out or something.

Another option is something like draw on hud. But Again Im a bit lost where to start with that.

UPDATE:

Oooo what about some sort of niagara system with emitters? And i sepereate up the grey dots like those donky races…?

You can do with Niagara beams, umg.

You need optimize though as mentioned before to the range of player is currently in. + - distance ot time.

In terms of reability have to be like that , for the cars ahead you can use a single indicator showing number of cars ahead also same for behind since its multiplayer these data have to be sent as performant as possible.

This is basically a racing manager sim I feel , you can network client relevant data.

Unreal network updates also work same way what is close to player or not and doing things with nosql is way to go in this cause no db is match in that terms

1 Like

It’s totally offline. Would unreal/steam still need multiplayer functionality? Hell, Ive only got like 5 friends xD. I don’t think I could even summon 20 people online :joy:

At the moment what I’m doing is, Is positioning the camera when the race begins in a specific way, and then having the player progress bar at the bottom with the players Icon being a drawn widget or something(I havent planned how to make the player stand out yet),

then firing the Emitter with 10 to 50000 particles. Ive slightly offset them to make them stand out and then having the start and stop points go across the screen inline with the progress bar.

Thinking about it as well. I could probably change the camera at the start to orthographic so It sits flat instead.

I can fire this 50k emitter off a bunch of times in a row, and it doesn’t seem to make my pc explode, so thats good.

I wonder if I can get the information from each particle and then the float value of distance covered, I can relate that too the players float to show the real time position in the pack.

allright maybe i asusumed its multiplayer. Much better if its not.

As mentioned you don’t have to show 50k particles its just a waste of performance also just a distraction for player.

Just show closest 15 cars data as particle
make an indicator right showing how many ahead
make an indicator left showing how many behind (besides 15 particle)

I wouldn’t have done this with niagara just use an UMG UserWidget. It would be easier to access each subwidgets data distance etc.

goodluck

1 Like