Game - The Begining

[OWL]

Once upon a time we ([PNL] && [owls]) were discussing 'nethack' and we came to the conclusion that it was too much of a misnomer to be ignored any longer.

'Nethack' is, of course, not a version of 'hack' that can be played over a network, but a version of 'hack' that was developed over the net by a bunch of people. This is fine, but it does leave the net somewhat short of the interactive style game that 'nethack' is. After looking around for a net version of a 'hack'- alike game, we found only a strange thing that had too many SysV-isms and wouldn't compile on mackerel as the SysV stuff had not been installed.

Thus the task: design and code a game that looked similar enough to a 'hack'-alike to be playable by those who were used to it, but make sure it was a multi-player and multi- computer game. Well, something like that. [owls] was of the opinion that the server should be capable of being run on a distributed basis, with different machines running different parts of the map and all sorts of wonderful communication flowing between the various servers. This was roundly condemned by anybody within hearing range. Oh well. Maybe version 17.

So the idea was to have a server running the maps and controlling the positions of the players and objects and things, and clients connect to this server and get told what is happening in their bit of the map. We came up with a compressed (RLE) map diff format, and a few other bits to help reduce the size of the packets that would no doubt flood the net. This all took a couple of weeks to be properly discussed, and we worked out the basic commands and client-server communication stuff and player stats and whole piles of boring stuff. Then it was time to start coding the thing. [PNL] worked on the udp communication stuff, being the guru on network stuff that he is, owls did the file stuff like maps and the character files. We persuaded [COM] to start working on a text- based client while we merged the stuff we had done into a server.

A small digression - [owls]' plans for the clients went a little beyond the simple text- based interface that nethack has. As long as a client can communicate with the server, and present some usable information to the user, anything was possible. So, even though the map was a really just your standard, everyday, 2 dimensional, grid-based thing, if somebody wanted to get fancy and make some sort of Wolfenstein-style interface (and perhaps withhold some information from the user) this would be fine. This idea leaves all of the interface processing up to the client, the server then only has to worry about where the characters are and what they might be doing at any time. 'Turning around' is a possible 3D- client function, one that would involve no server communication as the notion of a player facing a direction is unknown in the current server version. If you can't understand this concept, well, [owls] has nothing further to say except "stay tuned..."

Soon several others around UCC got involved; [DDT] started evolving the almost-working client [COM] had written into an almost unbroken curses based client, [MTL] designed a couple of really pathetic maps and many others contributed with destructive criticism. We even got a usable map editor with popup help, cannibalised from the curses client. By about this time we realised that the code was being modified in too many ways by too many people, so we wasted time with things like 'vilock' and even a perl script to automate the makefile maintenance.

Eventually, enough of the bugs were ironed out to have a playable client connected to a non- coredumping server. This was tested with five or six players (all at once!) and thoroughly denounced for being boring.

This led to code being added to handle some of the commands, namely: