Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TF2 x64] Migration off Pov-RECord (P-REC) #5457

Open
ldesgoui opened this issue Jan 29, 2024 · 0 comments
Open

[TF2 x64] Migration off Pov-RECord (P-REC) #5457

ldesgoui opened this issue Jan 29, 2024 · 0 comments

Comments

@ldesgoui
Copy link

Hello,

As far as I understand, P-REC will stop functioning when TF2 switches to 64 bits.
Some competitive players have preferred that plugin to the in-game demo system for a few reasons.
We can also estimate that ETF2L's match report system depends on some features that only the plugin implements.
With the recent release of the source code, and the impending doom of the plugin, we can make educated suggestions to improve the in-game demo system.

ds_enable 3 records matches in Casual and Competitive games

The game currently checks whether to start a demo recording with a condition similar to this: ds_enable.GetInt() == 3 && mp_tournament.GetInt() == 1, this condition is true in both Casual and Competitive games in official matchmaking because mp_tournament is set to 1 for, I assume, technical reasons.
Adding checks to ensure the match type is neither Casual nor Competitive would fix the issue.
It would technically be a breaking change, and the CVar describes option 3 as "Auto-record tournament (mp_tournament) matches", maybe adding an option is warranted.

The reason why P-REC never recorded in Casual and Competitive games is because it listened for the teamplay_round_restart_seconds event, which does not fire. That's also the reason it failed to record when (re-)connecting to a match that was ongoing.

Demos begin recording before the match starts

It often happens that matches start late, players may spend upwards of half an hour in "pre-game". With the current system, the demo starts recording as soon as you load the map, leaving all that uninteresting gameplay at the start of the recording.

That makes it a chore to review a demo for the first time, as you have to scrub the timeline until you find the start of the game. One could argue that ds_mark could be used when the match starts, but there is no way to automate that, and people prefer P-REC because it's fully automated.

During the countdown before the match start, all players are paying attention. As the recording starts and a chat message is sent automatically, it's very easy for players and their teammates to catch when their setup is messed up, and start a recording manually.

It does waste a bunch of storage, which means you have to clean up more often, but that's not the most important aspect.

Some players reported setting prec_tag (similar to ds_prefix) to their current class to help differentiate filenames, this would not be possible in the current system as the recording starts before the player has chosen a class.

Note on CVars

If this feature is considered for implementation, I would highly recommend adding CVars to make configuration simpler to understand.

This seems optimal to me:

  • ds_enable_all 0/1: Equivalent to current ds_enable 2, shortcuts all the other options
  • ds_enable_competitive 0/1
  • ds_enable_casual 0/1
  • ds_enable_tournament 0/1/2: Record when mp_tournament == 1 and match isn't Casual or Competitive. 2 would only record ongoing matches, no pre-game.
  • ds_enable should be kept for backwards compability, but be "deprecated". 1 would set ds_enable_competitive 1, 2 would set ds_enable_all 1, 3 would set ds_enable_tournament 1.

Filenames are not informative enough

As is, the filenames are formatted with ds_prefix, the current date and time.
Unless carefully setting ds_prefix before connecting to every match server, which most players won't, you end up with a demo folder that contains a large amount of files that are named very similarly. It is genuinely difficult to even just read the filenames.

P-REC offers the ability to set the format string, and the default is %date%_%map%_%red%_%blu%%tag%.
It's probably not worthwhile to re-implement this customization, but adding the map name and team names would help immensely. Adding only the map name would probably be sufficient.
Note that naively adding the team names may lead to invalid paths, some sanitization would be necessary.

ETF2L requires a screenshot of the status command output

The ETF2L match report requires team leaders to upload a screenshot of the console showing the output of the status command, using the default font, and on Windows only.
The purpose of this screenshot is to index which players (via their Steam IDs) have participated in which matches.
With prec_screens 1, the plugin will open the console and take the screenshot automatically whenever the player dies the first time.
According to admins, "more than 95% of matches are successfully reported with status screenshots", I assume that this statistic is helped by the large body of players with P-REC installed.

I personally don't think that this feature should be re-implemented, and I think ETF2L should be ready to change their match reporting system.

Suggestions to ETF2L

I would have suggested they follow the footsteps of ozfortress and RGL by requesting links to logs.tf uploads, however, this implies a lot of changes to their rules, and requirements for people who run their own servers, this is probably sub-par.

Another unacceptable solution is extracting Steam IDs from a player's demo, this would be too costly in terms of storage and processing. Player demos are requested by the Anti-Cheat team and may take a few days before the request is fulfilled.

A potential solution would be to parse the server's log. These are generally easy to get either from logs.tf, serveme.tf, or one's personal server. The processing power required should be fairly light.

I offer a potentially better solution, which is to have my plugin (tf2-comp-fixes) show a string on the HUD and in chat as the scoreboard is displayed at the end of the game.
The string would encode the set of Steam IDs who participated throughout the game.
The scoreboard screenshot feature is already implemented (ds_screens 1), so this should be functional for all players immediately.
The plugin is already mandated by the league rules, so no large changes would be needed.


Thank you for your time

mastercoms added a commit to mastercomfig/tf2-patches that referenced this issue Jan 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants