As you know, GTV is an abandoned program that is used for viewing Quake3 matches. It has a number of issues that make it a pain:
* GTV is closed source and based off of an old quake3 source tree (IIRC 1.17). * It's a separate executable so you have to find someone with a server that allows for arbitrary files like a more expensive VPS. Typical game hosting companies only want you to run an approved game server version. * You cannot easily synchronize a shoutcast with GTV in its normal usage. For competition, it has to be delayed 3-5 minutes in order to prevent cheating. The only way to do this currently is to manually synchronize it which doesn't work out well in practice. UrT used to have shoutcast years ago but have dropped it since. It never worked properly so you would either hear the commentator talking about things that already happened or spoiling the surprises. * Text chat has no concept of channels. If you have one GTV server with multiple games, they all share the same chat area. * You can't really use it with standalone mods. UrT has a "binary edited version" just so it will work with it. * It requires a human cameraman and that person may be cheating for one of the participating clans. If you were going to base it off of ioquake3, it would have these advantages: * Always be in sync with ioquake3 so you get the latest features/bug fixes * Allow for GTV to be integrated into ioquake3 rather than a separate executable. * Utilize the VoIP support in ioquake3 to allow for properly synchronized voice chat. As the VoIP is piggy backed, it would be possible to buffer this data with the game data. * Allow for new features such as the ability to constrain which other games you receive text chats for * Allow for standalone games based off of ioquake3 to officially use GTV * Allow for VoIP on the GTV client side. Maybe this wouldn't work out in practice (trolls), but it is possible. * Optionally allow for an automated cameraman. I don't know if this would work out in practice, but if the game server buffered the data for GTV (optional 2nd mode), then the game server could have an algorithm to pick which player to view. Perhaps look at K/D ratio and switch between the top players when they die. Rotate it so some of the middle and lower tier players are viewed for a while as well but focus on the top players. As the game server buffers the data, it wouldn't be an issue with cheating. Normally GTV buffers the data since the cameraman needs to be able to switch between players. An automated method would allow anyone to view a game without needing a cameraman. It's typically a big ordeal getting GTV enabled on a match since you need league admins or other trusted people doing it because of the cheating aspect. The original GTV was a standalone executable with a configuration file. Would it make sense for a server to essentially have a GTV service with a separate configuration or even just new server config vars? A game server could export a GTV service that allows for a restricted GTV client so it can only perform certain whitelisted operations. Maybe this is done through a separate password/cvar upon connecting. A second server would be needed to host the GTV clients so it doesn't lag the game server. There would be four modes of operation for ioquake3: client, listening server, dedicated game server and dedicated GTV server. This would allow for people to potentially shut down a pub for a while and host GTV clients without requiring a separate executable. I've been floating this idea around for a while and I find a lot of people interested in the results, but no one interested in helping. Could anyone with experience in ioquake3 provide guidance on whether this is a good idea and any implementation suggestions or help/lead? Does a standalone executable still make sense or could it be integrated into an optional feature in an ioquake3 server? _______________________________________________ ioquake3 mailing list ioquake3@lists.ioquake.org http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org By sending this message I agree to love ioquake3 and libsdl.