Home > mudkip

mudkip

Mudkip is a project mainly written in GO and JAVASCRIPT, based on the View license.

A go based MUD client/server setup. For experimental use only.

================================================================================ MUDKIP

A Go based MUD server.

This is work in progress. Expect commits that will significantly change the overal structure of the project and possibly break stuff.

The server is a basic, custom written HTTP server. The game can therefor be accessed, modified and played through any regular webbrowser. Most of the game API is exposed through a JSON based Api. This allows one to write a custom client if need be.

The server is capable of hosting multiple game worlds simultaneously. Users can either play in an existing world, or create/manage their own.

The mudkip server can listen on a secure socket using TLS/SSL. This means we have to specify a Key file and certificate file in the server config if secure is set to true. For testing purposes, we can generate a self-signed key file and certificate. Check out the following website for a rundown on how this works: http://www.akadia.com/services/ssh_test_certificate.html. Note that when you visit your server using a self-signed certificate, your browser may yield a security error. In Chromium this will be something along the lines of "The site's security certificate is not trusted!". Just hit "Proceed anyway" to continue testing the server. Do not do this unless you are absolutely sure you are connecting to your own server. When starting the server in secure mode, you access it thruogh a webbrowser, using 'https' as the protocol. For example, when listening on address 127.0.0.1 and port 8081:

  • Non-secure url: http://127.0.0.1:8081
  • Secure url: https://127.0.0.1:8081

Cookies are used for account management. It should be noted that cookies have the 'secure' flag set only when you run the server in secure mode. This means that cookies generated by a secure server, will not be sent by the client when you later decide to run the server in non-secure mode. The user will have to log in again. Cookie content is always encrypted, regardless of whether we run the server over SSL or not.

================================================================================ DEPENDENCIES

There are a few external packages this project relies on. The following are required. There may be additional requirements, depending on which datastore you choose to use. Refer to mudkip/data//README for specifics.

  • go-pkg-optarg from http://github.com/jteeuwen/go-pkg-optarg
  • go-pkg-ini from http://github.com/jteeuwen/go-pkg-ini

================================================================================ USAGE

To start with, make sure you have the latest Go build environment installed and running. See http://golang.org/doc/install.html for a guide.

If you already have Go, make sure you have the latest release build:

$ cd $GOROOT/src $ ./clean.bash $ cd .. $ hg pull $ hg update release $ cd src $ ./all.bash

To get this project up and running, follow the steps below.

$ cd /path/to/codedir $ git clone http://github.com/jteeuwen/mudkip.git $ cd mudkip

Optionally, modify the main makefile to set the appropriate DATASTORE value. This value indicates which database driver to compile into the server. We opt to make this choice at compile time to reduce the server binary size. There is no need to have the unused drivers in there. All the drivers compile to a package named mudkip/store.a. This is also why we can build only one of them.

$ make

================================================================================ LICENSE

All code is subject to a 1-clause BSD license. See the LICENSE file for its contents. This excludes mudkip/data/sqlite/sqlite.go which was written by Russ Cox and falls under the Go Authors License.