Wartbed:Architecture/Networking

From Dark Omen Wiki

(Difference between revisions)
Jump to: navigation, search
(ASIO in TR2)
(Added packages under evaluation. Moved information into tables.)
Line 6: Line 6:
A network system should be designed. For this suitable libraries should be located and existing projects should be investigated
A network system should be designed. For this suitable libraries should be located and existing projects should be investigated
-
* Libraries
+
== Libraries ==
-
** The [http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio.html Boost::ASIO] 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.
+
{| class="wikitable"
-
** [http://www.cs.wustl.edu/~schmidt/ACE.html ACE] (The ADAPTIVE Communication Environment) is a high-efficiency OO network programming toolkit in C++
+
|-
 +
| [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.
 +
| Powerful. Full TCP and UDP support. Reasonably clean and easy to work with. Low-level focus. Somewaht scarce documentation.
 +
|-
 +
| [http://pocoproject.org/ 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''
 +
|-
 +
| [http://mikhailberis.github.com/cpp-netlib 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''
 +
|-
 +
| [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.
 +
| 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.
 +
|-
 +
| [http://lundman.net/wiki/index.php/LiON LiON]
 +
| Home-brewed network IO system.
 +
| Seems workable and competent enough. Questionable degree of maintenance. ''Not tested''
 +
|-
 +
| [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 and absurdly over-powered. Extremely feature-rich. Restrictive "free" indie licence.
 +
|-
 +
| [http://monkey.org/~provos/libevent/ 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''
 +
|}
 +
** [http://memcached.org memcached] is a distributed memory object caching system
** [http://memcached.org memcached] is a distributed memory object caching system
-
* Existing game projects to study
+
 
-
** [http://glest.org/en/index.php Glest]  
+
== Existing game projects to study ==
-
** [http://spring.clan-sy.com Spring] -- There is a lobby for Spring ([http://springlobby.info/wiki/springlobby SpringLobby]) done in wxWidgets that might be of use.  
+
{| class="wikitable"
-
** The open and free [http://getmangos.com/ MANGOS] World of Warcraft server project could provide good inspiration (uses ACE).
+
|-
 +
| [http://glest.org/en/index.php Glest]
 +
|
 +
|-
 +
| [http://spring.clan-sy.com Spring]
 +
| There is a lobby for Spring ([http://springlobby.info/wiki/springlobby SpringLobby]) done in wxWidgets that might be of use. Uses AISO for its network back-end?
 +
|-
 +
| [http://getmangos.com/ MANGOS]  
 +
| The open and free MANGOS World of Warcraft server project could provide good inspiration. Uses ACE.
 +
|}
[[Category:WARTBED]]
[[Category:WARTBED]]

Revision as of 17:28, 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. Somewaht scarce documentation.
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.
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