Old Wiki:Destiny

From EVEmu Wiki
Jump to navigation Jump to search

Destiny Information

"Destiny" is CCP's name for the EVE renderer. EVEmu needs to care about this because, at least so far, the server sends the client some sort of data blocks in the 'state' field of DoDestinyUpdate? notifications which get fed directly into the destiny DLL. The overall content of these destiny state streams is basically information about entities in the current system being entered (stations, planets, moons, asteroid belts, players, etc), including their position and some other paremeters about them. After significant effort, I have figured out that these streams are compressed. It looks like they wrote their own little mini-run-length-encoding compression algorithm to compress out all of the zero-bytes in the stream. This is now implemented in EVEZeroCompress.cpp/h. The run length is limited to 7 or 8 bytes, and the classes are zero/non-zero. They use an octet to contain two opcodes, and its not garunteed to alternate between data classes, if one stream of a single class of bytes is encoded, then you generate a new opcode every 7 or 8 bytes. This can lead to expansion of the stream if there are few/no zeros in it. I have not seen any indication that they will check for inflation like this and just not run it through the compression. It seems that a field is inherently compressed like this by specifics in their code, as I have not seen logic dictating when this compression is expected/generated and when it is not.

CCP Ship Physics Info

Movement

EVE-wiki Acceleration