It would be nice if, while watching SourceTV, you could catch all of the frags. spec_autodirector sort of does this, but it does it at the worst possible third person camera angles imaginable. I'm sure more people than just me have played around with "spec_autodirector 1;firstperson" binds to try to get around this, but the autodirector doesn't kick in until after a few seconds, so this doesn't really work. Hence, I decided to make my own, and wound up with the huge_status_monitor.
What does this do, specifically? It uses a part of SourceLib https://github.com/frostschutz/SourceLib to mimic the request you make to a server when you do "view game info" on someone through steam and collects the results. It tracks the change in frags for each player over a number of intervals (default 9 intervals, 10s each if the tv_delay is 90s) and fills a queue with the top-fragging player over each interval (taking into consideration frags that occur in future intervals, but with a lower weight). Once the SourceTV has caught up to when those frags happened on the server, we write a cfg file to spectate the best player from that interval. Hence, all you need to do as a spectator is to bind a key to "exec spec_best" and press it periodically to switch to the view of whoever is about to go huge.
I find this particularly useful for when I'm casting and streaming, since I can pay minimal attention to the camera while talking and still get a good picture of what's going on. I'm happy enough just using this script for my own benefit, but it should also be useful for other casters, streamers, and really just anyone who wants to watch a match and catch the maximum number of frags in first person.
To use this, the first thing you'll need is python http://www.python.org/getit/ . I recommend getting python 2.x.x; the 3.x.x have some issues on windows that may prevent this script from running. Then, drop the files from the archive into your tf/cfg folder, run cmd, and cd your way into your tf/cfg folder (I might make a GUI for this someday, but this is command-line only!). You can check out the options with "huge_status_monitor.py -h". The minimum that this script needs to run is the server IP. If the port isn't 27015, you'll also need to provide that (note that you need to give the server info, not info for the SourceTV or relay -- on ESEA you can get the IP/port from viewing game info on a friend, or going into the client and viewing server info from there). The tv_delay is assumed to be 90s (what ESEA uses); you'll have to change that if there's a different delay (and possibly modify the period count as well, depending on what you're after -- more sprees, or more individual frags?). Once that's all taken care of, bind a key to "exec spec_best" while you're in game, and have fun. Here's some sample output from the match I watched tonight (you won't see this if you don't give -v, and you don't really need to see it if you're just pressing your bind ingame)
> huge_status_monitor.py -i 18.104.22.168 -p 27267 -v
Monitor initialized! Now running...
Best is Shwan.vec with 1 points
Best is Shwan.vec with 1 points
Best is Shwan.vec with 3 points
Best is DougyG.vec with 2 points
Best is DougyG.vec with 4 points
Best is thrckstr.vec with 4 points
Best is rb-^SYOPS with 1 points
Note that in its current implementation, it gives the next player to watch a bit earlier than the frags actually start happening. I prefer it this way because I get to see the leadup -- after trying it with it directly synced, I found that I'd just jump to a player who immediately killed someone and I couldn't see how they got into position. This does make it so that if you constantly press your bind, you'll switch away from some frags before they happen, so the best way to use it in practice is to hit the bind, wait until frags happen/it looks like they're not in position to do anything more, then hit the bind again. Also note that since this can't track ubers/damage at all (would be possible with log analysis, but you need rcon on the server to do that), you may end up watching a scout hiding in a corner who comes in late and gets 2 frags over a pocket who takes an uber and does a ton of damage. Hence, this isn't a perfect subsitute for good camera work, it's just a tool that helps out a bit.
Questions/issues? Ask in this thread. I'll update the OP if I make any changes to the script (good joke, I'll be playing D3).
Last edited: Mon, 14 May 2012, 05:39am by Sigma