Gillius's Programming

GNE – Game Networking Engine (Archived)

GNE is an archived project since 2012. GNE, or the Game Networking Engine, is a cross-platform, multithreaded, C++ networking library with an API specifically addressing the needs of game networking. There are two parts of GNE, the first being the mid-level classes that handle packeted, error checked, and bandwidth throttled communication between two peers. These were completed with GNE 0.5, although they still go under refactoring from time to time, and will until GNE 1.0.

The second part is the high-level classes which were never completed and was to handle things like unique player ID’s, player-to-player text communications, and develop a framework for a game server. It will also have a list server which is a server list players can connect to find games to play in.

This project was hosted on SourceForge back when it was as big as GitHub is today (in 2025). I have uploaded an archived copy of the source code as well on GitHub. My thanks still go to both organizations for their many years of high-quality free open-source hosting.

Intended Audience

GNE was designed to take the latest in object-oriented programming and modern C++ (at the time, ISO C++ 98) techniques and apply them to provide a clean, safe, and robust API for game development. While the concepts in the mid-level API could be applied to more than just games, the high-level GNE API is extremely game focused. While I discovered other networking libraries, I found that most are very “C”-like and none took advantage of all (then) modern C++ advancements such as templates, inheritance, exceptions, RAII, and smart pointers. I believe that proper design leads to easier development and robust code that deals gracefully with network errors and exploit attempts.

GNE was never not meant to be scalable to large environments, thus GNE is not suitable for running an MMORPG server, although it may be acceptable on the client side with a component implementing the GNE protocol on the server side. I published the protocol information so that other implementations (possibly ones more scalable) could be created, but this is no unlikely useful today even as a base for a new protocol.

GNE was designed to do as much work for you as possible. It is called Game Networking “Engine” and not Game Networking “Library” because it is meant to be a framework to build the networking portion of your game rather than a set of “utility” functions. Thus, GNE is aimed towards developers wanting to use an architecture rather than something to help them develop their own.

Feature List

GNE development stopped with development after the 0.70 release but most of the way to the 0.75 release. The below list shows the features in the source code, in the last release, and in the intended next and final releases.

Legend: In latest code :: In GNE 1.0

Historical Documentation

In case you are interested in seeing documentation for such a project designed in 2001, you can find it below:

Dependencies

If you actually get this to build, you should get a prize. Unfortunately, the prize won’t be the library, too old to use and not completed (although what was implemented was working at the time).

At the SourceForce files section there is pre-compiled HawkNL for MSVC.NET and mingw 1.0 (GCC 2.95.3-6) and a minimal version of boost 1.34 headers. The HawkNL is likely totally useless being so old.

Once you have the dependencies, this should work (obviously not tested since 2012):

cd gnelib
mkdir build
cd build
cmake ..
make install