IrrNet - Irrlicht Network Framework 0.36 (Now Windows/Linux)
IrrNet - Irrlicht Network Framework 0.36 (Now Windows/Linux)
This version is outdated, please goto:
http://sourceforge.net/projects/irrnet
and download the latest SVN.
irrNet V0.36!
Download Mirror 1:
http://www.sendspace.com/file/9havx2
(This one doesnt include a specific source file for linux but it will still work with linux with a tiny bit of modification. (Pretty much replacing all (void*) with (char*) and several other minor things thatll pop up at compile time...))
Original Post:
Hey guys,
I searched around the net for ages and nowhere could I find a suitable and easy to use network api. People said RakNet was good but you have to pay $100 for commercial titles and I found the tutorial for the primer a little confusing. Then I stumbled upon Enet, and for a long time I was very dumbfounded at how to use it. Where are all the simple functions, like "sendPosition" or "sendScale". They are nowhere!
So, after a hard night fooling around with Enet (hehehe) and "memcpy", I decided to write my own! It is still in the very early stages and I doubt it will be suitable for really big projects for quite a while but expect a first release soon. I have written most of it so far it just needs some testing. Depending on interest I can keep working on this. Although my network knowledge is newly gained noone else seemed up to the task of writing a network wrapper so I will try my best.
Enjoy, and please read the instructions and look through example code! If you have any questions/suggestions post them here.
PS: I am thinking to incorporate EPIC library for client prediction sometime...
http://sourceforge.net/projects/irrnet
and download the latest SVN.
irrNet V0.36!
Download Mirror 1:
http://www.sendspace.com/file/9havx2
(This one doesnt include a specific source file for linux but it will still work with linux with a tiny bit of modification. (Pretty much replacing all (void*) with (char*) and several other minor things thatll pop up at compile time...))
Original Post:
Hey guys,
I searched around the net for ages and nowhere could I find a suitable and easy to use network api. People said RakNet was good but you have to pay $100 for commercial titles and I found the tutorial for the primer a little confusing. Then I stumbled upon Enet, and for a long time I was very dumbfounded at how to use it. Where are all the simple functions, like "sendPosition" or "sendScale". They are nowhere!
So, after a hard night fooling around with Enet (hehehe) and "memcpy", I decided to write my own! It is still in the very early stages and I doubt it will be suitable for really big projects for quite a while but expect a first release soon. I have written most of it so far it just needs some testing. Depending on interest I can keep working on this. Although my network knowledge is newly gained noone else seemed up to the task of writing a network wrapper so I will try my best.
Enjoy, and please read the instructions and look through example code! If you have any questions/suggestions post them here.
PS: I am thinking to incorporate EPIC library for client prediction sometime...
Last edited by BlindSide on Tue May 29, 2007 11:05 am, edited 23 times in total.
-
- Posts: 1029
- Joined: Thu Apr 06, 2006 12:45 am
- Location: Tennesee, USA
- Contact:
Looks pretty cool...but what u did is missing one feature that i always tried to implement.
Ok listen u create an object on one maschiene and now ur network manager has to reproduce the thing on all other connected systems. and ofcourse also has to destroy them and build them on new connecting systems. I always got memory leaks by implementing this and was never able to solve the problem...maybe u can find a way.
Ok listen u create an object on one maschiene and now ur network manager has to reproduce the thing on all other connected systems. and ofcourse also has to destroy them and build them on new connecting systems. I always got memory leaks by implementing this and was never able to solve the problem...maybe u can find a way.
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
Yeah im thinking of implementing this later.
What I will do is have a node type struct, with all the materials etc. This will have to be preset on all machines, and all the client has to send is sendCreateNode(int nodetype, position, scale, rotation);
So basically a nodetype id which leads to a struct holding info on what the mesh material animator etc etc is...
What I will do is have a node type struct, with all the materials etc. This will have to be preset on all machines, and all the client has to send is sendCreateNode(int nodetype, position, scale, rotation);
So basically a nodetype id which leads to a struct holding info on what the mesh material animator etc etc is...
ok so u basicly will have a hardcoded or xml-based table wich has to on all maschines? This could lead to a big hack when u use a external file to set the table. For example in an action-game u could exchange all players with a glowing ball so u can see them easily or something like that.
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
I should really whip something together for Irrlicht real quick. My job for the past 6 or 7 years has been Network Programming/Engineering, I've implemented my own protocols for reliable Unicast UDP, and reliable multicast( although for reliable multicast, Microsoft has implemented PGM which will be nice, but is very unstable at this point ).
Anyways, I can't use code from work, but I'll write up some new classes specifically for using with Irrlicht( using Irrlicht core classes ). I'll start out by writing generic UDP and TCP classes that are cross platform for Linux / Windows( I cannot do anything for MAC, don't use it, don't even know someone who owns one ). Maybe you can use them instead of this Enet stuff, I'll make it really simple to use.
Anyways, I can't use code from work, but I'll write up some new classes specifically for using with Irrlicht( using Irrlicht core classes ). I'll start out by writing generic UDP and TCP classes that are cross platform for Linux / Windows( I cannot do anything for MAC, don't use it, don't even know someone who owns one ). Maybe you can use them instead of this Enet stuff, I'll make it really simple to use.
Dont know but you were complaining about it a bit, so i'll make an easier to use, and easier to link network library that will work for both Linux and Windows. It's what my real job is, network programming/design/systems of systems.
I need my own network code for a game I'm working on. You don't have to use it, but maybe you'll like it better, or find it easier
I need my own network code for a game I'm working on. You don't have to use it, but maybe you'll like it better, or find it easier
Oh no, go ahead!
I was just curious because alot of ppl recommend Enet. Id love for you to make an easier to use Irrlicht Specific library though (Maybe even better to integrate it into IrrSpintz so that the network code can benefit from the internal functions and integrate net information into the scene nodes themselves? That would be awesome! )
I was just curious because alot of ppl recommend Enet. Id love for you to make an easier to use Irrlicht Specific library though (Maybe even better to integrate it into IrrSpintz so that the network code can benefit from the internal functions and integrate net information into the scene nodes themselves? That would be awesome! )
Again, something like this would be great to have. I mean seriously $100 is not that much if you are talking about a true commercial product, but having something for irrLicht is great.
You're also never sure about something that they are already charging for. If you hit on the next big thing, their 'commercial' license may suddenly increase!
Unless you have a signed agreement -- but what game creator, that is having a tough time with $100 for a license, is going to spend $3-4k to have lawyer go through that for him.
You're also never sure about something that they are already charging for. If you hit on the next big thing, their 'commercial' license may suddenly increase!
Unless you have a signed agreement -- but what game creator, that is having a tough time with $100 for a license, is going to spend $3-4k to have lawyer go through that for him.
-
- Posts: 279
- Joined: Fri Dec 24, 2004 6:37 pm
Awesome work blindside! This is really useful for the irrlicht community, even though i was planning to have at making a irr + hawknl library but after this i dont think there wud be no need for that! BTW it was a little in accurate the first time i moved the node in the client and checked the server, but after that whenever i moved either the client or the server it worked perfectly!
Hi,
I have already used irrlicht+enet (or opengl+enet).
Sometime ago I proposed the name irrNet on niko blog (http://www.irrlicht3d.org/pivot/entry.php?id=409)
and recording to me the value added for enet+irrlicht should be "at least": client-prediction+interpolation+extrapolation.
Probably your library will become great, but from a library named irrNet
I'm expecting something more than only replicating positions.
In cube (where enet was born) there is also prediction, ...
Anyway I love any effort on networking.
PS
another issue is thinking about client or server authoritative.
Bye
I have already used irrlicht+enet (or opengl+enet).
Sometime ago I proposed the name irrNet on niko blog (http://www.irrlicht3d.org/pivot/entry.php?id=409)
and recording to me the value added for enet+irrlicht should be "at least": client-prediction+interpolation+extrapolation.
Probably your library will become great, but from a library named irrNet
I'm expecting something more than only replicating positions.
In cube (where enet was born) there is also prediction, ...
Anyway I love any effort on networking.
PS
another issue is thinking about client or server authoritative.
Bye