ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
635 stars 74 forks source link

[TF2] MvM scoreboard progress resets to current wave progress upon recording a demo #4963

Open KalleKokosnott opened 1 year ago

KalleKokosnott commented 1 year ago

The progress on the MvM scoreboard is mostly lost, if the client starts a recording of a demo. This bug applies to all of the players’ progresses on the scoreboard, but this is only seen by the client who starts the recording. This bug can be reproduced with the default HUD.

It is observed that the data (damage, tank damage, healing, support and money) from previous waves are lost, but not during a current wave. For example, if two waves are completed, and the third wave is either during the set-up time or ongoing, the data for the third wave will be kept, as the client starts to record a demo. If the client should record a demo after the third wave is completed, the data for those three waves will be lost. If no further interaction is made with recording, the tally will continue as expected and uninterrupted.

Though the bug will reset most of the scoreboard’s progress, it does not reset such as kills, kill assists and defenses, as shown in the video below. The video shows the scoreboard being affected by starting to record a demo, where the different score types are reset to 0. The Scout’s money on the scoreboard decreases from “378” to “5”, instead of ”378” to “0”, because the Scout picked up 5 credits on the ground after the wave was completed, thus the 5 credits count towards the current wave, which is during the set-up time.

https://github.com/ValveSoftware/Source-1-Games/assets/108532878/2c9ef8be-f105-4b68-9fb3-2388ce0f2335

Steps for reproduction:

  1. Observe the MvM scoreboard progress by holding Tab in-game.
  2. Start the recording of a demo via binds or the developer console.
  3. Observe the MvM scoreboard and notice the changes. If one should start the recording of a demo right after a wave has been completed, the data will be reset to “0”.

With this bug’s behaviour, it can also be used as a feature, for those who want to monitor their own/other’s wave-by-wave performance, as it wipes most of the data of the previous waves. On the other side, there are also people who record a demo to fix visual bugs due to lag, but don’t desire to have their scores reset.

jh34ghu43gu commented 1 year ago

This applies to all scoreboards (casual) because starting a demo is pretty similar to rejoining a server since everything is re-synced (which is why it fixes lag issues). The server will send out correct scores (ping and tour counts) but all the other elements are only tracked by the client for some reason; likely to keep packets small (probably wrong technical terms but this is the observed behavior).

A strong temporary disconnect will cause the same effect.

Considering the fix is (probably) to have the server send out all that info, and mvm servers already semi-struggle (demoknight spawns go brrr), and this information isn't that important, I don't think this is a necessary fix.