      GamersTV Readme for version 3.0
      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
      Installation
        Quick Install
        Advanced Install
      Running the GTV Server
        Admining GTV
        GTV Chains and Redirection
        Relationship to Quake 3 (and Command Syntax)
        Command Line
        Console Commands
        Choosing a Maxclients
        Common Problems
          Unable to Bind Socket Error
      Using GTV
        How to connect
        Commands
          Normal Commands
            gtv_watch 
            gtv_help 
            gtv_admin 
            gtv_camera 
            gtv_playerlist 
            gtv_status 
            gtv_gamelist 
            gtv_silent 
            gtv_nospeech 


          Admin Commands
            gtv_connect 
            gtv_disconnect 
            gtv_kick 
            gtv_centerprint 
            gtv_demo 
            gtv_stop 
            gtv_record 
            gtv_stoprecord 
            gtv_description 
            gtv_freemove 
            gtv_playerinfo 
            gtv_ban 
            gtv_removeban 
            gtv_listbans 


        Other Features
          Rcon
      Common Tasks
        Remove Team Chat from a Demo
        Connecting GTV to a Server
        Becoming Cameraman
        Chaining GTV
      How GTV Works
        The Camera


        CL_timenudge


      Compatible Mods
      Changes
        3.0
        3.0 Test4
        3.0 Test3
        3.0 Test2

      License
      This license agreement can be changed without notice.

      1. Use of GTV: The following uses of GTV are prohibited:

      You agree not to disassemble, reverse engineer, decompile, or otherwise 
      modify GTV.

      You agree not to sell, rent, or lease GTV.

      2. Warranty: GTV 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 GTV 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 GTV. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF INCIDENTAL 
      OR CONSEQUENTIAL DAMAGES SO THIS LIMITATION MAY NOT APPLY TO YOU.



      Installation
        Quick Install
        A quick install of the GTV server involves two steps:


          Extract the .zip into your Quake 3 directory. Make sure that "extract 
          with path names" is turned on. A subdirectory called "gtv3" should be 
          created.

          Look in the gtv3 subdirectory for a file called "gtv.cfg". Open this 
          file with notepad or your favorite text editor. Edit the options in 
          the "Quick Setup" section.


        You can now run gtv.exe in your Quake 3 directory. Also see Admining GTV 
        and Common Tasks


        Advanced Install
        GTV requires the following things to operate correctly. This section 
        will describe the how to setup these requirements.

        Requirements:

          Access to the Quake 3 pk3 files (pak0.pk3, pak1.pk3, etc) 
          A "gtv3" subdirectory 
          A valid Quake 3 CD key 
          The GTV configuration file (gtv.cfg) 


          Access to the Quake3 pk3 files: GTV needs to access all of the 
          standard Quake 3 pk3 files. If GTV is run in the same directory as 
          quake3.exe it should be able to access these files without further 
          information. To run GTV in a different directory, or if GTV 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_quake3_dir_here" on the command line (see 
          Command Line for more information). 
          A "gtv3" subdirectory: Once GTV knows the location of your Quake 3 
          directory it must be able to find the correct configuration files. 
          Create a directory under your Quake 3 directory called "gtv3". This is 
          where GTV will store configuration and other information. 
          A valid Quake 3 CD key: If GTV can find your quake 3 directory 
          correctly, it will attempt to use the file "q3key" in the baseq3 
          directory. If you would like to use a different CD key to connect to 
          servers, create a file called "q3key" in the gtv3 directory, and place 
          your CD key in it. 
          The GTV configuration file: GTV looks in the "gtv3" directory for a 
          file called "gtv.cfg". This file contains all of the information GTV 
          requires to run. Before running GTV 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 Quake 3 .cfg 
          format (see Relationship to Quake 3 for more information). 


      Running the GTV Server

      This section is mostly background information, read Admining GTV and see 
      Common Tasks for step by step practical instructions.

        Admining GTV
        Admining GTV is fairly straight forward. Think of GTV as a normal Quake 
        3 server. It just happens to be able to connect to other servers. To get 
        GTV setup so that other people can watch the game the normal sequence of 
        events is:


          Setup and run GTV 
          Connect to GTV 
          Use the gtv_admin command to become an admin 
          Connect GTV to the server 
          Become cameraman 
          Tell others to connect 

        The normal way to admin GTV is to connect to it with Quake 3 and issue 
        commands. This allows you to control the camera. Most commands can also 
        be issued in the GTV console, however you will need to find someone with 
        Quake 3 to do the camera.

        Once you have GTV connected to a server, you might be wondering, what 
        next? You need a way to control what people connected to GTV see. This 
        is where the camera comes in, see Becoming Cameraman. 


        GTV Chains and Redirection
        To create a GTV chain simply connect one GTV server to another one. The 
        "master" GTV server (the first one in the chain) controls what the users 
        of every other GTV server in the chain see. The master server is the 
        only one with a "camera man". By chaining GTV 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 GTV. 

        The best setup for a gtv chain is: one private gtv server at the event, 
        one "master" gtv server that connects to the one at the event and is 
        passworded. After that other mirror gtv servers that know the password 
        can connect to the master gtv. This is good for several reasons... you 
        can have multiple gtv 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 gtv server to a different gtv 
        server Eg. someone tries to connect to the master gtv, but its full, so 
        the master looks at all the gtv servers connected to it and chooses the 
        one that is "most empty". This way only one gtv server IP needs to be 
        posted, and gtv 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 gtv server 
        IPs, and recommend to people that they try the master IP first. The 
        master server also needs some settings changed in the gtv.cfg, see the 
        large events section. This is the short explanation of chaining, if you 
        have other questions contact me. 


        Relationship to Quake 3 (and Command Syntax)
        GTV is based on the Quake 3 server. So many commands that work in Quake 
        3 will work in GTV, like rcon, set, reset, etc. Commmands can be entered 
        in the normal way, using the Quake 3 console once you have connected to 
        a GTV server. If you have run a Quake 3 server most of this will be 
        familiar. Many of the settings (cvars) for Quake 3 servers are the same 
        for GTV (Eg. sv_maxclients, rate, sv_maxrate, etc). Rcon works in the 
        standard Quake 3 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 GTV 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. gtv +set fs_basepath c:\quake3 +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 GTV 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 Quake 3 
          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 GTV 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 GTVs. 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 GTV 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 GTV 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 GTV, 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 gtv with +set net_port 29345 (or some other port number) on 
          the command line.

          If the error also states that GTV is running out of memory, the 
          commands below may help. Since GTV 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 gtv.cfg. 

      Using GTV
        How to connect
        To connect to GTV you need the current version of Quake 3, 1.29. If you 
        play on the net at all you probably already have this. NO other client 
        is required.

        To connect to GTV:


          Write down the IP and PORT of the server you wish to connect to 
          Run Quake 3 
          Press ` to bring down the console 
          Type the command \cl_allowdownload 0 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 GTV. Use the gtv_watch command to watch 
          a game (if one is available). 

        There is always a list of current GTV servers at www.gamerstv.net, you 
        can get IPs and PORTs there.

        GTV 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 GTV on the same computer as your Quake 3, 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 quake 3 console. 


        Commands

        Once you are connected to a GTV server, these commands are accessible by 
        bringing down the console (use the ` key). All commands typed into the 
        Quake 3 console must be preceded by a \. This simply lets Quake 3 know 
        you are typing in a command instead of trying to say something. 


          Normal Commands
            gtv_watch [gameNumber]
            Use this command to change the game you are watching. If you are in 
            the waiting room; available games are listed in the center of your 
            screen. Games are also available with the \gtv_gamelist command. 

            gtv_help
            Lists all the gtv_ commands.
			 
            gtv_admin [password]
            Use this command to become an admin of the GTV server. This command 
            also allows you to watch restricted games (like the non-delayed 
            stream). 

            gtv_camera [password]
            This command has several effects depending on where you use it. 
            Using this command will give you access to \gtv_watch restricted 
            (non-delayed) games. Once watching a game, this command will give 
            you control of the camera. 

            gtv_playerlist
            Lists everyone on the GTV server. 

            gtv_status
            Displays general information about the gtv server, like number of 
            clients connected. 

            gtv_gamelist
            Displays a list of all games you can watch. The numbers displayed 
            before each game can be used with \gtv_watch. 

            gtv_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). 

            gtv_nospeech
            Will turn off chat from other gtv users, but still print chat from 
            the game server. Can be used in conjunction with gtv_silent. Issue 
            this command once to turn on and again to turn back off (its a 
            toggle). 


          Admin Commands
            gtv_connect IP:PORT [password]
            This command will connect GTV to a Quake 3 server. IP:PORT follows 
            the standard Quake 3 format, PORT is optional. "password" is the 
            password required to connect to the Quake 3 server, if it is not 
            passworded this should be left out. 
            
            gtv_disconnect [gameNumber]
            Tells GTV to disconnect from a server, demo, game, etc. "gameNumber" 
            is optional, but should used when GTV is connected to more than one 
            game at a time. "gameNumber" corresponds to the numbers returned by 
            \gtv_gamelist. 
            
            gtv_kick [clientNumber]
            Kick a client off the GTV server. Use the \gtv_playerlist to find 
            out the "clientNumber". 

            gtv_centerprint [message]
            Print "message" in the center of all client's screen. Use \n to do 
            multi-line centerprints. 

            gtv_demo [demoName]
            Begin playback of the demo named "demoName". All demos must be in 
            "gtv3/demos", that is a subdirectory called "demos" under the "gtv3" 
            directory. 

            gtv_stop [gameNumber]
            Stop playing a demo. gameNumber is the number of the game (demo) to 
            stop playing. gameNumber is optional. 

            gtv_record [recordName] [gameNumber]
            Begin recording a demo called "recordName". The game you are 
            currently watching will be recorded in "gtv/demos". Or optionally 
            you can specify the game to record with gameNumber. 

            gtv_stoprecord [gameNumber]
            Stop recording a demo (for the game you are watching). Or optionally 
            stop recording for the game [gameNumber]. 

            gtv_description [gameNumber] [description]
            Sets the description for a game. eg. \gtv_description 2 c1 vs c2 
            would set the description of game 2 to "c1 vs c2". 

            gtv_freemove
            This experimental command allows admins free movement inside demos 
            and live games. 

            gtv_playerinfo [clientNumber]
            Prints the IP of the client. This can be used with gtv_ban to ban 
            the clients entire subnet. 

            gtv_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 gtv_playerlist to get their number, and then gtv_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. gtv_ban 10.1.2.3 will ban that specific IP, gtv_ban 
            10.1.0.0 will ban the entire 10.1.x.y subnet. 

            gtv_removeban [IP mask]
            Remove a ban. IP mask must be exact, use gtv_listbans for a listing. 
            eg. gtv_removeban 10.1.2.0 will remove a ban placed on the entire 
            10.1.2.x subnet. 

            gtv_listbans
            Print a listing of all the bans in effect. 


        Other Features
          Rcon
          Rcon allows you to send a command to a GTV server just like it was 
          typed directly into the GTV console. Rcon for GTV follows the same 
          format as Quake 3's. There are two ways of using rcon with a GTV 
          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 GTV 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 GTV. Bring down the console and enter the command 
          \rconAddress IP:PORT. Where IP and PORT is the address of the GTV 
          server. Then follow the procedure in One for entering rcon commands. 

      Common Tasks
      This section gives step by step instructions for common tasks within GTV. 
      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. GTV provides a way of removing this team chat from 
        demos:


          Install GTV 
          You should now have a sub-directory called "gtv3" 
          Create a directory under "gtv3" called "demos" 
          Copy the demo you want to remove the team chat from into the "demos" 
          directory 
          Run GTV like: gtv +gtv_demo [your_demo_name] +gtv_record 
          [new_demo_name] +set gtv_serverTeamChat 0
          eg. gtv +gtv_demo test1 +gtv_record test2 +set gtv_serverTeamChat 0 
          Sit back, have a beer, and let GTV run. This process will take as many 
          minutes as your demo is long. GTV will say "Stopped Recording." when 
          its done. 



        Connecting GTV to a Server
        Once GTV is up and running you will probably want to connect it to a 
        Quake 3 server. This is accomplished using the gtv_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 GTV with your Quake 3 
          Use the gtv_admin command to become an admin 
          Issue the gtv_connect command 

        GTV should now be connecting to the server. Once GTV 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. GTV will connect to pure servers, but it requires the correct 
        pk3s to be in the appropriate directories. Trying to get GTV connected 
        to a pure server is the exact same as trying to connect with Quake 3. 
        You may be able to set cl_allowDownload to 1 and download the required 
        pk3s, but only if the Quake 3 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 GTV to connect without special 
        support from the MOD. 


        Becoming Cameraman
        This section assumes that GTV is connected to a Quake 3 server. Becoming 
        a cameraman will allow you to control the GTV spectator on the Quake 3 
        server. Everything you do as cameraman is sent through to the Quake 3 
        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 \gtv_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 
          \gtv_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 "QUAKE3" in the TYPE column, these are 
          non-delayed. 
          Use the \gtv_watch command to switch to the non-delayed game you want 
          to camera. 
          Issue the \gtv_camera command AGAIN and you will be given control of 
          the camera. 



        Chaining GTV
        The practical side of chaining GTV servers is simple: use gtv_connect to 
        connect to another GTV server. You are now part of the GTV chain. This 
        process is "fire-and-forget"; once connected everything else is handled 
        by GTV. More connections are automatically made for every game being 
        broadcast. To make things easier you can add the gtv_connect to GTV's 
        command line, so it will automatically connect to the chain when run 
        (eg. gtv +gtv_connect 127.0.0.1:27971)

        For a more indepth discussion of chains see GTV Chains. 


      How GTV works
      GTV provides access to real-time viewing of popular Quake 3 matches. Once 
      GTV has connected to a server, anyone wanting to spectate the match can 
      connect directly to GTV. Since only one spectator spot is needed by GTV, 
      the Quake 3 server avoids having to serve to 100s of spectators. If one 
      server is not enough to meet the demand, GTV servers can be used to 
      connect to each other. By "chaining" GTV servers virtually an unlimited 
      number of spectators can be supported. 
        The Camera


        When watching a game on GTV everyone sees the same thing. This is main 
        difference between spectating on a quake 3 server, and spectating on a 
        GTV server. When watching a game one client can take the camera, then 
        everyone on the GTV 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 GTV. 
        CL_timenudge


        cl_timenudge is probably the most important quake 3 command when 
        watching matches on GTV. 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 quake 3 to run a certain number of 
        milliseconds "behind" the actual game time. In other words if quake 3 
        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 GTV, 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 quake 3 has to start 
        extrapolating (predicting). For example, in a normal game, when a packet 
        is lost, quake 3 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, quake 3 can look ahead to the next packet, and interpolate 
        between them. Blue on the netgraph means quake 3 is interpolating 
        between packets. When interpolating quake 3 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 GTV works with 
      it, send me a short note. 
        The CorkScrew Mod v2.11b 
        CPM and CMPA 
        Excessive 
        Instagib 
        OSP 
        Q3F 
        Team Arena 
        Urban Terror 
        X-treme Battle 

      Changes
        3.0
          ADD: Banning by IP 
          ADD: Custom "waiting room" maps 
          ADD: gtv_playerinfo command 
          ADD: net_sendBuffer and net_recvBuffer cvars 
          ADD: filtering of osp "stats" command to avoid strcmd overflows 
          ADD: gtv_localChatBeeps cvar 
          FIX: could not connect to passworded servers with a space in GTV's 
          name 
          FIX: Dont print large port numbers as negative numbers 
          FIX: "resource temporarily unavailable" on 200+ client servers 
          FIX: not enough memory to bind socket error under FreeBSD 
          FIX: chains did not communicate passworded client info correctly 
          FIX: following header not displayed for one player 
          FIX: gtv crashed when rcon'ing gtv_disconnect 
          FIX: chaining had problems when the master GTV was passworded 
          FIX: GTV now works under Win98/ME 
          CHANGE: changed error/disconnect code 
          CHANGE: gtv_autoWatch can specify game number or auto 
          CHANGE: upgrade to protocol 67 
          CHANGE: chaining now has active error checking - should be more stable 

          CHANGE: upgrade to GTVprocotol 105 
          CHANGE: dont kick admins for spamming - done by request >:) 
          CHANGE: chained GTVs dont need cd-keys 
          CHANGE: added \n to the gtv_centerprint functionality 


        3.0 Test 4
          ADD: support for chaining GTV servers together 
          ADD: automatic redirection of clients to best server - load balancing, 
          etc. 
          ADD: snapshot buffering (cpu) 
          ADD: net_localIP cvar for redirection 
          ADD: net_interface cvar for linux servers 
          ADD: sv_challengeFloodProt and sv_maxAtuhClients cvars for large 
          events 
          ADD: sv_privateClients and sv_privatePassword now work 
          ADD: GTV shows up in lan browsers - add getInfo OOB command support 
          ADD: gtv_nospeech and gtv_silent commands 
          FIX: cd key loading improved: reports errors, checks key, reads from 
          gtv3 or baseq3 
          FIX: no longer kicked for invalid pax if camera does a vid_restart 
          FIX: sys_console 0 now works correctly under linux/freeBSD 
          FIX: linux server now creates directories with correct permissions 
          FIX: baselines now used 
          FIX: improved support for big config strings 
          FIX: linux bug with com_profile 1 
          FIX: memory leak on local errors 
          FIX: follow flag forced incorrectly (looking at floor during some demo 
          playback) 
          FIX: gtv_record was broken in test3 
          FIX: "midgit bug" - invalid delta after fragments 
          FIX: sometimes unable to cam after a map change 
          FIX: problem with gtv_autowatch 
          CHANGE: server disconnections no longer reported as local errors 
          CHANGE: updated gtv_status command with cameramen, chain info 
          CHANGE: gtv_gamelist works from console 
          CHANGE: give admin to anyone connecting locally 
          CHANGE: default com_zonemegs to 40 com_hunkmegs to 1 
          EXPERIMENTAL: gtv_freemove command for admins 


        3.0 Test 3
          ADD: many optimizations 
          ADD: server-side autodownload (sv_allowdownload) 
          ADD: command completion 
          ADD: gtv_autoWatch cvar 
          ADD: com_profile cvar 
          ADD: gtv_description command 
          FIX: linux console 
          FIX: journal 2 crasher 
          FIX: bug: timeout on gtv_watch, unable to talk 
          FIX: cl.snap.serverTime < cl.oldFrameServerTime error on gtv_watch 
          CHANGE: gtv_camera command works from delayed games 


        3.0 Test 2
          ADD: ability to connect to a server multiple times (to watch different 
          players) 
          ADD: demo playing 
          ADD: demo recording 
          ADD: will now connect to pure servers 
          ADD: client-side auto-downloading (and cl_allowDownload cvar) 
          ADD: gtv_serverChat and gtv_serverTeamChat cvars 
          ADD: console messages are printed to admins 
          ADD: print connect messages ( challenging... # ) 
          ADD: gtv_playerlist is now formatted 
          FIX: changed forced name from ^7GTV- to GTV- (fixes osp invalid cgame 
          problem) 
          FIX: CM's not free'd in some cases 
          FIX: crasher freeing games 
          CHANGE: filtering of "team" command to allow "team s" 
          CHANGE: optimized some server packet processing 
          CHANGE: all games (even ones not ready) are printed to admins 


