Wartbed:Architecture/Networking
From Dark Omen Wiki
This article is about planned features not yet implemented |
WARTBED Architecture Architectural documents:
|
WARTBED |
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
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 | |
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. | |
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. |