Netrek Files
Home ] Up ] Apple II Files ] [ Netrek Files ] Misc Files ]

 

Some handy stuff for Netrek.

A few notes for the uninitiated:

Netrek (not to be confused with Nettrek, which ran on the Mac) is a multiplayer action game, written for play over the Internet long before such things were fashionable.   It feels more like a sport than a video game, and is the second-most addictive game I've ever played. (The leader of the pack is the MUD genre, e.g. Asheron's Call / Everquest / Ultima Online, which I have studiously avoided.)  Nothing I've played before or since compares.

While it looks easy enough to jump in and play, it takes a while to become proficient with basic dogfighting skills, and the rule of thumb is that it takes 200 hours of play time before somebody becomes fully "clued" to the subtleties.  Talking to your teammates isn't a nice feature, it's an absolute necessity, so much so that some "clue servers" would throw you off if you didn't respond to automatic messages.

I had little to do with the game's initial development, but I made other contributions from late 1991 to mid-1992:

  • Ported client and server to Amdahl's IBM-compatible mainframes running UTS2.1 (SVR3).   The "Amdahl client" had some features that got blended into other clients (like visible tractor beams) and other features that didn't (scanning beams).
  • Wrote XShowGalaxy, a/k/a XSG, a server monitoring and tweaking tool.  This was greatly enhanced and extended by Tedd Hadley and others.
  • Modified the network code to use UDP packets instead of TCP.  (As far as I know, Netrek was the first Internet game to use UDP for updates.  There were some LAN games, like ACM, that used broadcast updates, but those expected UDP to be a reliable transport.)
  • Wrote pledit, a curses-based player list editor.
  • Wrote gw to get past the bastion-host firewall.
  • Wrote trekhopd after I got caught using gw on the bastion-host firewall.  It serves the same purpose, but is more secure.
  • Wrote MetaServerII, a "meta-server" for Netrek.  Last I checked, you could still query it by telnetting to metaserver.netrek.org:3521 (there are other ports that return different sets of information).
  • Developed the MUCUS PIG translator (in the tradition of valspeak and jive).

Support for most of the programs was taken over by other Netrek enthusiasts after I started working on other projects in my spare time.  Some programs and documents that may be difficult to locate otherwise are available below.

 


Utilities

Name: trekhopd v1.52
File: thd1.52.tar.gz Size: 41K
Author: Andy McFadden Written: September 1993
Summary: Bastion-host firewall packet-passing daemon
Description:

I wrote trekhopd because Amdahl used a dual-homed host as its Internet firewall.  Netrek's TCP connection setup didn't work very well with this scheme, and of course UDP didn't work at all.   The previous program, "gw", played a little fast and loose with connections, which didn't make the firewall admins terribly happy.  This was written to placate them.

The last version I touched was trekhopd v1.51.  v1.52 was done by Otmar Lendl, and is also available on http://www.cosy.sbg.ac.at/~lendl/netrek/trekhopd/.   He ported it to Linux (which was mostly a matter of fixing the endianess problems), and cleaned up the code a bit.

BTW, if the firewall you're behind is a router that blocks UDP, ask your firewall admin to cut a hole in a high port range (like 48000-48015), and use one of the clients that supports the "-U" flag.

 

Name: pledit v1.02
File: pledit1.02.tar.gz Size: 17K
Author: Andy McFadden Written: August 1992
Summary: Netrek player list editor
Description:

The traditional way to edit the Netrek player list file was to run a program that converted it from a fixed-record-size binary format to ASCII, make the changes, and then convert it from ASCII back to binary.   This was a bit cumbersome when the player lists got large, didn't provide a very intuitive user interface, and broke rather badly when the "Pig client" started sticking newlines into the keymap section.

Pledit is a nifty little curses-based player list editor with form-based editing and a configurable keymap.  If for some bizarre reason you want to write something that uses curses, you might want to look at what I did here.

 


Documents

Name: Netrek history files
File: netrek-history.tar.gz Size: 25K
Author: Andy McFadden Written: January 1994
Summary: An incomplete history of Netrek
Description:

There were a lot of conflicting stories about how Netrek began.  Some people claimed it came out of a lab at MIT, others felt it must have originated at CMU since so many of the great players were there in the early 1990s.  The facts of the matter are laid out as best I could, in three files:

History
A discussion of how Netrek came to be.
Timeline
Important events in Netrek's history, from the very beginning up to January 1, 1994.
Servers
As complete a list of public Netrek servers as I could manage.

Each file is in a meta-format that can be converted to plain text or a decent HTML with "grep".

The files are currently up for display on http://www.ecst.csuchico.edu/~netrek/history/.

 

Name: UDP modification docs
File: udp-docs.tar.gz Size: 12K
Author: Andy McFadden Written: April 1992
Summary: Original documentation on the UDP changes
Description:

There are two documents here that explain the UDP changes.  When reading these, bear in mind that there were a multitude of Netrek clients being supported by several different people.  The UDP changes weren't made to "the source code", they were made to my source code and then distributed as context diffs.  It had to be as simple and as tightly contained as possible.  As a result, the UDP features were disabled by default, and enabled either in the config file or by bringing up a separate panel in the user interface.

UDPCLIent.doc
Explanation of the user interface changes.
UDP_README
Details about the implementation of the protocol.

Something that may interest would-be game authors is that Netrek didn't just use UDP.   Because the existing clients and servers used TCP, and backward compatibility (for both sides) was important, UDP was bolted onto the side.  The non-intrusive nature of the changes prevented me from rearchitecting the whole client-server communication design, so Netrek uses (to this very day!) TCP and UDP simultaneously.  This, as it happens, is a bad idea...

 


Updated Sunday, August 19, 2001