[Verse-dev] New version
Eskil Steenberg
eskil at obsession.se
Mon Sep 27 17:25:43 CEST 2004
Hi
I just emailed Emil a new version that could potentially be R4, So if
you want to move over to R4 now is the time to do so. Unless Emil finds
something bad this version has my stamp of approval.
R4 is a major Release because verse can now do everything i want it to
do, with the exception of a future Physic node. We got the bones, the
timing, the curves, Subsurface scattering, the animation, the audio, its
all there. R5 is not likely to make any real changes to the API.
The changes for R4 are:
+ Major rewrite of connections
+ Major rewrite of networking
+ Major performance boost
+ Data encryption added
+ Verse now only uses one port.
+ added verse_host_id_create and verse_host_id_set
+ verse_send_connect takes "expected_host_id" param
+ verse_send_connect_accept takes "host_id" param
+ new verse_send_connect_terminate replaces terminate and deny commands
+ verse_send_node_create now takes "VNodeOwner" param
+ New function to get a sessions time: verse_session_get_time
+ new functions: verse_send_o_anim_run and verse_send_o_anim_stop
+ All transform commands updated for new time format
+ verse_send_a_stream commands updated for new time format
+ Method names can be longer.
+ bones now have "weight" and "reference" params
+ VMatFrag now uses enums instead of uint8s
+ New animation fragment
+ New volume fragment
+ output now has "label"
+ verse_send_b_layer_set_tile -> verse_send_b_tile_set
+ verse_send_b_init_dimensions now verse_send_b_dimensions_set
+ verse_send_c_curve_key_destroy renamed verse_send_c_key_destroy
+ Curves can now have up to 4 dimensions.
+ verse_send_c_curve_key_set -> verse_send_c_key_set
+ verse_send_c_curve_key_destroy -> verse_send_c_key_destroy
+ Audio blocks added
Things that are not done:
- testing.
- Login Encryption.
- Ping command not properly implemented.
- Physic node (dont hold your breath on that one)
- Some server implementation.
One thing that I wanted in R4 was login encryption, But i have not had
the time to work on an implementation of math for large numbers (does
any one have a simple implementation on can look at?). How ever the API
for this is in place so it shouldest be a big thing to add in R5.
There is one more thing on my mind: Performance.
The Performance has improved a lot with version R5, but i have found a
new bottle neck. Packing. This is most notable when subscribing to large
texture maps. In one particular test that i did i created a so large
image that once the server was done packing it, the clients had timed out!
I have attempted to fix this in a variety of ways.
One way of fixing this is to have larger tiles: 16*16 pixels, this will
help a bit, and will help even more if we have different sizes for
different types. we could have 32*32 for 8 bit layers. This obviously
only help with large bitmaps, not other types of data.
An other way is to in our server implementation not just loop the
subscriptions but to push them out in parts. This will mess it up
slightly in the server end, but It may have to be done.
Here how ever is a bolder idea, How about letting users "pre pack"
commands, store them as pointers and then send them away.
VPackCmd *my_bitmap_call;
verse_pack_mode(TRUE);
verse_send_b_tile_set(node_id, layer_id, x, y, z, VN_B_LAYER_UINT8, tile);
my_bitmap_call = verse_pack_get();
verse_pack_mode(FALSE);
verse_send_pack(my_bitmap_call);
verse_pack_destroy(my_bitmap_call);
Now this way a server can store the tiles (or any call) in a packed
format, that will make it very quick to send the same data over and
over. It would be not too hard to implement , but im a little reluctant
to add an other way of sending data.
Any opinions?
E
More information about the Verse-dev
mailing list