|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.