Game crashes while saving large replays / replays become too large because of trains
Posted: 22 Jun 2017, 16:49
Because trains are saved as ghosts, replay sizes get very big.
I did some testing and found out that the equation for replay size approximately is: Replay size = Mapsize + (0.612 * n trains + 0.63) * replay length in seconds
One example for this: Mapsize = 1500 KB / n trains = 120 / replay length = 1 hour
1500 KB + (0.612 * 120 + 0.63) * 3600 = 268152 KB = 268.152 MB
This is already very bad because you can't really share your replay you got after finally having finished a map after 1 hour because it's too big (Maniaexchange only supports up to 10 MB replays and they probrably won't allow 200+ MB replays)
But it gets worse:
So I wanted to test if my equation was right.
After leaving my PC on for 1 hour on a map with 100 trains (100 trains isn't even a lot because every wagon counts)
my game just crashed when saving the replay manually. https://streamable.com/q7s6y
But it didn't autosave because I already drove a better time. (It probrably tried when it froze after I crossed the finish line)
So I wanted to find out if it's just going to crash every time you finish such a map on a server (offline autosave replays don't have train ghosts but online autosaves do and just getting rid of them isn't really a good solution)
And yes, it crashed during that freeze at the finish line...
Conclusion:
That the game crashes at such a high replay size is sort of understandable, but that the size gets so big isn't.
There has to be some optimization to train ghosts, like having only 1 ghost for all train objects or atleast only 1 ghost for every train chain.
In general it's weird that a simple wagon is the same size as a driven ghost: Train ghost = 0.612 KB/s - Driven ghost = 0.63 KB/s
Without the trains the 268 MB replay from my example above would be only 3.78 MB. It should get to a point where it's atleast under 20 MB.
The reasoning for my equation:
Going of the example of Marius89s MTC map (63 trains). Normal size of the map is 686 KB, the autosave of my pb which i drove offline has no trains and is 707 KB. Same run but saved normally is 5.097 MB. So the train ghosts make up 4.39 MB. The replay length is 1:53.80. So 4390 KB / 113,8 s = 38,576 KB/s. There are 63 train ghosts in the replay so 38,576 KB/s / 63 trains = 0.612 KB/s for 1 train. Normal run ghosts also increase by time. I found a 1:01:48 long replay which is 2.77 MB large. The map itself is 433 KB. So the run size is 2.34 MB for 3708 seconds. So 2340 KB / 3708 s = 0.63 KB/s (very close to 1 train per second).
Logcrash from saving a replay manually after finishing in local play
Logcrash from saving an online replay manually
Logcrash from the online autosave crash
I did some testing and found out that the equation for replay size approximately is: Replay size = Mapsize + (0.612 * n trains + 0.63) * replay length in seconds
One example for this: Mapsize = 1500 KB / n trains = 120 / replay length = 1 hour
1500 KB + (0.612 * 120 + 0.63) * 3600 = 268152 KB = 268.152 MB
This is already very bad because you can't really share your replay you got after finally having finished a map after 1 hour because it's too big (Maniaexchange only supports up to 10 MB replays and they probrably won't allow 200+ MB replays)
But it gets worse:
So I wanted to test if my equation was right.
After leaving my PC on for 1 hour on a map with 100 trains (100 trains isn't even a lot because every wagon counts)
my game just crashed when saving the replay manually. https://streamable.com/q7s6y
But it didn't autosave because I already drove a better time. (It probrably tried when it froze after I crossed the finish line)
So I wanted to find out if it's just going to crash every time you finish such a map on a server (offline autosave replays don't have train ghosts but online autosaves do and just getting rid of them isn't really a good solution)
And yes, it crashed during that freeze at the finish line...
Conclusion:
That the game crashes at such a high replay size is sort of understandable, but that the size gets so big isn't.
There has to be some optimization to train ghosts, like having only 1 ghost for all train objects or atleast only 1 ghost for every train chain.
In general it's weird that a simple wagon is the same size as a driven ghost: Train ghost = 0.612 KB/s - Driven ghost = 0.63 KB/s
Without the trains the 268 MB replay from my example above would be only 3.78 MB. It should get to a point where it's atleast under 20 MB.
The reasoning for my equation:
Going of the example of Marius89s MTC map (63 trains). Normal size of the map is 686 KB, the autosave of my pb which i drove offline has no trains and is 707 KB. Same run but saved normally is 5.097 MB. So the train ghosts make up 4.39 MB. The replay length is 1:53.80. So 4390 KB / 113,8 s = 38,576 KB/s. There are 63 train ghosts in the replay so 38,576 KB/s / 63 trains = 0.612 KB/s for 1 train. Normal run ghosts also increase by time. I found a 1:01:48 long replay which is 2.77 MB large. The map itself is 433 KB. So the run size is 2.34 MB for 3708 seconds. So 2340 KB / 3708 s = 0.63 KB/s (very close to 1 train per second).
Logcrash from saving a replay manually after finishing in local play
Logcrash from saving an online replay manually
Logcrash from the online autosave crash