ANet Version 1.2.3.4 released

Posted By: Dark_samurai

ANet Version 1.2.3.4 released - 06/02/09 10:42

Hi!

I'm very proud, that the Beta Phase is over now and the new ANet Version is now ready for the official release.
All costumers should already received a mail with the new version (Please contact me if you got no mail!).

What's new:
+ Huge amount of Bug fixes
+ Template Scripts (DR with update ranges, internet/lan serverlists)
+ FTP Up-/Downloads
+ 5 HowTo's
+ "Player Variables Feature" moved from ANet Professional to Standard
+ improved security
+ improved eventsystem
+ new helpful functions

All the example scripts/tutorials are updated and can be downloaded here. I also created some SED Code Templates that should help programming. For those who don't know: SED Code Templates are short snippets, that can be inserted in your script by one click (it's on the right of SED). The SED Code Templates are also available on the downloadsite.

Before updating, download the latest manual and read throught the "updates" section.

New version here

Have fun!
Posted By: Helghast

Re: ANet Version 1.2.3.4 released - 06/02/09 10:47

the BETA already proved worth it's money, if anyone is still in doubt, dont hesitate, BUY IT NOW!

I bought pro a while ago, and learnt alot, also Peter is very helpfull as support!

great job so far, and thanks.

regards,
Posted By: croman

Re: ANet Version 1.2.3.4 released - 06/02/09 11:01

peter, the link on your website is broken, it gets me to the google.at shocked
Posted By: Dark_samurai

Re: ANet Version 1.2.3.4 released - 06/02/09 11:03

@Helghast: Thanks for this nice kind of words!

@cerberi_croman: Which link do you mean?
Posted By: croman

Re: ANet Version 1.2.3.4 released - 06/02/09 11:05

ANet-Demo
version: 1.1.2.1
Posted By: croman

Re: ANet Version 1.2.3.4 released - 06/02/09 11:14

it's working now, thnx
Posted By: croman

Re: ANet Version 1.2.3.4 released - 06/02/09 19:18

Peter, you have a PM
Posted By: Dark_samurai

Re: ANet Version 1.2.3.4 released - 06/12/09 18:49

The Lite-C sourcecode of the Simple 3D Chat tutorial was missing in the archiv. I've added the source now. You can get it by downloading the tutorial again.
Posted By: Dark_samurai

Re: ANet Version 1.2.3.4 released - 07/12/09 10:18

Ok, some time has passed since I updated this thread. Of course I'm still working on ANet, trying to improve the plugin.

This is my current To-Do list:
- new script examples (VoIP, FTP, Onlinehighscore,...) (30%)
- Bug fixes (70%)
- 3D VoIP (40%)

The new script examples will all come with a compiled .exe. I know that I've promissed a techdemo. I thought making a small demo for every feature would make more sence because the source code will be smaller and thus easier to understand.
The 3D VoIP still makes a lot of problems. The main problem is, that I can't get access to a SOUND element through snd_buffer()... If there is anybody who has experience with snd_buffer() contact me, please.
Posted By: Dark_samurai

Re: ANet Version 1.2.4.3 - internal betatest - 08/11/09 14:45

The new version is in internal beta now.
I will release the final version in ~1 week if everything goes good.

Btw. I still had no luck with 3D VoIP. It seems like snd_buffer() isn't working correct. I will send conitec a detailed bugreport soon. If this is working also 3d VoIP can be implemented easily.
Posted By: lostclimate

Re: ANet Version 1.2.4.3 - internal betatest - 08/12/09 15:07

cool, ive finally got around to working with it and am quite pleased. most of the features I do on my own instead (entity management, etc) but just being about to send the variables and functions works pretty well for me.
Posted By: Dark_samurai

ANet - New feature anouncements - 08/20/09 09:27

@lostclimate: Nice to see another happy ANet user. laugh

Ok, I'm already planning the features for the next (and maybe last) update:

new functions:
- enet_send_to(char data, var length, var clientid) //sends data (no need to be zero terminated) to any client or server. On the destination host the RECEIVE_EVENT is called with the data in the msg parameter. This allows much more efficient networkprogramming.
- enet_send_struct(void* data, var size, var clientid) //sends a struct (Lite-C only)

other changes:
- enet_send_pos/ang get a new parameter called mode. It allows to prevent sending the Z_Coordinate and allows to prevent sending the Tilt and Roll angle.
- enet_send_string() can also be used to send entity strings.

And of course 3DVoIP will be implemented (this time really :D).

Btw. I'm already working on 3D VoIP again and it seems that I have found the bug that always blocked my work. I already posted in BugHunt, so lets see laugh

If you have any feature requests tell them now, please! This will possible be the last chance because I want this version to be the last one with new features. Other versions will only contain bug fixes.
Posted By: darkinferno

Re: ANet - New feature anouncements - 08/20/09 12:34

so i can just include the new dll? or i'll need to make changes to script?
Posted By: Pappenheimer

Re: ANet - New feature anouncements - 08/20/09 14:36

Is there a chance to provide a demo with exe and free c files, to test it in action very fast?
What about a demo of a simple game - maybe, the 3D Chat is already such a thing - which can handle the maximum of players?
Put a big watermark on the screen and a link in the menu to your tool, and it is a great advertisement. Even better is a permanent server. (I hope you don't mind my dreams.)
The best would be a game demo which uses all the given features, though. (Although, it is unrealistic to ask for that. frown )
Posted By: Dark_samurai

Re: ANet - New feature anouncements - 08/20/09 15:14

Quote:
so i can just include the new dll? or i'll need to make changes to script?


All you have to change will be that the enet_send_pos/ang will have a 3rd parameter => everywhere you call that function in the script, you will have to add a 3rd parameter. That's all.

@Pappenheimer: The new demos are currently in internal beta test. They show most of the features of ANet Professional. I think I will start with an own multiplayer game after finishing this last update. It will have a playable demo so you will see ANet in action.
Posted By: Pappenheimer

Re: ANet - New feature anouncements - 08/20/09 18:55

That sounds very good! laugh
I'm curious to see this all in action with many players.
Could be a nice event in this community, like that one with the game of Schokokeks.
Posted By: Dark_samurai

Re: ANet - New feature anouncements - 08/21/09 09:54

I had 3 new ideas for features:

- PLAYERNAME_EVENT ...is called when a client changed his playername
- enet_lock(var* variable) ...locks a variable/array/string/struct
- enet_send_var() ...allows also to send variables of type double/long/int/float/char

The enet_lock() function is very important when it comes to make your game cheating secure.

Imagine the following: In an array you store the health of all players. Now a bad guy could hack a client application and use an enet_send_ function to change the array content. If you used enet_lock() and locked the array, the array can't be changed through a send function.
Posted By: Dark_samurai

Download ANet 1.2.4.3 (brand new) - 08/21/09 15:02

The new version 1.2.4.3 is ready!

What's new?
The new versions has a lot of major bug fixes and improvements.
There are also 3 new example scripts added to the downloadsite: voip, ftp and file transfer

Where to get it?
You can get the new demo here.

Hints:
Read the section updates/changes in the manual before using the new update.
Also the default.c file has been changed so download it again, please.
Please notice that this is not the version with the features I talked in the last posts (these are the planned features of the next update).


Have fun!
Posted By: MMike

Re: Download ANet 1.2.4.3 (brand new) - 08/24/09 19:29

for example if i use the http post, and call a php that will echo "hello" how do i recieve that on a string..?
Posted By: lyingmime

Re: Download ANet 1.2.4.3 (brand new) - 08/25/09 06:14

Dark_samurai,

I'm not sure if you're yet thinking of improved entity management, but I think here's where many people get frustrated with gamestudio's and now anet's system.

The problem we face is that in a large zone all entities have to be created on all of the connected clients, severely limiting the number of possible connections. Yet, typically a player will be well out of range of most of the other players and NPCs and so does not need to be instructed to create all those entities, until they come within, say, a certain distance.

The workaround that I am aware of currently is to use ent_createlocal for all of the entities and then to create all of the backend synchronization functions over from scratch. The built in functions are unuseable for any server zone with more than maybe 50 or 100 connections. It's an unfortunate waste of the feature set if a large scale project has to recreate them.

I'm wondering if you could make a third option to the ent_create and ent_createlocal functions that creates the entity on the server and on a specific set of clients, as given by an array of IDs. Changing the list of IDs would add or remove entities only from the clients that are new to the list or who have left it. That way, the designer has control over which clients are included for a particular entity and we can use the features of the existing entity synchronization system.

I believe that most MMOs do something of this sort. The zone level is divided into a grid of areas. At certain intervals, the server checks what area the client is in and updates that client with the entities that are in that area and each adjacent area. (So you don't get near the edge of an area and see nothing on the other side until you step over.)

I don't think that thousands of connections are possible without this feature. (Let me know if I'm thinking correctly.)
Posted By: Gumby22don

Re: Download ANet 1.2.4.3 (brand new) - 08/25/09 07:50

Originally Posted By: lyingmime
Dark_samurai,

I'm not sure if you're yet thinking of improved entity management, but I think here's where many people get frustrated with gamestudio's and now anet's system.

The problem we face is that in a large zone all entities have to be created on all of the connected clients, severely limiting the number of possible connections. Yet, typically a player will be well out of range of most of the other players and NPCs and so does not need to be instructed to create all those entities, until they come within, say, a certain distance.

The workaround that I am aware of currently is to use ent_createlocal for all of the entities and then to create all of the backend synchronization functions over from scratch. The built in functions are unuseable for any server zone with more than maybe 50 or 100 connections. It's an unfortunate waste of the feature set if a large scale project has to recreate them.

I'm wondering if you could make a third option to the ent_create and ent_createlocal functions that creates the entity on the server and on a specific set of clients, as given by an array of IDs. Changing the list of IDs would add or remove entities only from the clients that are new to the list or who have left it. That way, the designer has control over which clients are included for a particular entity and we can use the features of the existing entity synchronization system.

I believe that most MMOs do something of this sort. The zone level is divided into a grid of areas. At certain intervals, the server checks what area the client is in and updates that client with the entities that are in that area and each adjacent area. (So you don't get near the edge of an area and see nothing on the other side until you step over.)

I don't think that thousands of connections are possible without this feature. (Let me know if I'm thinking correctly.)


I believe this is all possible with your own scripts using Anet, however it would be a nice feature to offer, so long as it is over the top of the existing low-level functions.

Don
have a great day
Posted By: Dark_samurai

Progress of ANet 1.3.0.0 - 08/25/09 13:05

Quote:
for example if i use the http post, and call a php that will echo "hello" how do i recieve that on a string..?


Through http_get_result().

@lyingmime: I think it's no problem if there are all 100 entities created. It will take a few seconds when synchronizing but thats only once when you load the level.
The only problem is, that if 100 player entities are in one level, you will have an amzingly high traffic on each client. This can be removed by implementing an update range which can be done easily with the built in features. Update range means: Only send the position updates to a client that is in a certain range.
All you need for that is vec_dist() and enet_send_skills/var/pos/ang/...


I'm already making great progress with the new features. This is what I already finished:
Quote:

- PLAYERNAME_EVENT
- enet_sv/clsend_event can also send data that is not zero terminated
- enet_send_pos/ang, new options: DONTSEND_Z and ONLYSEND_PAN added
- enet_send_data, allows sending structs and all datatypes of lite-c
- enet_un/protect_data(), protects data from beeing changed by sending functions/cheaters
- a few new macros/defines for cleaner programming
- enet_send_array/skills/flags produce less traffic


If you have ideas for new macros/defines, let me know laugh

EDIT: Forgot a feature that I've implemented!
Posted By: Germanunkol

Re: Progress of ANet 1.3.0.0 - 08/25/09 14:38

A team member mentioned a "port punchthrough"... A feature that makes sure people don't have to manually open ports when they start a server.
Would something like this be a realistic feature request?
I don't really know anything about it...
Posted By: lostclimate

Re: Progress of ANet 1.3.0.0 - 08/25/09 14:38

I can see lyingmime's point. I am only using the variable sending feature, and the event feature, and making my own custom ent management system because i need complete control of what entities are where, on what machines.
Posted By: Dark_samurai

Re: Progress of ANet 1.3.0.0 - 08/25/09 15:58

Quote:
A team member mentioned a "port punchthrough"... A feature that makes sure people don't have to manually open ports when they start a server.
Would something like this be a realistic feature request?


This is only supported by some routers, so it's not worth to implement this.

Quote:
I can see lyingmime's point. I am only using the variable sending feature, and the event feature, and making my own custom ent management system because i need complete control of what entities are where, on what machines.


But you can do this with the current entity management. The management only does creating the entity everywhere and gives it a unique pointer so that the entity can be controlled by every participant. After that it's up to you, the entity manager does nothing to update the positions, angles, skills or flags. => you have still pretty much room to do whatever you like.
What makes your project so unique that you can't use the entity built in entity management functions? This could help me to improve it.

I don't get the point why it's needed to permanently create/remove an entity if it get's out of this "range" like lyingmime mentioned. If you don't want that this entity is visible, use the invisible flag. And if you don't want that this entity produces traffic, don't send something to the clients that don't see the entity.


This are the new macros:
Code:
#define MY_GLOBPOINTER enet_ent_globpointer(my)
#define MY_CREATOR enet_ent_creator(enet_ent_globpointer(my))
#define MY_CLIENTID enet_get_clientid()
#define MY_CONNECTION enet_get_connection()



Are you using such macros? What else do you think would be useful?

I forgot to post a feature that I've already implemented: - enet_send_array/skills/flags produce less traffic
I edited my old post!
Posted By: Dark_samurai

ANet 3DVoIP coming soon - 08/25/09 16:20

Good news! Thanks to JCL I had the breakthrough for the 3DVoIP.

I think the 3DVoIP will be finished tomorrow. When it's done I will upload a demo wink
Posted By: lyingmime

Re: Progress of ANet 1.3.0.0 - 08/25/09 22:09

Dark_samurai and lostclimate,

I don't think it's a unique case. Let's take some pretty typical numbers for an MMO:

Just as a hypothetical, say you have a modest-sized zone with 1,000 player characters. And like most MMOs, there are mobs of monsters that outnumber the players, perhaps 5,000 of them. And say each player is killing a monster every few seconds. Each time a monster is killed, it is removed from every client, and each time one respawns it is created on every client. The aggregate is that ent_create and ent_remove are being sent 1,000 / 3 = 333 times per second to 1,000 clients!

Our bandwidth tally per second is something like:
1,000 spawns * 1/3 seconds * 1,000 clients = 333,000 ent_creates
1,000 kills * 1/3 seconds * 1,000 clients = 333,000 ent_removes
6,000 entities * 3/second * 1,000 clients = 18,000,000 position updates

333,000 + 333,000 + 18,000,000 = 18,666,000 updates per second.

Now, I don't know the packet sizes offhand, but ent_create is considerably larger than a position update (because of player/monster statistics, etc.), but even if we take them as equal, making the entities invisible and limiting their position updates is only part of the battle.

If we limit entity updating like you suggested so that each client is only in range of 10 other players and 50 monsters, we get:
1,000 spawns * 1/3 seconds * 1,000 clients = 333,000 ent_creates
1,000 kills * 1/3 seconds * 1,000 clients = 333,000 ent_removes
60 entities * 3/second * 1,000 clients = 180,000 position updates

333,000 + 333,000 + 180,000 = 846,000 updates per second.

Which is a lot better. Though a connecting client still has to wait for 6,000 ent_creates to transfer. If ent_creates and ent_removes are sent only to clients in range, we get:

10 spawns * 1/3 seconds * 1,000 clients = 3,300 ent_creates
10 kills * 1/3 seconds * 1,000 clients = 3,300 ent_removes
60 entities * 3/second * 1,000 clients = 180,000 position updates

3,300 + 3,300 + 180,000 = 186,600 updates per second. And a connecting client only has to wait for 60 ent_creates to transfer.

From 846,000 to 186,600 is almost another magnitude reduction even assuming the packet sizes are equal. If server bandwidth is the limiting factor, that's another 10x as many clients that can connect, the difference between capping out at 500 or 5,000 clients per server. It's a huge difference in terms of 'lag.' So it's something that every large-scaled MMO has to do.

Yeah, it can be done with ent_createlocal, but these aren't really local entities. The server needs to create a unique pointer to reference them across all of the clients.
Posted By: Gumby22don

Re: Progress of ANet 1.3.0.0 - 08/26/09 11:03

so i'm thinking what you're after to avoid using ent_createlocal is a ent_create(ENTITY, Location, NetworkRange) - adding a range variable to all ent_creates which only gives their data to valid clients...

Interesting point- if we create a server with a million "zones" or areas we don't really want ent_create to send all init data to all clients, only the ones that are in the vicinity, and need to see it appear.
Posted By: Dark_samurai

Re: Progress of ANet 1.3.0.0 - 08/26/09 11:45

Quote:
hough a connecting client still has to wait for 6,000 ent_creates to transfer.


This won't take that long. Loadingtime will still be like in a normal MMO game. I would guess max. ~10 seconds or less.
I don't see a problem here.

First of all to your numbers and calculations:
I only know/played one MMORPG in my life, and this was everquest 2. The whole world was split in hundrets of small levels which only contained ~20 players.

1000 or even 100 players at the same time can't be done by an indie developer because of several reasons:
- Such a game won't be played at the same time by so much people!
- You won't have the people to test your system!
- You won't have the money to rent as much servers!
- You won't have the people to create that big world/dungeons...
- ...

And if you as indie developer want to create a MMORPG game do it like the maker of Everquest did it: Split your world into small levels/zones. Then an MMORPG can be done so easy with ANet (read the Multizones HowTo). Now you will say: If there are so much zones, there will be so much level loadings. Yes, thats true! But loading a level with Gamestudio is that fast that this won't be a problem wink

To the feature itselfe:
If I think more exact about this feature I think about a lot of problems that would come with it.

So my conclution: If you really have a game that will be the next WOW then writing it for yourself won't be a problem. You still will get the richest man on the earth wink
And for all "smaller"/normal multiplayer games, the current entity manager is ideal!


[EDIT] I'm afraid that I have less time to finish 3DVoIP today. I will post the demo as soon as I'm ready.
Posted By: Dark_samurai

Re: Progress of ANet 1.3.0.0 - 09/12/09 09:26

I have not much time for the 3DVoIP at the moment, because I'm currently working on 2 other projects. Sorry!

I did a few small things for ANet:
- All functions are overloaded now (in Lite-C). So they also except char* now.
- I removed a few typing/translation mistakes from the manual.

What I plan to do for ANet in the next time:
- finishing 3D VoIP
- creating a version of ANet that uses no threads for the enet function (only for testing purpose)
- an example of serverside movement, using the physic engine and interpolation
Posted By: Dark_samurai

Future of ANet Demo(s) - 09/13/09 09:01

This is how the ANet Demo will be limited in the future:
- ANet Demo also has the functions of ANet Standard/Professional unlocked
- ANet Demo only allows 4 connections
- ANet Demo has a starting window
- ANet Demo can't be used for commercial projects
- ANet Demo locks all functions after a certain time
Posted By: Dark_samurai

Re: Future of ANet Demo(s) - 09/19/09 09:48

Small Update:
- I think I managed to fix an enoying bug that only randomly appeared
- I've implemented a new function: enet_ent_morph()
- I've added a new page to the manual, where all defines and macros are listed and explained
Posted By: Germanunkol

Re: Future of ANet Demo(s) - 10/12/09 16:42

A feature request: (correct me if this is not needed or already implemented, but I can't find it)

var enet_get_fsender(var FTransferID);

a function that returns the clientid of the client who _started_ the transfer.

The reason I need it: in the EVENT_FTRANSFER_ABORTED event, I need to know who started sending the file, to know which client I can now send a new file to, because there's no more transition going on now.

I have a workaround for now (saving the clientid in the file name, which i need to do anyways), but the function would be nice for the future.
Could be useful for other setups as well: in the other two file sending events, I know who the other client is (and in _STARTED I even know that this other client was the one starting the file transfer), so I can sortof figure out who the sender was (if I didn't send the file, it must've been him), but it's not the nicest way, and in the _ABORTED event I only receive a var of the one who aborted the transfer, which may have been my current client.
Posted By: Germanunkol

Re: Future of ANet Demo(s) - 10/14/09 19:41

...And how about a "enet_ftransfer_active(var clientid)" that returns 1 if there's a file being transmitted between me and clientid or 0 if there's not file being transmitted? would make coding file transfers much, much easier.

What I'm trying to do is have every client send their logo to the server, and the server distributing them out. it's becoming quite a pain...
Posted By: Dark_samurai

Re: Future of ANet Demo(s) - 10/15/09 14:13

Thanks for your request, I'll put it on my list!
© 2024 lite-C Forums