Annotation of quakeworld/client/docs.txt, revision 1.1.1.1

1.1       root        1: 
                      2: The QuakeWorld connection process:
                      3: ---------------------------------
                      4: 
                      5: servercount
                      6: Each time a server changes maps, it will bump the servercount variable.  The signon
                      7: messages sent from the client to the server will include a servercount, and if the
                      8: server detects that it has changed levels while the client is in the process of
                      9: connecting, the client connection process will be restarted.
                     10: 
                     11: svc_skinlist
                     12: 
                     13: MAX_SIGNON_BUFFERS...
                     14: 
                     15: +attack;wait  : this both does the attack and prints a chat?
                     16: 
                     17: put frag counts in userinfo as *frags?
                     18: 
                     19: no forward to server commands unless active?
                     20: 
                     21: changelevel / reconnect confusion
                     22: 
                     23: syncing the fixangle over the reliable channel with the first update
                     24:        option to put the update in the reliable message?
                     25: 
                     26: 
                     27: --------------
                     28: A "connect <server>" command is executed on the client.
                     29: 
                     30: CL_Connect_f() disconnects from the current server if connected, 
                     31: sets the current server to the new value, and sends the first connection packet.
                     32: 
                     33: The connection packet will be resent by CL_CheckForResend() every two seconds until the server connects.
                     34: 
                     35: A connection packet is an out of band packet containing "connect <userinfo>" with userinfo quoted.
                     36: 
                     37: --------------
                     38: 
                     39: The server receives the OOB message in SVC_DirectConnect()
                     40: 
                     41: It can respond with an OOB client print of "banned" or "server is full" if the client
                     42: cannot enter the game.
                     43: 
                     44: If the client can get in, the server will initialize a new client_t structure with a
                     45: netchan_t, and respond with an OOB message containing S2C_CONNECTION.  Further
                     46: communication will be through sequenced netchan_t messages instead of OOB messages.
                     47: 
                     48: The client_t->state is set to cs_connected
                     49: 
                     50: --------------
                     51: 
                     52: if S2C_CONNECTION packet is dropped, the connect message will be resent after two
                     53: seconds and the server will recognize the address and reuse the allocated client_t FIXME:bug?)                 
                     54: 
                     55: When the client receives the S2C_CONNECTION, it initializes cls.netchan and sends
                     56: a "new" string command over the netchan to the server.
                     57: 
                     58: cls.state is set to ca_connected       FIXME: change to cs_connected?
                     59: 
                     60: --------------
                     61: 
                     62: The "new" usercommand on the server is issued by the client every time they enter a level,
                     63: which is why none of the information is sent in the initial S2C_CONNECTION message. 
                     64: 
                     65: "new" sends over 
                     66: 
                     67: Before the client can begin playing in the server, the following information must be sent:
                     68: 
                     69: gamedir
                     70: svc_serverinfo
                     71:        PROTOCOL_VERSION
                     72:        servercount             // for detecting when the server
                     73:        gamedir                 // for deciding the add-on directory (qw, ctf, etc)
                     74:        playernumber    // the client will allways be in this slot
                     75:        the qc string of world.message  // usually the level's full verbose name
                     76: cdtrack
                     77: fullserverinfo
                     78: 
                     79: when received, the client changes state to ca_onserver.  When the client receives
                     80: all the information needed to render a frame, the state will be changed to ca_active
                     81: 
                     82: .....
                     83: 
                     84: svc_soundlist
                     85: 
                     86: .....
                     87: 
                     88: svc_modellist
                     89: 
                     90: .....
                     91: 
                     92: prespawn passes the contents of the sv.signon_buffers, which hold
                     93: static entity spawning, static sound spawning, and all the entity baselines
                     94: FIXME: don't need to pass all baselines, uninitialized probs?
                     95: 
                     96: .....
                     97: 
                     98: "spawn" sends all dynamically changing state (fullclient updates, lightmaps, frags)
                     99: and ma
                    100: 
                    101: FIXME: 32 clients could be up to 16k in updates, which overflows the 8k packet size
                    102: 
                    103: FIXME: there is an updating hole between the sending of spawn data and the client
                    104: being notified 
                    105: 
                    106: 
                    107: "begin"
                    108: 
                    109: Actually spawns the client into the world as a visible entity.
                    110: 
                    111: The client_t->state is set to cs_spawned, so normal datagram updates begin
                    112: 
                    113: -----------------------
                    114: 
                    115: When the first valid packetentities_t arrives at the client, cls.state is set
                    116: to ca_active, and rendering can begin.
                    117: 
                    118: FIXME: make sure player and packets are both valid

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.