rswiki-book/src/634-Protocol.md

1.3 KiB

\[Category RS2

== '''Packet structure''' == When the client sends a packet to the server, the first byte encapsulates its opcode. This specific opcode is encrypted with a value generated by the ISAAC PRNG seeded with a dynamically server generated key during the login block. The server decrypts it and associates the opcode to the packet's respective predefined size. If the packet does not contain a fixed size, the opcode will be followed by either a byte or a word - varying per packet - for its proper size. This is then followed by the payload.

An addition to modern emulation protocols was the addition to allow packets with an opcode of a word to be deciphered from the buffer. This is done by taking the first two ISAAC PRNG seeds; each byte from the buffer at the current offset is deciphered sequentially. If the first byte deciphered is less than the maximum of a signed byte then the packet is assumed to be byte length, otherwise it's considered to be word length.

== '''Login''' == Every connection to the main 'gateway' server sends a single byte of data, mostly well known as the connection type. The connection type tells the main server which type of connection you wish to initiate. The old engine list consists of:

Needs documentation on how to login