This is the public announcement of Lithium, a spectator-enhancement for ET. I am working on it as part of a research project in video game visualization. I currently have access to the ET mod source so this will be integrated directly as a client/server mod. Though it is designed primarily as a research project and not as a public release, I nonetheless hope the project will progress to a point where the community will find it useful and take advantage of the improvements it offers. I am posting this here to get some feedback on what the community feels about the concept, and any suggestions you may have for it.
Here is a link to the project site. There’s only a little sketchy info there, but it will grow as the project progresses and more work is done.
Looks interesting. Though, it would be nice if you could tell the facing of the players on the screen. Also, how do you plan to show CovOps in an enemy uni? As a spectator it would be fun to be able to see the covert sneaking up on the enemy to stab him in the back.
Yeah, that will be in the actual module. I should note that the image on the front page right now is just a simulation made up in Photoshop, not actual output from Lithium. Also, the scene shown is not the only mode Lithium will run in. It will actually be a large list of things that can be visualized, which can individually be turned on and off, depending on what you want to see. For example, you could imagine only wanting to see the weighting around the teams medics or field ops, to see where they are concentrating the support classes. Or, you might want to scale the size of the halo around each player according to the player’s experience or health, to show where their strongest teams are.
Also, how do you plan to show CovOps in an enemy uni? As a spectator it would be fun to be able to see the covert sneaking up on the enemy to stab him in the back.
Hmm… That’s a good question. He’d still be shown as being on his real team, you’d just notice him because he’d be this small [red/blue] field behind the front lines of all these [blue/red] players.
One thing that I would really like though, is the ability to use this with a recorded demo. It would really be interesting to be able to watch a prerecorded game like this, and really know what was going on.
Hmm… That’s a good question. He’d still be shown as being on his real team, you’d just notice him because he’d be this small [red/blue] field behind the front lines of all these [blue/red] players.[/quote]
This project looks promising, and interesting as well. However, as far as covert ops are concerned, I think that it might be more easily readable to the spectators if a disguised covert showed up like this:
(Without the huge arrow and text, of course. I just included those for clarity’s sake in this image.)
^^^^ I like that, but if I did it, I would reverse it (Red circle with blue halo) since the player is still part of the blue team, thus extending “blue influence”.
Ultimately, I’m actually going to replace those rings with little “glyphs” that would encode player class, position, direction, and rank.
Yes, I agree that that would be crucial (especially since, in order to develop/debug it, I’m going to need repeatable test cases). It is my understanding that the demo playback essentially simulates a server and connects a dummy client to it, so hopefully that will just fall out. I won’t know for sure until I get the regular setup running.
Hah! We were all wondering where the heck you went! I was starting to get worried
That sucks about your video card, though. Hopefully you’ll get it back up soon. We miss you
Stop by the server forums some time, too. ( http://www.methkettle.net )
I very much like the idea of being able to observe how teams go about attacking / defending. This could be a learning tool for clans and competitions… imagine being able to review an upcoming opponents games of a certain map to see how you want to concentrate your defense. Of course that could also be used against you, so new tactics and excellent execution could become more important. Just my initial thoughts, I hope you can meet your goals and come up with an informative mod. Good Luck!
The speaker set up system in Radiant is pretty neat. You fire up the game in devmap mode, enable speaker editing, then you can manually place speakers and assign properties, all without re-compiling the map. I wonder if it would be possible to do this with spectator cameras.
You had mentioned a ‘line of security cameras’ type arrangement. If so, would you be able to use existing aimbot technology to help snap cameras to where the action is, within a certain radius. Meaning, aimbots can track hitboxes or they can track concentration of vertices, would you not be able to do the same thing with a camera. For example, on Fuel Dump, if you had a string of ‘security cameras’ set up along the tank’s path, then they would pan x degrees at y speed until a concentration of vertices showed up within z quake units, at which point they would follow the vertices. They would continue to do this until the mass of vertices was superceded by a larger one or until it left their ‘watch area’. In effect, as the tank (lots of vertices) progressed down the path, each camera would follow it until it left their ‘watch area’, at which time, the next camera would pick it up.
Hmm… I had never thought about that. I haven’t played much with radiant much at all, or viewing the maps in dev mode. I’ll give that a whirl, when I get a chance…
You had mentioned a ‘line of security cameras’ type arrangement. If so, would you be able to use existing aimbot technology to help snap cameras to where the action is, within a certain radius. Meaning, aimbots can track hitboxes or they can track concentration of vertices, would you not be able to do the same thing with a camera. For example, on Fuel Dump, if you had a string of ‘security cameras’ set up along the tank’s path, then they would pan x degrees at y speed until a concentration of vertices showed up within z quake units, at which point they would follow the vertices. They would continue to do this until the mass of vertices was superceded by a larger one or until it left their ‘watch area’. In effect, as the tank (lots of vertices) progressed down the path, each camera would follow it until it left their ‘watch area’, at which time, the next camera would pick it up.
Hm… That is certainly doable; Chromium is essentially a library for doing, among other things, aimbot like stuff (I.e. intercepting and parsing the GL stream). It might just be easier, however, to simulate that by having the client keep track of important objects (the tank, for example), and just check their position explicitly instead of doing some kind of screenspace computation. I imagine where this would work really well would be on Railgun.
There are other interesting ways to track action, too. For example, there is a paper ( http://isgwww.cs.uni-magdeburg.de/~nick/publications/Halper_2003_AS.pdf ) on recording state information over the entire game world, and, based on some preprogrammed rules and the rate at which the states change (player’s health, speed, etc), determine what is or will be the most interesting thing to watch. The paper points out that this is a good way to figure out what the most exciting parts of a game playback are, and automatically cut it down (i.e. generate “highlights”).
I was also thinking it might be interesting to extend this to the ET medal system. Since the system in that paper boils the game down into events, and it gives each event a score based on how “exciting” it was, you should be able to keep track of any events (and the players involved) that are worth over “n” points.
So, you could imagine assigning awards/medals for performing “acts of extreme heroism”, etc. I.e. rewarding players for a particularially awesome run for dynomite planting, a medic who revived 4 people under heavy fire, a covert ops who took out 3 players in a row, etc.
Of course, this too is “future work”… but it would definitely be an awesome addition to the game. It’d be neat if medals were actual rewards for indidual acts, not just competetive class contests.
Another thing you might want to look at is the etconsole.log parser that Gerbil built. If I understand correctly, that your spec mod will be able to react to the game data stream, then you should be able to also record that for the purpose of post-game stats parsing or recording all that to an improved console log.
Hey, all!
Just a small update on the progress of the spectator project. I have a few screenshots I thought people might be interested in. These are stills from two demos being played back using Lithium.
In these shots, each player is represented by an icon showing their class, and a “halo” around the player, whose size is proportional to that player’s score. Thus, more effective players would be shown as having a bigger area of effect in the game. The scale of these can be modified as the average player experience increases.
This first shot is the final stage of a game on Oasis. This particular shot shows an allied push against the north, and that the south of the fort is currently controlled by three allied players. The Southern gun has already been blown at this point.
Note that there is a red engineer icon with a blue halo around it at the top-center of the map. This is an allied covert ops in a red engineer’s uniform.
This shot is from a few seconds later. The allies have been pushed out of the south end of the map, but have taken the outside wall of the north side. The axis has moved engineers in to help defend the Northern gun.
There is also a small firefight in the south around the cavern entrance.
This last image just shows how this visualization does a good job of showing the complicated internal structures on complicated maps, like battery.
I plan on implementing many interesting features. Among them would be an indicator around where combat is occuring, a smaller halo indicating player health, and the experience scaling for the halos automatically adjusting based on the average experience on the server.
How will the view be affected by sneaky activity on maps like fueldump or oasis? If most of the action is concentrated before the bridge/old city wall, but a covert+engie team has gone off to do it with each other and plant some dynamite?
Well, in the future (once I figure out how to intercept the forward/back/strafe controls) you will be able to just translate the view around the world, as well as zoom in and out. I was thinking that, ideally, it would be good if you actually had a picture-in-picture as well. Perhaps a small regular command map that shows overall player location (to alert you to activity you are not seeing), as well as the ability to see the action from the player’s level as well as the big overhead view.
That picture-in-picture idea sounds cool. One main view, but if Lithium notices a covert and his engie girlfriend rushing off to some private spot, a little picture-in-picture “window” pops up to monitor their sneakiness.
This would be a great feature for Referees , this pretty much allows them to watch over more people than just spectating person to person. Maybe ya can recruit a sports commentator for play by play.
Actually, that is a very good idea. Talk to some of the TSN (The Shoutcast Network, I think). They shoutcast a lot of RTCW and ET matches. I’m sure they are looking for a way where they can track overall action, with name, and then zoom in on the action when they spot it.