[Verse-dev] Verse R5 coming closer; list of changes

Emil Brink emil at obsession.se
Tue Jun 28 15:46:00 CEST 2005


Hello.

It seems that the next major release of the Verse protocol and API
is coming closer. Here is a list of the changes done to the header
file, the API, and the under-the-hood bits on the wire between the
last release (r4p1) and the upcoming r5p0:

This might seem like a daunting list, but most of the changes are
very trivial or (in the case of removals) don't impact client code
at all.

Feel free to comment with requests for more information about any
change, and we will try to respond.

I would like to make a step-by-step list of things that will need
addressing in client code, does that sound interesting?

verse.h Changes
---------------
* The verse.h header file now wraps itself in extern "C", which
   helps use from C++ programs.
* Removed unused V_NT_PARTICLE symbol from the VNodeType enum.
* Added new type VBufferID, an alias for uint16.
* Removed unused types VNMBufferID and VNPEFfectID.
* Added new types VNQuat32 and VNQuat64, for quaternions.
* Added new type VNOPackedParams, for object method parameters. This
   is just an alias for void, so old code (using void *) still builds.
* Removed traces of compression support for audio; there is none.
* Removed traces of different audio transfer modes.
* Renamed the VNALayerType type into VNABlockType since it's used
   not only for layers but also for streaming audio data.
* Made the block sizes for different sample types into symbols in
   the VNAConstants enum.
* Added new type VNABlock which is a union, much like VNBTile.
* Removed unused type VNPSpace.

API Changes
-----------
* Made verse_host_id_create() return void.
* Made verse_method_call_pack() use VNOPackedParams.
* Made the expected_host_id argument to verse_send_connect() const.
* Renamed second argument to verse_send_ping().
* Made tag data argument to verse_send_tag_create() const.
* Made vector arguments to object transform calls const.
* Use VNQuat32 and VNQuat64 to express rotations in object and calls.
* Made object method group IDs 16- bit (were 8-bit by mistake in R4).
* Use const VNOPackedParams in verse_send_method_call().
* Removed verse_send_o_anim_stop().
* Removed "anim_id" parameter from verse_send_o_anim_run().
* Renamed verse_send_g_vertex_set_real32_xyz() into ..._xyz_real32(),
   and the same for the 64-bit variant.
* Use VNQuat64 for the "rot" parameter, and added pos_label and
   rot_label parameters to verse_send_g_bone_create().
* Made fragment parameter to verse_send_m_fragment_create() const.
* Made tile parameter to verse_send_b_tile_set() const.
* Text node calls use new VBufferID type rather than (weird)
   VNMBufferID.
* Dropped left-over "index" parameter from verse_send_t_buffer_create().
* Made vector arguments to verse_send_c_key_set() const.
* Renamed audio layers into buffers, since they are not same-sized like
   geometry layers the name was confusing.
* Dropped the VNATransferType "transfer" parameter from audio calls.
* Use const pointer to VNABlock for samples in audio calls.

Network Changes
---------------
* Data transmissions are now encrypted. Verse uses a mixture of two
   algorithms for encryption: RSA is used to protect initial connect-
   traffic, and a quicker XOR is used for the main subsequent data.
   RSA key length is currently 512 bits. The addition of crypto means
   that the binary format of the connection-establishment packets have
   changed.
* Send and receive queue system has been redesigned and rewritten to
   fix problems and improve performance.
* ID assignment has changed for vertices, polygons and material frag-
   ments; now you can have either client-assigned IDs by using
   (sequential) IDs, or ask the server to assign IDs by specifying ~0.
   This makes it easier to uploading data easier and faster.

There is no frozen release date for Verse R5 yet, but this week would
be a good time for me (vacation looms).

Regards,

/Emil


More information about the Verse-dev mailing list