WolfTV allows many players to spectate a live RTCW match without impeding server performance or interfering with the match. A WolfTV server connects to a game, and potentially hundreds of spectators connect to the WolfTV server.
To spectate in a WolfTV server, only this small map is needed.
WolfTV Readme for version 1.x Copyright (C) 2001-2002 Brad "FonFon" Whitehead An up-to-date and better formatted version of this readme can be found at: http://www.gamerstv.net/readme.php Translations will be made available there as well. License Client Installation Server Installation Quick Install Advanced Install Running the WolfTV Server Admining WolfTV WolfTV Chains and Redirection Relationship to RTCW (and Command Syntax) Command Line Console Commands Choosing a Maxclients Common Problems Unable to Bind Socket Error Using WolfTV How to connect Commands Normal Commands tv_nextgame tv_nextview tv_watch tv_help tv_admin tv_camera tv_playerlist tv_status tv_gamelist tv_silent tv_nospeech tv_messages Admin Commands tv_connect tv_disconnect tv_kick tv_centerprint tv_demo tv_stop tv_record tv_stoprecord tv_description tv_freemove tv_playerinfo tv_ban tv_removeban tv_listbans Other Features Rcon Common Tasks Remove Team Chat from a Demo Connecting WolfTV to a Server Becoming Cameraman Chaining WolfTV How WolfTV Works The Camera CL_timenudge Compatible Mods Changes 1.0a 1.0 License This license agreement can be changed without notice. 1. Use of WolfTV: The following uses of WolfTV are prohibited: You agree not to disassemble, reverse engineer, decompile, or otherwise modify WolfTV. You agree not to sell, rent, or lease WolfTV. You agree not to generate revenue through use of WolfTV. 2. Warranty: WolfTV has no warranty. THIS INCLIUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 3. Limitation of Liability: UNDER NO CIRCUMSTANCES, INCLUDING NEGLIGENCE, SHALL WolfTV OR THE AUTHOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR THE USE OF WolfTV. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES SO THIS LIMITATION MAY NOT APPLY TO YOU. Client Installation Download the client .zip Extract the zip into your RtCW directory. Make sure "Extract with pathnames" is turned on. You can now connect to a WolfTV server. Alternatly you can connect to a WolfTV server with allow downloads on (cl_allowdownloads 1). This will download the client pk3. Server Installation Quick Install A quick install of the WolfTV server involves two steps: Extract the .zip into your RtCW directory. Make sure that "extract with path names" is turned on. A subdirectory called "wolftv" should be created. Look in the WolfTV subdirectory for a file called "wolftv.cfg". Open this file with notepad or your favorite text editor. Edit the options in the "Quick Setup" section. You can now run WolfTV.exe in your RtCW directory. Also see Admining WolfTV and Common Tasks Advanced Install WolfTV requires the following things to operate correctly. This section will describe the how to setup these requirements. Requirements: Access to the RtCW pk3 files A "WolfTV" subdirectory A valid RtCW CD key The WolfTV configuration file (wolftv.cfg) Access to the RtCW pk3 files: WolfTV needs to access all of the standard RtCW pk3 files. If WolfTV is run in the same directory as wolfmp.exe it should be able to access these files without further information. To run WolfTV in a different directory, or if WolfTV is not able to find the pk3 files for some reason, you can specify the location of the pk3s with the fs_basepath option. Use the command: "+set fs_basepath your_wolf_dir_here" on the command line (see Command Line for more information). A "WolfTV" subdirectory: Once WolfTV knows the location of your RtCW directory it must be able to find the correct configuration files. Create a directory under your RtCW directory called "WolfTV". This is where WolfTV will store configuration and other information. A valid RtCW CD key: If WolfTV can find your RtCW directory correctly, it will attempt to use the file "rtcwkey" in the baseq3 directory. If you would like to use a different CD key to connect to servers, create a file called "rtcwkey" in the WolfTV directory, and place your CD key in it. The WolfTV configuration file: WolfTV looks in the "WolfTV" directory for a file called "wolftv.cfg". This file contains all of the information WolfTV requires to run. Before running WolfTV for the first time, this file must be edited and at least the options in the "Quick Setup" section changed. Most people will want to look through the "Advanced Options" as well. This configuration file follows the standard RtCW .cfg format (see Relationship to RtCW for more information). Running the WolfTV Server This section is mostly background information, read Admining WolfTV and see Common Tasks for step by step practical instructions. Admining WolfTV Admining WolfTV is fairly straight forward. Think of WolfTV as a normal RtCW server. It just happens to be able to connect to other servers. To get WolfTV setup so that other people can watch the game the normal sequence of events is: Setup and run WolfTV Connect to WolfTV Use the WolfTV_admin command to become an admin Connect WolfTV to the server Become cameraman Tell others to connect The normal way to admin WolfTV is to connect to it with RtCW and issue commands. This allows you to control the camera. Most commands can also be issued in the WolfTV console, however you will need to find someone with RtCW to do the camera. Once you have WolfTV connected to a server, you might be wondering, what next? You need a way to control what people connected to WolfTV see. This is where the camera comes in, see Becoming Cameraman. WolfTV Chains and Redirection To create a WolfTV chain simply connect one WolfTV server to another one. The "master" WolfTV server (the first one in the chain) controls what the users of every other WolfTV server in the chain see. The master server is the only one with a "camera man". By chaining WolfTV servers together around the world, its possible to distribute the bandwidth and CPU processing requirements of serving 1000s of users. Large chains can be a bit complex, so this section is intended for people doing the setup of a chain, for people wishing to join a chain and mirror a match see Common Tasks: Chaining WolfTV. The best setup for a WolfTV chain is: one private WolfTV server at the event, one "master" WolfTV server that connects to the one at the event and is passworded. After that other mirror WolfTV servers that know the password can connect to the master WolfTV. This is good for several reasons... you can have multiple WolfTV servers at the event, and because there is only one master server you can switch between them easily. Redirection also works well with this setup. Redirection is an experimental feature that will redirect people connecting to one WolfTV server to a different WolfTV server Eg. someone tries to connect to the master WolfTV, but its full, so the master looks at all the WolfTV servers connected to it and chooses the one that is "most empty". This way only one WolfTV server IP needs to be posted, and WolfTV servers in the chain are automatically load-balanced. Since redirection is still an experimental feature, and does not work for people behind NAT routers, I would recommend posting all WolfTV server IPs, and recommend to people that they try the master IP first. The master server also needs some settings changed in the wolftv.cfg, see the large events section. This is the short explanation of chaining, if you have other questions contact me. Relationship to RtCW (and Command Syntax) WolfTV is based on the RtCW server. So many commands that work in RtCW will work in WolfTV, like rcon, set, reset, etc. Commmands can be entered in the normal way, using the RtCW console once you have connected to a WolfTV server. If you have run a RtCW server most of this will be familiar. Many of the settings (cvars) for RtCW servers are the same for WolfTV (Eg. sv_maxclients, rate, sv_maxrate, etc). Rcon works in the standard RtCW way. In the configuration file you can use any of the commands listed in Console Commands. All cvars you want to set must be set using one of set, sets, or setu. Commands should be placed on separate lines. Command Line The WolfTV command line is useful for overriding cvars in the config file, and executing additional config files. Commands on the command line are separated with the "+" character, each "+" counts as an enter. eg. WolfTV +set fs_basepath c:\wolf +set com_zonemegs 64 +exec server.cfg In addition there are some cvars that can only be set on the command line. The most important ones are: com_zonemegs: This is the main kind of memory that WolfTV uses. If you find you are running out of memory set this variable higher. The default value is 32. fs_basepath:Use this to specify the location of your RtCW directory. Console Commands The following commands are available from the console, config files, or rcon: set [name] [value] This command sets the cvar "name" to "value". Value can be either a number or words. setu [name] [value] Same as set, except the cvar is flagged as USERINFO and is sent to the server during connect sets [name] [value] Same as set, except the cvar is flagged as SERVERINFO and is sent to clients, and people viewing the server in a server browser such as Gamespy. exec [name] Reads the file "name" and executes the commands in it as if they were typed into the console. quit Causes the server to exit back to the command prompt. Choosing a Maxclients Bandwidth: Since WolfTV is a server, your hosting capacity depends mostly on your upload bandwidth. Upload requirements can either be estimated to be 50kBit/s per client or controlled with the sv_maxrate cvar. Setting sv_maxrate is the recommended way to control bandwidth usage. Setting sv_maxrate to 5000 will provide fairly smooth viewing for clients, and require 40 kBit/s (8 x 5000) of upload bandwidth per client. Eg. a T1 with sv_maxrate 5000 can hold: 1,100 kBit/s / 40 kBit/s/client = about 30 clients CPU Use: If you have a lot of bandwidth you're likely to run out of CPU power long before you run out of bandwidth. Note that this has changed drastically from previous WolfTVs. There are a number of ways to tell if your maxing out your CPU, note that looking at your CPU use percentage IS NOT ONE OF THEM. A WolfTV server can support 2 clients for every 10Mhz of CPU, with NO other processes running. eg. PIII 800 can do 800 / 5 = 160 clients eg. AMD 1Ghz with other processes taking 50% of the CPU can do: (1000 - (1000 * 0.50)) / 5 = 100 clients There are a couple ways to tell how much CPU you are using: If the view in WolfTV is choppy or "hanging" and you are sure you have enough bandwidth, then its probably a CPU use problem (it could also be your network q3 settings). If you are getting hitch warnings constantly (in the console) thats another good sign that your CPU is maxing out. The last (and best) way to tell is: do a com_speeds 1 in the console. This will spam out a bunch of lines like: frame:5515 all: 20 sl: 5 sv: 0 ev1: 5 ev2: 10 cl: 0 frame:5516 all: 21 sl: 1 sv: 0 ev1: 9 ev2: 11 cl: 0 frame:5517 all: 19 sl: 6 sv: 0 ev1: 3 ev2: 10 cl: 0 frame:5518 all: 20 sl: 2 sv: 0 ev1: 8 ev2: 10 cl: 0 Each number represents the number of milliseconds it took to do each task. The only number we care about is all:. If all is over 50 for 4 or 5 frames in a row, you need to reduce maxclients. Note that past 100 clients or so, due to buffering in WolfTV, the CPU use vs number of clients graph flattens out. Past 100 the CPU use guide line is more like 3 or 4 clients per 10 Mhz. Common Problems Unable to Bind Socket Error This error can be caused by several things. The first and esiest to check is that the port number you specified is not already in use. Try running WolfTV with +set net_port 29345 (or some other port number) on the command line. If the error also states that WolfTV is running out of memory, the commands below may help. Since WolfTV is a high bandwidth application it uses larger than normal socket buffers to handle large spikes in traffic. Several flavours of unix are not able to handle larger buffers by default; these commands will increase the maximum size. sysctl -w kern.ipc.maxsockbuf=8388608 sysctl -w net.inet.tcp.rfc1323=1 sysctl -w net.inet.tcp.sendspace=1048576 sysctl -w net.inet.tcp.recvspace=1048576 Also see the net_sendBuffer and net_recvBuffer cvars in wolftv.cfg. Using WolfTV How to connect To connect to WolfTV you need the current version of RtCW. If you play on the net at all you probably already have this. NO other client is required. To connect to WolfTV: Write down the IP and PORT of the server you wish to connect to Run RtCW Press ` to bring down the console Type the command \cl_allowdownload 1 and press enter Type the command \connect IP:PORT, where IP and PORT is the server address you wrote down in step 1. You should now be connected to WolfTV. Use the WolfTV_watch command to watch a game (if one is available). There is always a list of current WolfTV servers at www.gamerstv.net, you can get IPs and PORTs there. WolfTV also works with server browsers, so you can enter the ip and port into your favorite server browser and use it to connect. If you are running WolfTV on the same computer as your RtCW, use the ip "127.0.0.1". Eg. assuming the default port of 27970 the command would be \connect 127.0.0.1:27970 in the RtCW console. Commands Once you are connected to a WolfTV server, these commands are accessible by bringing down the console (use the ` key). All commands typed into the RtCW console must be preceded by a \. This simply lets RtCW know you are typing in a command instead of trying to say something. Normal Commands tv_nextgame Moves you to the next game, causing a new map to load, or reload the current one. This will only move to a game from a different server, it will not switch between views of the same game. tv_nextview Takes you to the next view for the same game, the map will not reload. WolfTV must be connnected to the server two or more times for this to work. tv_watch [gameNumber] se this command to change to a specific game. If you are in the waiting room; available games are listed in the center of your screen. Games are also available with the \WolfTV_gamelist command. tv_help Lists all the WolfTV_ commands. tv_admin [password] Use this command to become an admin of the WolfTV server. This command also allows you to watch restricted games (like the non-delayed stream). tv_camera [password] This command has several effects depending on where you use it. Using this command will give you access to \WolfTV_watch restricted (non-delayed) games. Once watching a game, this command will give you control of the camera. tv_playerlist Lists everyone on the WolfTV server. tv_status Displays general information about the WolfTV server, like number of clients connected. tv_gamelist Displays a list of all games you can watch. The numbers displayed before each game can be used with \WolfTV_watch. tv_silent Turns off "chat beeps" for chat on the q3 server (for both players and spectators). Issue this command once to turn on and again to turn back off (its a toggle). tv_nospeech Will turn off chat from other WolfTV users, but still print chat from the game server. Can be used in conjunction with WolfTV_silent. Issue this command once to turn on and again to turn back off (its a toggle). tv_messages Turn the display of connect, disconnect, and error messages on and off. This is a toggle. Admin Commands tv_connect IP:PORT [password] This command will connect WolfTV to a RtCW server. IP:PORT follows the standard RtCW format, PORT is optional. "password" is the password required to connect to the RtCW server, if it is not passworded this should be left out. tv_disconnect [gameNumber] Tells WolfTV to disconnect from a server, demo, game, etc. "gameNumber" is optional, but should used when WolfTV is connected to more than one game at a time. "gameNumber" corresponds to the numbers returned by \WolfTV_gamelist. tv_kick [clientNumber] Kick a client off the WolfTV server. Use the \WolfTV_playerlist to find out the "clientNumber". tv_centerprint [message] Print "message" in the center of all client's screen. Use \n to do multi-line centerprints. tv_demo [demoName] Begin playback of the demo named "demoName". All demos must be in "WolfTV/demos", that is a subdirectory called "demos" under the "WolfTV" directory. tv_stop [gameNumber] Stop playing a demo. gameNumber is the number of the game (demo) to stop playing. gameNumber is optional. tv_record [recordName] [gameNumber] Begin recording a demo called "recordName". The game you are currently watching will be recorded in "WolfTV/demos". Or optionally you can specify the game to record with gameNumber. tv_stoprecord [gameNumber] Stop recording a demo (for the game you are watching). Or optionally stop recording for the game [gameNumber]. tv_description [gameNumber] [description] Sets the description for a game. eg. \WolfTV_description 2 c1 vs c2 would set the description of game 2 to "c1 vs c2". tv_freemove This experimental command allows admins free movement inside demos and live games. tv_playerinfo [clientNumber] Prints the IP of the client. This can be used with WolfTV_ban to ban the clients entire subnet. tv_ban [IP mask or clientNumber] Ban a single client, or range of IPs off the server. Clients matching the ban will be kicked automatically. To ban a specific client use WolfTV_playerlist to get their number, and then WolfTV_ban 23 (or whatever number instead of 23). This will add their IP to the ban list and kick them off the server. Bans can also be placed by IP mask. eg. WolfTV_ban 10.1.2.3 will ban that specific IP, WolfTV_ban 10.1.0.0 will ban the entire 10.1.x.y subnet. tv_removeban [IP mask] Remove a ban. IP mask must be exact, use WolfTV_listbans for a listing. eg. WolfTV_removeban 10.1.2.0 will remove a ban placed on the entire 10.1.2.x subnet. tv_listbans Print a listing of all the bans in effect. Other Features Rcon Rcon allows you to send a command to a WolfTV server just like it was typed directly into the WolfTV console. Rcon for WolfTV follows the same format as RtCW's. There are two ways of using rcon with a WolfTV server. One, if you are connected to the server, bring down the console and type \rcon [password] [command] [args]. Eg. if you were connected to a WolfTV server with rcon password "test1" and wanted to set sv_maxclients to 100 the command would be: \rcon test1 sv_maxclients 100 The second way of sending an rcon command does not require being connected to WolfTV. Bring down the console and enter the command \rconAddress IP:PORT. Where IP and PORT is the address of the WolfTV server. Then follow the procedure in One for entering rcon commands. Common Tasks This section gives step by step instructions for common tasks within WolfTV. This section is open, so if you feel something should be here that isnt feel free to write it up and send it in. Remove Team Chat from a Demo Many demos recorded during competitive matches contain details of a team's strategies. WolfTV provides a way of removing this team chat from demos: Install WolfTV You should now have a sub-directory called "WolfTV" Create a directory under "WolfTV" called "demos" Copy the demo you want to remove the team chat from into the "demos" directory Run WolfTV like: WolfTV +WolfTV_demo [your_demo_name] +WolfTV_record [new_demo_name] +set WolfTV_serverTeamChat 0 eg. WolfTV +WolfTV_demo test1 +WolfTV_record test2 +set WolfTV_serverTeamChat 0 Sit back, have a beer, and let WolfTV run. This process will take as many minutes as your demo is long. WolfTV will say "Stopped Recording." when its done. Connecting WolfTV to a Server Once WolfTV is up and running you will probably want to connect it to a RtCW server. This is accomplished using the WolfTV_connect command. It can be issued from the console or from within the game: Write down the IP and PORT of the server you want to connect to. Domain names (eg. gamerstv.net) are acceptable instead of the IP. Connect to WolfTV with your RtCW Use the WolfTV_admin command to become an admin Issue the WolfTV_connect command WolfTV should now be connecting to the server. Once WolfTV has connected the non-delayed and delayed games will be added to the game list. OK, if you are still reading I'm assuming the above didnt work. Connecting to pure servers can be a little more complicated than the above. WolfTV will connect to pure servers, but it requires the correct pk3s to be in the appropriate directories. Trying to get WolfTV connected to a pure server is the exact same as trying to connect with RtCW. You may be able to set cl_allowDownload to 1 and download the required pk3s, but only if the RtCW server has sv_allowDownload 1. If cl_allowDownload 1 dosnt work, you will have get the required pk3s from somewhere else, or use rcon to set the server to sv_pure 0. Note: The above information on downloading pk3s only applies to servers running a MOD, you should always be able to connect to "baseq3" servers. Also on the topic of mods... see Compatible Mods. Some mods have client authentication which will not allow WolfTV to connect without special support from the MOD. Becoming Cameraman This section assumes that WolfTV is connected to a RtCW server. Becoming a cameraman will allow you to control the WolfTV spectator on the RtCW server. Everything you do as cameraman is sent through to the RtCW server, this includes mouse movements and commands. Useful commands are "\follownext" and "\team s". Everyone watching the game you are cam'ing sees the same thing you do To become cameraman: Issue the \WolfTV_camera command. This gives you permission to join (and see) non-delayed games. To control the camera you must be watching a non-delayed game. Use the \WolfTV_gamelsit command to get a list of the games (or look in the center of your screen if are in the waiting room). Look through the list for games with "WOLF" in the TYPE column, these are non-delayed. Use the \WolfTV_watch command to switch to the non-delayed game you want to camera. Issue the \WolfTV_camera command AGAIN and you will be given control of the camera. Chaining WolfTV The practical side of chaining WolfTV servers is simple: use WolfTV_connect to connect to another WolfTV server. You are now part of the WolfTV chain. This process is "fire-and-forget"; once connected everything else is handled by WolfTV. More connections are automatically made for every game being broadcast. To make things easier you can add the WolfTV_connect to WolfTV's command line, so it will automatically connect to the chain when run (eg. WolfTV +WolfTV_connect 127.0.0.1:27971) For a more indepth discussion of chains see WolfTV Chains. How WolfTV works WolfTV provides access to real-time viewing of popular RtCW matches. Once WolfTV has connected to a server, anyone wanting to spectate the match can connect directly to WolfTV. Since only one spectator spot is needed by WolfTV, the RtCW server avoids having to serve to 100s of spectators. If one server is not enough to meet the demand, WolfTV servers can be used to connect to each other. By "chaining" WolfTV servers virtually an unlimited number of spectators can be supported. The Camera When watching a game on WolfTV everyone sees the same thing. This is main difference between spectating on a RtCW server, and spectating on a WolfTV server. When watching a game one client can take the camera, then everyone on the WolfTV server sees what the camera man chooses to watch (very much like the way TV works). The ability to watch whomever you want may be in a future version of WolfTV. CL_timenudge cl_timenudge is probably the most important RtCW command when watching matches on WolfTV. With cl_timenudge set to 300-500 viewing will be much smoother, even with large amounts of packet loss. The technical explanation: The cl_timenudge command tells RtCW to run a certain number of milliseconds "behind" the actual game time. In other words if RtCW receives a snapshot with a timestamp of 30000ms and cl_timenudge is 400 it will process that snapshot at 30400ms instead of 30000. It adds, or nudges, 400ms on to the game time that the snapshot is valid for. With cl_timenudge set to 500 in a regular game you are effectively watching a recording of the game delayed by 500ms. When watching a game on WolfTV, you are watching a recording, delayed by whatever number of seconds the server admin has chosen. When watching a recording there is no such thing as lag, based on ping times. You can still have packet loss, which can create lag, but thats where cl_timenudge can help out a lot. With cl_timenudge set to 500, you can have 500ms of solid packet loss before RtCW has to start extrapolating (predicting). For example, in a normal game, when a packet is lost, RtCW has to guess what that packet would have contained, which is called extrapolating (predicting). You get a yellow spike on the top part of the netgraph when this happens. Extrapolating is a guess at what the players/(entities) are going to do. Since human motion is not predictable you get prediction errors, and therfore "lag". With cl_timenudge 500, if one packet is lost, because you are watching a recording, RtCW can look ahead to the next packet, and interpolate between them. Blue on the netgraph means RtCW is interpolating between packets. When interpolating RtCW does not have to guess. It knows what the next snapshot will contain, where the players are going to move to, what the entities in the game are doing, etc. Players, entities simply get moved in a straight line from their current position to the position in the next packet. Normally you cant see this, but under conditions of extremely high packet loss it can be seen. Compatible Mods If you would like your mod listed here, and can verify that WolfTV works with it, send me a short note. OSP Changes 1.0a ADD: tv_nextgame and tv_nextview commands ADD: tv_forwardIPStats cvar ADD: tv_allowRedirection cvar FIX: problem when two servers have different passwords FIX: directory case problems under *unix 1.0 Initial Release
There are no comments yet. Be the first!