Team Fortress 2

Team Fortress 2

324 ratings
Afterlife
3
3
3
2
   
Award
Favorite
Favorited
Unfavorite
Other: Halloween, Night
Game Mode: Arena, Specialty
File Size
Posted
Updated
16.470 MB
Aug 27 @ 8:25pm
Nov 16 @ 5:48pm
4 Change Notes ( view )

Afterlife is official content that comes included with Team Fortress 2.

Description
Death is not the end...

In this seasonal remodel of Valve's 2008 classic Ravine, players wage battle in a fast-paced twist on the classic Arena gamemode. Rather than being relegated to spectator for the remainder of the match, players who die are sent directly to Hell to continue fighting, that they may collect souls to bargain for their lives, just as the Medic did in TF Comics #6: The Naked and the Dead. Any player who scores a kill or assist on an enemy in Hell steals their soul, and can take it to one of the altars to resurrect themselves, rejoining the fight in the main arena back on Earth.

Welcome to Hell!

--------

Credits:
Valve -- Original Ravine map
LizardOfOz -- Original Arena vscript; code review, revision, and debugging
Piogre -- Map concept, additional vscript for gamemode variant, Hell area layout and detail, Ravine Halloween re-detail and adjustments
ImAware -- Custom particle effects
HirschVA -- Devil voice actor and audio editing
IJCT -- Showcase promos, menu photos

--------

This workshop-hosted version of the map was the last public version of the map before its official in-game release. The version included in the game includes several updates including bugfixes and other tweaks.

If you would like to use this map as a jumping-off point for a project of your own, click here for an up-to-date UNCOMPILED version of the map (hosted on TF2Maps) for reference purposes.[tf2maps.net]
Popular Discussions View All (1)
17
Oct 29 @ 12:01am
PINNED: Bug Report Thread
Piogre
104 Comments
Captain Space Rabbit Nov 9 @ 1:12pm 
I loved this map so glad it`s in the game
Crazed Gunmann Nov 7 @ 9:59am 
sexy ass demon voice
Civil Servant Nov 3 @ 3:29pm 
trash
dyku Oct 29 @ 3:28pm 
my dude just fix Arena this is much better than graveyard the fact you can fight the get back into the game is so much better make geting cons easier too i be fine if this Mechanic is in more maps even on normal maps
soggäh Oct 29 @ 1:15am 
Wow, thanks for the detailed yet concise write-up on the bug, unfortunate that you were so thorough in testing, only for untestable, Casual-specific (and very hard go debug!) circumstances to haunt you.

Also, seems like one of the two hard problems of computer science reared its head here:
Naming things, cache invalidation and off-by-one-errors. :rbiggrin:
Piogre  [author] Oct 29 @ 12:22am 
In the wake of this, we're trying to make known in the vscripting community that player_disconnect can behave this way, to ensure these issues don't recur in future maps. BeepIsla has also put together what looks to be an offline casual matchmaker tester on github, which may also help catch issues created by differences between casual and community servers.

At this time, the issues are believed to be fixed. Please don't hesitate to let us know if you continue to see any bugs in the map. We hope you all enjoy the map, and have a happy Scream Fortress. (7/7)
Piogre  [author] Oct 29 @ 12:22am 
Furthermore, once we knew the bug existed, since we had no way to replicate the bug outside casual, our only means of troubleshooting was to try to intentionally break casual servers and take notes on what was happening, and review footage for clues later. We had no server logs, no stack traces or script exception logs in the console, only guesswork based on what was visible to players. And once we determined what we believed was the cause, our only way to actually test if the issue was fully fixed was to push the changes to Valve and hope they worked. This is why it was still broken after the first patch, and why the smaller regression bug happened after the second patch. (6/7)
Piogre  [author] Oct 29 @ 12:22am 
Based on all the above, we're pretty sure there's a small difference in timing of when the "player_disconnect" fires for vscript on a server hooked up to casual matchmaking versus a vanilla community/LAN/whatever "normal" dedicated tf2 server, when a player disconnects under some uncommon circumstance. This isn't to specifically say that casual does it "wrong" -- only that it does it differently, and because we had no way to test maps in the casual matchmaker until they go live in casual matchmaking, all testing was done in community/LAN servers (AKA the config "quickplay" Valve servers used) so it was never caught. Although we don't know for sure, we suspect that when Valve playtests maps deciding which ones they want to add, they play them as a group in the normal LAN/community server config as well (not in the casual framework) -- so we suspect maps don't get run in the casual matchmaker at all until they go live. (5/7)
Piogre  [author] Oct 28 @ 11:58pm 
Afterlife was playtested extensively on the TF2Maps testing servers, which included people disconnecting and rejoining. It was playtested on other community map testing servers. It was tested on locally-hosted LAN servers specifically checking to make sure players connecting/disconnecting worked. And yes, it was tested with mp_tournament 1, which changes *some* things to be similar to casual, but does not fully replicate a casual server. At no point during any of this testing did this bug occur. After it launched, it was played on Shounic's 100-player server in a forty-versus-forty and this bug did not occur. And once we knew a bug existed, We did everything we could to try to replicate the bug in LAN/community servers, and we could not replicate the issue once outside the casual matchmaker, including using methods that seemed to consistently cause the break on a casual server. (4/7)
Piogre  [author] Oct 28 @ 11:58pm 
The Vscript driving the gamemode in this map maintains an internal list of all active players, arranged by team, plus a second list tracking only players counted as "alive". This cache is updated during play to track players spawning, disconnecting, changing teams, dying, resurrecting, etc. Occasionally, a player disconnecting from the server in a particular way would have their player object invalidated before the player_disconnect event fired. This prevented the reference to the player from being properly removed from the cache, resulting in the script breaking later when attempting to call functions on non-existent players, usually breaking in the middle of functions that were supposed to start/end/reset the miniround. Once this break happened one single time, the script would be completely softlocked, and the server would stay broken for any newly-connecting players until it emptied out and terminated. (3/7)