Wartbed:Architecture/Networking

From Dark Omen Wiki

(Difference between revisions)
Jump to: navigation, search
(Added packages under evaluation. Moved information into tables.)
m (Spelling, "not tested")
Line 11: Line 11:
| [http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio.html Boost::ASIO]  
| [http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio.html 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.
| 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. Somewaht scarce documentation.
+
| 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.
|-
|-
| [http://pocoproject.org/ Poco C++ Libraries]
| [http://pocoproject.org/ Poco C++ Libraries]
Line 21: Line 21:
| High-abstraction and seems easy to work with. Currently lacking when it comes to documentation and examples. ''Not tested''
| High-abstraction and seems easy to work with. Currently lacking when it comes to documentation and examples. ''Not tested''
|-
|-
-
| [http://www.cs.wustl.edu/~schmidt/ACE.html The ADAPTIVE Communication Environment]  
+
| [http://www.cs.wustl.edu/~schmidt/ACE.html The Adaptive Communication Environment]  
| ACE is a high-efficiency OO network programming toolkit in C++. Mature and stable, very powerful. Used in several industries.
| 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.
| 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.
Line 31: Line 31:
| [http://www.jenkinssoftware.com/raknet/index.html Raknet]
| [http://www.jenkinssoftware.com/raknet/index.html Raknet]
| Commercial open-source cross-platform C++ and C# game networking engine primarily designed as a complete-solution high performance games package.
| 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.  
+
| Commercial and absurdly over-powered. Extremely feature-rich. Restrictive "free" indie licence. ''Not tested''
|-
|-
| [http://monkey.org/~provos/libevent/ Libevent]
| [http://monkey.org/~provos/libevent/ Libevent]

Revision as of 17:30, 13 February 2011

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

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.
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 seems easy to work with. Currently lacking when it comes to documentation and examples. Not tested
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.
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