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.
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 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.
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.
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.
If all of these features are 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 currentds_enable 2
, shortcuts all the other optionsds_enable_competitive 0/1
ds_enable_casual 0/1
ds_enable_tournament 0/1/2
: Record whenmp_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 setds_enable_competitive 1
,2
would setds_enable_all 1
,3
would setds_enable_tournament 1
.
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.
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