I started working on low level UDP lib for games.
Its low layer's job is to fix 2 probles with sending byte streams over udp:
1. packet loss
2. unordered receiving of packets

Low level layer can be used alone in any project. It uses (for starters) Phobos so it will be portable. It will have no-charge-for-any-type-of-project open source licence.

Until dsource provides me a space for this (project name is classified for now ), i'll discuss stuff here about api._________________"I apologize only for my spelling" - a quote shamelessly stolen from some guy at unknown forum.

// first we must register some object classes with their properties
// we do not specify what are types of properties, only names as strings
// registration can happen before or during process, on both server and client side
// same goes with all other operations here
s.registerClass("car", ["model", "position", "speed"]);

// adds object of some class. each object has unique id (int) for its class
// after adding object, we set values on its properties
Object a;
a = s.addObject("car");
a.setString("model", "Ford");
a.setVector("position", vector(0,33,12));
a.setFloat("speed", 33.4);

// note that it is programmers job to watch out for property type
// do not call something like x.getFloat("model")
// becouse "model" property is string, not float
// replicator stores all properties like void*, it doesnt knows type
}

// get car with id 22, if it exists
a = s.getObject("car", 22);

// or you can delete it, too...
s.deleteObject("car", 22);

// other way of deleting it
s.deleteObject(a);

// main loop
while(1){

// now we change some property value during process
// lets increase a speed on each loop. it will get really fast soon!
a = s.getObject("car", 11);
float old_speed = a.getFloat("speed");
a.setFloat("speed", old_speed + 10);

// it is with this call that changes are transmited / received
// after this call, all other clients and server will have same data
s.update();
}

I'm not one to speak since I have no experience with game networking libraries, but that setup makes sense, and I think it's something that Yage could use and build on top of. Contact me on AIM, Yahoo IM, etc. if you'd like to talk about it some more.

It may be a few weeks or more before I have time to work on Yage again though. I've been working on a side-project to try to get that whole passive-income thing working, which would hopefully mean more time for yage in the long run. It's always a gamble of course.