So this is some thing that Has bugged me for some time now. But multiplayer(MP) has gone wonky in SP1 HF3. Now I dont mean to say that the servers are screwed up, I mean to say some thing in the game code just isn't working right.
Pre SP1 HF3 on TRS12 build 49922 mp worked 90% of the time. We could run trains with the few minor locked turnouts. Pings where in the 100ms to 300 ms but things where fine. Rarely would you see any thing strange happen.
Now with SP1 HF3 build 58414 we have some cool new features. CMTMS works 90% of the time in MP. But MP its self seams to have taken a big hit, working maybe 60% of the time the way it should be.
Now what going on to reduce the user experience to only 60%? Well, ghost trains. These are those pesky trains that come flying down the tracks at around 600mph to 2000mph. They never derail, clicking on them some times fix's them and shows you where they are at. But lots of times they hit your train and send you flying down the track, some times even off the end of the track as you helplessly hit the breaks.
What causes ghost trains? I dont know, but I have a theory. I think, and this is just my best guessing, that it has to do with the way the MP session loads. For the rest of this paragraph, I'm just using my best educated guess as to how Trainz works. When the player first joins a session Trainz loads it as if they where loading the session in a single player mode, with all the rolling stock at the location that it was placed in when the session was crated. Then during the "Loading Network Data" Trainz moves all the cars from their start location to its current location based on the Host PC. Now rather then 0-5-0 the cars there, picking the car up off the track and placing it back down where its supposed to be at, the game runs the car there. Moving the car at hundreds of miles an hour to its location. And this is where I think things get messed up. Some times Trainz might not know where a car needs to go, so the cars keep screaming down the track until a player clicks on them and it remembers where they need to be, or they hit a player and cause a derailment. Now things that might cause Trainz to forget where a car is supposed to be at could be any thing form a lost data packet. Or cars that have derailed and Trainz doesn't know what to do with car that is, on the host end, gone from the world but on the player end still there.
Now if all that speculation is true, then there are a few things that could be done to help hopefully fix this.
First off, a button could be made that could instantly kill your velocity. A sort of supper emergency stop. This could be used in those instances where a ghost train hits your train and sends you flying down the track.
Second, the way MP data is handled and car location handling could be tweaked. Now, once again I dont know how the system works under the hood, but a table could be made some place that would store data for all cars on the route. This table would be updated every few seconds. The table would include: car location, car speed, car load, and any other data that might be needed. The host would have the master table, and new players would update their table to the host when joining. Each time the table updated on the host end, it would check to make sure all the player tables matched. If a player table was miss matched and out of date, then it would be updated. When ever a car was removed form the rail road ether by portal, derail or deleting, it would remain on the table but marked as "Delete." When a new player's game would go to update the table if it saw a car marked as "Delete" then it would remove the car from the joining players game. When a player joined a session all cars on their end would be temporally deleted, then replaced at the location marked in the car location table that they got from the host.
With this idea in place, I think the number of ghost trains, and other strange things that have started to happen might go down.
Pre SP1 HF3 on TRS12 build 49922 mp worked 90% of the time. We could run trains with the few minor locked turnouts. Pings where in the 100ms to 300 ms but things where fine. Rarely would you see any thing strange happen.
Now with SP1 HF3 build 58414 we have some cool new features. CMTMS works 90% of the time in MP. But MP its self seams to have taken a big hit, working maybe 60% of the time the way it should be.
Now what going on to reduce the user experience to only 60%? Well, ghost trains. These are those pesky trains that come flying down the tracks at around 600mph to 2000mph. They never derail, clicking on them some times fix's them and shows you where they are at. But lots of times they hit your train and send you flying down the track, some times even off the end of the track as you helplessly hit the breaks.
What causes ghost trains? I dont know, but I have a theory. I think, and this is just my best guessing, that it has to do with the way the MP session loads. For the rest of this paragraph, I'm just using my best educated guess as to how Trainz works. When the player first joins a session Trainz loads it as if they where loading the session in a single player mode, with all the rolling stock at the location that it was placed in when the session was crated. Then during the "Loading Network Data" Trainz moves all the cars from their start location to its current location based on the Host PC. Now rather then 0-5-0 the cars there, picking the car up off the track and placing it back down where its supposed to be at, the game runs the car there. Moving the car at hundreds of miles an hour to its location. And this is where I think things get messed up. Some times Trainz might not know where a car needs to go, so the cars keep screaming down the track until a player clicks on them and it remembers where they need to be, or they hit a player and cause a derailment. Now things that might cause Trainz to forget where a car is supposed to be at could be any thing form a lost data packet. Or cars that have derailed and Trainz doesn't know what to do with car that is, on the host end, gone from the world but on the player end still there.
Now if all that speculation is true, then there are a few things that could be done to help hopefully fix this.
First off, a button could be made that could instantly kill your velocity. A sort of supper emergency stop. This could be used in those instances where a ghost train hits your train and sends you flying down the track.
Second, the way MP data is handled and car location handling could be tweaked. Now, once again I dont know how the system works under the hood, but a table could be made some place that would store data for all cars on the route. This table would be updated every few seconds. The table would include: car location, car speed, car load, and any other data that might be needed. The host would have the master table, and new players would update their table to the host when joining. Each time the table updated on the host end, it would check to make sure all the player tables matched. If a player table was miss matched and out of date, then it would be updated. When ever a car was removed form the rail road ether by portal, derail or deleting, it would remain on the table but marked as "Delete." When a new player's game would go to update the table if it saw a car marked as "Delete" then it would remove the car from the joining players game. When a player joined a session all cars on their end would be temporally deleted, then replaced at the location marked in the car location table that they got from the host.
With this idea in place, I think the number of ghost trains, and other strange things that have started to happen might go down.