New architecture for DungeonHack project
Latest commit 369da39 Apr 25, 2011 @archwyrm Fixed incorrectly handled EOF
EOF signals that the client has disconnected, not that there is no more
data available. Thus when a client disconnected, we went spinning into a
busy loop trying repeatedly to read from a closed socket. Fixes #10

EOF is handled like all other fatal socket errors now, by removing the
client (data structure). The same goes for EINVAL which does not need
any special handling either.

ghack server

git version -


ghack is the first server component of project DungeonHack's new architecture. It is intended to be highly flexible, robust, network oriented, and concurrent. DungeonHack is a first person, action oriented role-playing game and ghack focuses on supporting this, however it is possible to create variations of this or other kinds of games. Game code is built using a component aggregation framework and adding new game logic is achieved by simply adding new components. Extending game logic through components will also be possible using a scripting language of choice (plans are to start with Python).

Current code is in a very skeletal state, however.


Copyright 2010, 2011 The ghack Authors. All rights reserved.

Unless otherwise noted, source code and assets are licensed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

Please see the file COPYING for more details.

Building and Running

This software is known to work on GNU/Linux, probably works on Mac OS X, and might work on Windows. Future versions will support all these operating systems.

In short, the following things are required to use this software:

Please see the individual package's installation instructions in order to install. All Go dependencies should use the latest version available.

Some dependencies may be installed easily with goinstall:


Once all the dependencies are present, run:

protoc --go_out=src/ protocol/protocol.proto
gd -o ghack

If successful, the output binary 'ghack' may be run.