This is CompTF2C. Click here for United Fortress.
HARBOR OF
COMPETITIVE
TF2 CLASSIFIED

Technical revolution of competitive TF2C: part II

In the last article in March, we laid down the road map for changes that need to be implemented to TF2 Classified for a viable competitive gameplay, while documenting the temporary solutions made by CompTF2C in the pre-Steam era. Now in August, CompTF2C and a few of its stubborn members stand as a community actively involved in testing, bug fixing, and pinpointing them for the developers. The following is the progress report of that.

FeatureStatusDetails
Tournament mode Ready Up2team fixed
4team HUD developer-ready ✅
Code found in TF2 SDK
Reported as Issue #958 and Issue #977
2team fixed in 3.0.12
Team status HUDDeveloper-ready ✅⏲️Available in TF2 SDK
Reported as Issue #1002
Tournament StopwatchNo general bug ✅
Harbor and Avanti problems:
developer-ready ✅⏲️
Entity properties found in Hammer
(Avanti logic likely a design choice)
See Issue #960
VIPR time limit cvarReported 📝⏲️Can not be troubleshot externally
See Issue #936
Quick VIP selectionReported 📝⏲️Can not be coded externally
See Issue #1003

It all started with Xinayder entering the Discord server in May. Him and PuG runner starm0nster started testing different game modes in July to see where the tournament mode Ready Up function and the stopwatch functionality fails. Xinayder didn’t stop there, and went to the public TF2 SDK to understand how it works in live TF2, and from there, estimate how it could have gone wrong in TF2C. This led to a conversation between Güven and the creator of the TF2 Competitive Fixes plugin, twiikuu, who guessed that it could be about the fact that there are four teams defined in TF2C, whereas only two teams are able to ready up via the tournament HUD in a 2team map. That brought to mind what f stated about the initial post-Steam PuGs. A quick search in the Discord DMs reminded us that f indeed reported Ready Up to be functional in 4team maps. This further clue led to twiikuu finding the exact code that goes wrong, which, Xinayder documented properly. On 31 July, the developer team fixed the issue with the release of TF2 Classified update 3.0.12! Another bug reported by Xinayder, concerning Arena and the tournament mode (although may not be vital for the scene) is also fixed with update 3.0.12.
He went further and found bugs possibly hindering tournament HUD for 4team, and again, found where it could go wrong in the TF2 SDK as well.

Stopwatch turned out to work for everything, including VIP! That is great news. But it didn’t arrive to us as quickly as it is read here. There are two official VIP maps where it is broken, Avanti and Harbor, which have their distinct problems, and initially led us to believe the issue is somewhere deeper. But vip_badwater is working properly (Mineside and Trainyard are not tested). Xinayder’s efforts in Hammer revealed that for the case of Avanti, the score_style property of the team_control_point_master entity is set to grant a point to the BLU team after all the control points are captured. This is probably a design choice by the mapmaker, although it is not the optimal way to play it competitively. In the case of Harbor, the map lacks roles defined for BLU and RED teams, which is not likely to be intentional. Nevertheless, both are reported to the developers. Following what CompTF2C did for the VIPR round setup timers, Xinayder introduced Stripper configs (uses Source: Stripper server plugin) to CompTF2C’s server pack, which alter the map entities on the server side.

A by-product of this effort was helping to close an item on TF2 Classified Issue Tracker. During the tests Güven had experienced the VIP not switching teams although the rest of the BLU players start the next round as RED. This appeared to be an already reported, open issue (#526) since February. Someone smarter, JCzypie in the CompTF2C Discord server stepped up at that moment to remind us that tf2c_vip_switchteams does exist, which CompTF2C (and specifically Güven) had already written as a crucial cvar in the now-archived Tech Manual page. The issue turned out not to be a bug, but rather our lack of vitamin B12. [For the records, also found out that mp_maxrounds 2 is an essential cvar for stopwatch.]

Spending this much time in the Issue Tracker, we stumbled upon something unexpected and unfortunate. In VIPR, the cvar mp_match_end_at_timelimit does not work anymore. Its importance was discussed in this article last year. That too goes in the list of fixes required.

Quick VIP selection is the last item remaining from the list of essentials. The server vote system is not a practical way to change roles in the middle of a competitive match. Unfortunately, the VIP feature in TF2C’s code has nothing to do with the publicly available TF2 SDK, therefore, there is no programming help we can give from outside. We opened the request, and we move on.

Image: TF2 Classified, Waugh101

From the list of nice-to-haves, it appears that MGE and SoapDM SM plugins work just fine off-the-shelf. These are installed by Xinayder to his MGE server, as well as his competitive server which should be able to host future CompTF2C PuGs and competitions.

After a conversation with resin a.k.a. Dr. Underscore, we are informed on what problem each casting technology addresses. Firstly, the pause/unpause bugs may be fixed natively with resin’s solution, and makes more sense in TF2C where we are blessed with on-going development support.
What the client plugin CastingEssentials Next (resin’s fork of CE) does in essence is enabling more in detail HUD visuals such as the medigun charge as a separate bar. These are part of caster HUDs, like EssentialTF’s, and can be tested using them.
The server plugin SrcTV+, on the other hand, makes the server send data it normally would not, like the Sniper rifle charge. It can be tested on Xinayder’s server too.

A log parser and stats generator, either on logs.tf or a separate platform, needs a unique effort for TF2C. Firstly, one must know what game events are firing, and Xinayder already reported the lack of native support for VIP events. Taking inspiration from F2’s Supplemental Stats SM plugin, he developed his own one called TF2C Event Logger that logs VIP related events as well. Manual upload of a TF2C match log to logs.tf actually showed some basic information to be displayed quite well. It would be better if there was an official log parser, but eventually it might be dealt with a community effort.

FeatureStatusDetails
MGE SM PluginWorks ✅
SoapDM SM PluginWorks ✅
Pause bugsTo be tested ▶️
Solution ready ✅
Needs testing before reporting
If bug exists, code and solution is found in TF2 SDK
CastingEssentials, SrcTV+To be tested ▶️Needs testing before reporting
Stats loggingTo be tested and possibly developed ▶️Reported Issue #989; workaround created
Might be developed externally

There is still a lot of homework to do. The full ETF2L config pack turned out to be working on Xinayder’s server without any crashes. Rather than starting from scratch and having an almost completely unique config like in the pre-Steam era, CompTF2C can align itself with ETF2L’s (or another organization’s) cfg pack, forking directly from it, only customizing for the unique game mods.

twiikuu’s TF2 Comp Fixes plugin, which is another server requirement for official ETF2L matches, turned out not to work with TF2C since there is no 32-bit server binary to support dhooks.ext. Possible implications of its missing is yet to be discussed with twiikuu and the ETF2L staff.

Finally, the existing CompTF2C vscript for TD (Territorial Domination), mentioned in the previous article as tech to be made future-proof, needs to be tested again. Given the current number and popularity of TD maps, there’s still no urgency to find an automated solution.

Tech

Reactions

A cookie will be set in your browser upon reacting.

0
1
3
No comments yet.

Leave a comment

Your email address will not be published.