Wartbed:Architecture/Networking

From Dark Omen Wiki

Jump to: navigation, search

WARTBED Architecture
Documents related to technical design aspects and implementation details.
For a general overview of WARTBED, see the WARTBED Design Document

Architectural documents:

WARTBED

0.1 "Clausewitz"
0.2 "Jomini"
...


WARTBED uses a strict client-server architecture, where even local games are clients to a game server.

A network system should be designed. For this suitable libraries should be located and existing projects should be investigated

Libraries

file:Thumb up.gif Boost::ASIO Boost's cross-platform C++ library for network and low-level I/O programming. ASIO seems scheduled for the C++ TR2, and will likely be part of the next language revision following C++0x. Powerful. Full TCP and UDP support. Reasonably clean and easy to work with. Low-level focus. Somewhat scarce documentation, but plenty of complete real-life examples. Beyond the normal Boost threshold there are no drawbacks to ASIO.
Poco C++ Libraries FOSS C++ class libraries and frameworks for building network- and internet-based applications. Boost software licence. Feature-complete, rich and powerful. Slightly high learning threshold. Built-in support for most common protocols (HTTP, FTP, mail etc). 32-bit only? Not tested
file:Thumb down.gif C++ Network Library Intended for Boost, but I deem it uncertain if it will be incorporated since AISO is the de facto Boost network implementation. High-abstraction and possibly easy to work with. Intended for high-level implementations of provided protocols. Underlying implementation builds on ASIO. Currently only supports HTTP. Very resitrcted and limited. Not feasible.
file:Thumb down.gif The Adaptive Communication Environment ACE is a high-efficiency OO network programming toolkit in C++. Mature and stable, very powerful. Used in several industries. Absurdly object-oriented, well beyond purism into sheer mania. Academic unto the absurd. Highly powerful yet uncompromising to work with due to extreme abstraction and not playing well with the STL. Potentially powerful but absolutely not worth it.
LiON Home-brewed network IO system. Seems workable and competent enough. Questionable degree of maintenance. Not tested
Raknet Commercial open-source cross-platform C++ and C# game networking engine primarily designed as a complete-solution high performance games package. Commercial and absurdly over-powered. Extremely feature-rich. Restrictive "free" indie licence. Not tested
Libevent An event notification library to execute a callback function when a specific event occurs on a file descriptor, after a timeout has been reachedor due to signals or regular timeouts. Meant to replace the event loop found in event driven network servers by adding or remove events dynamically without having to change the event loop. C library, no OO encapsulation. Not tested
    • memcached is a distributed memory object caching system

Existing game projects to study

Glest
Spring There is a lobby for Spring (SpringLobby) done in wxWidgets that might be of use. Uses AISO for its network back-end?
MANGOS The open and free MANGOS World of Warcraft server project could provide good inspiration. Uses ACE.
Personal tools
communication