Quote Originally Posted by JSoftware
I found the indy components to be pretty bad working with. Why not start all lowlevel? If you keep it in Berkeley sockets then you should easily be able to make it portable to all systems
I have played with Indy for a few projects and to my mind they work pretty well. Allot of the Hard work has been done already. Going low level basically mean starting from scratch in which case we might as well just take the source for RakNet and convert it to pascal... just a thought.. it has very good reviews..

I would prefer 0 external libraries except those you would find on an OS, so that limits this to Sockets, no SDL_Net no DirectPlay. Indy is based on normal sockets and supports Windows and Linux (so far) but with the recent port to FPC I can see Mac OSX on the horizon.

What I thik the goal should be is a native pascal networking system that can be used to "most" games with a few modifications. The kind of services we should be providing is

:arrow: Fast UDP only implementation
:arrow: Implement REliable UDP packets, the engine should detect errors and resend.
:arrow: Distributed Objects. eg. an object can update itself across the net, the engine should handle this so if you derive from a proxy class all the published properties will be sent to it's twin on the server.
:arrow: A Stream based interface (get away from those horrible bit arrays)
:arrow: ...<insert your requirements here>

We could use SDL_Net at a push as that is low enough, the only reason I'm not for that is it's not thread safe,