Hi!

This is the public beta thread for ANet 1.3.0.1.
It's the biggest release since ANet was released the first time.

I also want to announce two important changes for you:
  • When ANet 1.3.0.1 is officially released a new edition called ANet Web will be available. This edition will offer you access to the http, ftp and udp features of ANet. So it's easy to create lan and internet serverlists with this edition, even if you are not using ANet for the other network stuff.
  • The ANet Demo has changed: ANet Demo now offers you access too ALL functions of ANet but the Demo closes automatically after 3 minutes.


What's new:
  • The function http_get_status() now returns more detailed information if there was an error during the http post.
  • The VoIP feature was completly rewritten. It isn't only easier to handle it also offers the possibility to play streams as 3d sounds (i.e. on the position of entities). This creates the illusion as if the entity would speak.
  • enet_disconnect_client() now accepts a string that is passed to the EVENT_DISCONNECTED of the client.
  • If ANet.dll can't get loaded and Lite-C is used an error message will pop up that prompts the user to install the Visual Studio 2008 Redistributable Package.
  • Because of an internal improvement of the entity system an unlimited number of global entities can be created now.
  • Server paswords (enet_init_server()), the levelname (enet_set_level()), the file- and functionname of entites (enet_ent_create()) and the functionname of events (enet_sv/clset_event()) have no length limit anymore.
  • EVENT_PLAYERNAME is called on all participants if a client changed its playername. Additionally a playername is now only sent if it has changed.
  • enet_send_pos() and enet_send_angle() have got a third parameter. With this parameter sending of the z coordinate and of the tilt and roll angles can be prevented.
  • New macros: MY_GLOBPOINTER, MY_CREATOR, MY_CLIENTID and MY_CONNECTION were added to anet.h and anet_h.wdl. Additionally a description of the defines and macros was added to the manual.
  • enet_sv/clsend_event got a new parameter (length). Additionally if an event is called the size of the sent msg is passed. Thereby also none zero terminated data can be sent with enet_sv/clsend_event.
  • A new tip "sending of key states/bits" was added to the "Tips and Tricks" section.
  • A new function enet_send_data() allows sending of all data types of Lite-C.
  • The function enet_send_array(), enet_send_skills() and enet_send_flags() were optimized. They cause 3 byte less traffic if their packet is sent to the server and 2 byte less from the server to the client. enet_send_flags() doesn't additionally causes 1 byte traffic for every flag that is sent anymore.
  • 2 new functions (enet_protect_data() and enet_unprotect_data()) were added. They allow to protect data segments from cheaters.
  • All function were so overloaded, that they also accept char* instead of STRING* only. With this improvement it's not necessary to use _str() anymore.
  • A new function enet_ent_morph() was added. The function morphs global entities.
  • All http function now return something. Additionally the max. number of running http posts at the same time was reduced to 5. This reduces the used ram.
  • ftp_get_size() is now overloaded under Lite-C so that it returns also double values. This is required when sending big files.
  • Two new functions ftp_getdate() and ftp_get_timestamp() were added. These functions return the file size and timestamp of the last change.
  • The url is now checked in http_post(), ftp_get(), ftp_put() and ftp_getdate() so that the functions don't crash if an invaild url was passed.
  • If the filename isn't appended to the url that was passed to ftp_get() or ftp_put(), the filename of the parameter path is now added.
  • A new function enet_get_fstatus() was added. The function returns if a file is sent to the client/server currently.
  • A new function enet_get_fclientid() was added. The function returns the ClientID of the other participant of a file transfer.


Bugfixes:
  • If a sound gets streamed with voip_play() or voip_loop() the sound was never played on the client with clientid 0.
  • If a huge amount of data is received with http_post() the function crashes.
  • If http_free() is called during a http post the plugin crashes sometimes.
  • If anet_use_handles(0) is used, a variable can't be sent with enet_send_var().
  • If the string that was passed to http_get_result() is much bigger than the received data length the function crashed.
  • If more than 2 clients are connected with a VoIP server and talk at the same time, the stream sounds choppy.
  • Because ENet is running in a thread, ENet doesn't work 100% correct (there are some random connection losts if the traffic is high).
  • If a none existing url was passed to http_post(), http_get_status() always returned 0 instead of -2.
  • Sometimes the ftp upload didn't work properly
  • If directly after closing a ftp transfer a new transfer is started, the new transfer doesn't get executed.
  • The server isn't able to send files to clients with a ClientID greater 0.
  • Even if a participant doesn't accepts the receiving of a file, the transfer continued on the sender.


I think some features are not totally clear to you so I will explain them:

What is this 3d voip about? It's like if you skype with somebody, but the stream of your opponent is played in a 3d world as 3d sound. So you can play the stream at the position of your opponents entity and it sounds like his character is speaking with you.
enet_protect/unprotect_data() offers you the possibility to protect memory segments from changes through a hacker/cheater. If somebody hacks the client code of your application and this special one get's access to let's say enet_send_var(), it's still impossible to change variables because enet_protect_data() allows no ANet function to change this variable.
enet_send_data() now offers you the possiblity to send EVERY Lite-C datatype (structs, double, float, int...)

Some hints:

Please notice this is a public BETA!! So there still can be bugs that crash your current projects. If you find bugs report them, please. You can send me a mail to anet_support[at]aauer[.]com
The examples and tutorials that are available on the anet homepage are not converted to ANet 1.3.0.1 yet!
Please notice that you may have to do some changes in your code until your project runs fine with ANet 1.3.0.1. Just read through the manuals update/changes section to see what has been changed.


Ok I think I mentioned everything. Here is the new Version: Get ANet 1.3.0.1 here

Important: You have to install OpenAL 1.1 or the plugin won't get loaded. You can get it for free here: http://connect.creativelabs.com/openal/Downloads/oalinst.zip
Now alot of people will say: Oh no not something that has to be installed if I want to create a project using ANet. That's not true, Gamestudio will shortly also move to OpenAL. So if you create a project with Gamestudio you have to install OpenAL anyway.

Have fun while testing!


ANet - A stable and secure network plugin with multi-zone, unlimited players, voip, server-list features,... (for A7/A8)!
get free version