|
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 |