by Spike » Sat Sep 08, 2012 10:59 am
regarding existing larger coord protocols, there's RMQ's 999 protocol (good choice for more vanilla NQ clients), DP5+ (lots of other changes, and is a moving target), and FTE's QW extension (the only such qw-based version).
There's likely a few others, and you can always create your own.
FTE servers can use all 3 of the above protocols, depending on what the client connects as, but it will only use them if sv_bigcoords is set - it can cope with different protocols, but not different primitive data types.
assuming you already support one fte protocol extension in your client, adding FTEPEXT_FLOATCOORDS=0x00008000 to the pext handshake will enable qw connectivity+larger coords+larger angles when the fte server is using sv_bigcoords 1, with no other protocol changes.
coords are floats, angles are boosted to 16bit.
the RMQ 999 protocol is identical to the fitz 666 protocol, except that there is a feature bitmask following the version value (MSG_ReadLong), a bitmask=0 is otherwise identical to 666.
These are the relevent values:
#define RMQPRFL_SHORTANGLE (1 << 1)
#define RMQPRFL_FLOATANGLE (1 << 2)
#define RMQPRFL_24BITCOORD (1 << 3)
#define RMQPRFL_FLOATCOORD (1 << 4)
#define RMQPRFL_EDICTSCALE (1 << 5)
#define RMQPRFL_ALPHASANITY (1 << 6)
#define RMQPRFL_INT32COORD (1 << 7)
Other values should probably report incompatibility.
the svn version of rmq currently uses (PRFL_INT32COORD|PRFL_SHORTANGLE|PRFL_EDICTSCALE).
fte servers will use (RMQFL_FLOATCOORD|RMQFL_SHORTANGLE) for network precision, if you connect using NQ protocols with sv_bigcoords 1.
I'm not going to document the full 666 protocol here though, only that there are more svc_clientdata bits, and more entity fast-update bits, and more svcs. I'm not aware of any other changes, its just those additions that need special care. Server-side support should be fairly trivial.
the DP5, DP6, DP7 protocol family all use the same fixed settings.
coords are floats, angles are boosted to 16bit.
far too many other changes.
.