x
ETF2L is looking for new Staff to recruit! Are you interested in supporting the league? Then click here for more details on what we can offer and how to apply! 

Forum

huge_status_monitor

Created 14th May 2012 @ 05:25

Add A Reply Pages: 1

SigmaSin

This is a repost from over on natf2, just trying to spread this around as much as possible. The thread there, http://natf2.com/topics/4921-huge_status_monitor will probably be more updated, but I’ll try to check this one as much as I can as well.

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.

Download: http://dl.dropbox.com/u/29208222/huge_status_monitor.zip

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 206.217.135.162 -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 by SigmaSin,

atmo

Sweet. Are you going to open source it?

octochris

(0v0)

Quoted from atmo

Sweet. Are you going to open source it?

…it’s an uncompiled python script…


Last edited by octochris,

atmo

cool

Dummy

Quoted from octochris

[…]

…it’s an uncompiled python script…

mad

quik

vs
Fe |

TL;DR

AcidReniX

RaWr ::

This actually sounds amazing! So many uses for it too.

1) it’s a glimpse into the future, so less important frags are missed when casting.
2) it can allow the commentator and video streamer to effectively spectate the same person quite frequently (as you would probably be pressing that button a lot).

Great job, will have to test it out!

AcidReniX

RaWr ::

Thinking further into it…

The downside of this script, is going to be that it can potentially spoil some combat scenes. The camera will switch to a player who gets the kill, so if you are watching a 1v1 scout dual, and it’s really close, the script already knows who is getting the frag, so it’s obvious that the player you are watching is going to win (a spoiler).

It might be quite nice if you could make the script randomly switch between either a guy who is about to go huge, or a guy who is about to get fragged. Sometimes it’s nice to see the POV of the person getting airshotted, rather than the person doing the airshot, but also it doesn’t spoil the moment by knowing the outcome of a fight in advance.

SigmaSin

Quoted from AcidReniX

The downside of this script, is going to be that it can potentially spoil some combat scenes.

Yeah, this is definitely true. I was testing it out on a gpit match where the defense started with a kritz at the A tunnels, but I knew a minute in advance that it only got 1 kill. The outcome of all 1v1’s is given away, and if it lands you on a spy, well, you know what’s about to happen. Unfortunately, this method doesn’t let you grab deaths from the server (or any stat other than frags and time connected… woohoo). If you have rcon on the server the match is being played on, you could analyze the log on the fly to take a lot more stats into consideration and just make sure you’re watching someone who’s either doing damage/getting frags/being fragged more-or-less at random to take care of that, but then the server owner needs to be making that information available rather than anybody being able to get it. (Edit: though I will note, after talking to djc… over here in Europe, it’s totally feasible that you’d have rcon on a match server as opposed to the esea-overlords controlling it all, so I will work on a log-parsing version that can do more things given the server rcon).

Indeed, this isn’t a perfect substitute for good camera work. I think it’s a handy thing to run while you’re streaming, but you still need to be checking out the action on your own to really see what’s going on — all you get out of this is a button that you can use to go somewhere in a fight where there’s some guaranteed action, which may be a good or bad thing.


Last edited by SigmaSin,

Wiper

idd.

tl;dr

Starkie

ulti?
sniper

tl;dr
Better version of autodirector for spectator mode

mehaya

Add A Reply Pages: 1