Recording all player interactions for spectating/video recording later in Team Fortress 2

recordingteam-fortress-2

Short Question:

Is it possible to record an entire game/map, in order to 'playback' later, spectate around and record it?


Background

I have a TF2 cross-office competition coming up that I'm helping to organise, and I'd like to save all player interactions (kills/deaths/capture points etc) so I can re-run the game later and spectate around as if it were a live game.

The idea is to be able to record gameplay that my character wasn't directly involved in, and at a pace that I can choose, using both third and first person perspectives to put together a "This is how awesome our office team went" style video. This would obviously require the ability to jump around to interesting plays, funny moments, huge battles and more, instead of just showcasing my character's viewpoint.


I've thought this over and I've tried out a few things:

  • TF2's ability to record demos

    • Using console commands to start/stop playing, but this only really records my character's perspective (down to camera angles and everything).
    • There is a 'Drive' mode that allows for some amount of 'free roaming', but I have noticed that events that aren't taking place near my character aren't rendered – everything disappears from a certain distance onwards until I am in range.
  • Finding some third-party software for professional gamers.

    • I figured that someone had wanted to do a similar thing in order to playback certain maps in order to fine-tune their gameplay, but I haven't been able to find anything so far.

Currently, the 'solution' I'm working towards is to ask everyone participating to record the session using the 'demo' tool, in order to come back and collate later, but this seems overly cumbersome for something that I'm sure is just a simple configuration step.

Is there a proper way to record an entire server's worth of gameplay? I have control over the TF2 server we'll be using so if it's a server-wide configuration, that can be done as well.

Best Answer

From the client side? No.

From the server side? Yes.

The folllowing cvars will automatically record server-side demos for all maps:

tv_autorecord 1
tv_enable 1

You may need a map change before these go into effect, so it's recommended you set them in the server's autoexec.cfg

Unlike client-side demos, server-side demos record everything that's going on.

As far a I can tell, the recordings include the map name and date timestamp. For example, here's the filename of a demo that my test server just created: auto-20150619-1038-pl_upward.dem This was started on June 19 2015 at 10:38am local time (EDT).

There are a few other SourceTV things you need to be aware of:

  • Players can join the SourceTV stream to spectate the game.
    • By default, it's on a 30 second delay.
    • It listens on port 27020 by default.
    • If you are expecting people to spectate, you may also want to set tv_delaymapchange 1 or else the server will change maps even though spectators haven't seen the end of the match. Keep in mind that this will delay the server's mapchange by 30 seconds (be default)
  • SourceTV adds a bot to the game, named SourceTV by default. You can change this with the tv_name command.