Re-inventing the wheel is bad. I need a network library for Kojvenepane. My primary requirements are
* the advantages of TCP and UDP respectively but not the disadvantages
* good design. C++ would be nice but not required as I’ll encapsulate it anyway
* speed and reliability
* packet priorities, channels or some other system of deciding which packets to scrap if need be
* portability
* inexpensive or free
These are the alternatives I have considered:
ENet – opensource and portable. Features connection management, sequencing, channels, fragmentation & reassembly of huge messages, aggregation, adaptability, dynamic bandwidth throttling and more. All useful features indeed. It lacks sample code and there’s one more major issue: I can’t get it to work. The client refuses to connect to the server. I have some more debugging work ahead of me if I want to pursuit this…
RakNet – all the features I’ll ever need and more, including higher-level functions such as lobby system, NAT punch-through, voice communication… but it’s commercial. I want it but…
HawkNL – opensource low-level API featuring “support for many OSs, groups of sockets, socket statistics, high accuracy timer, CRC functions, macros to read and write data to packets with endian conversion, and support for multiple network transports.”
ACE – “The ADAPTIVE Communication Environment”, opensource, portable, but focusing more on business than games. It’s very feature-rich, has all kinds of IPC functionality for example. How well does it handle gaming-specific issues like lag and latency?
Zoidcom – higher-level library featuring “automatic replication of gameobjects and synchronization of their states over a network connection in a highly bandwidth efficient manner.” . Free for non-commercial use.
OpenTNL – Torque Network Library. The links (including the download link) on the page doesn’t work and the site hasn’t been updated since 2005…
DirectPlay – nah, not portable
Well.. what to do…