From: blojo@xcf.berkeley.edu (Jon Blow)
Newsgroups: rec.games.netrek
Subject: Re: Flight Recorder
Date: 22 Jul 1992 17:56:29 GMT
Organization: Experimental Computing Facility, Berkeley
NNTP-Posting-Host: xcf.berkeley.edu

Jeff (Miles Teg) writes:

> Flight recorders have been mentioned a number of times on this group
> and once someone I was playing with even claimed to be recording
> the game with his flight-recorder (not sure if it was server side
> or client side).

This was probably me last april on rwd4, using the character "Test Peacock".

The flight recorder I wrote was client-side.  It is based on a "tape"
paradigm: the idea is that in your xtrekrc (or from the command line) you
can specify how long the "tape" should be (in updates) depending on how
much memory you are willing to devote to the recording.  When you play
the game, the tape is continually running-- when you hit the right key,
it saves all the action for the entire length of the tape so far.  The
tape is circular, overwriting itself from the beginning when it reaches
the end.

So that the tape could be played forward and backward and have all
pertinent information recorded on it, some really tricky things had to
be done that aren't obvious without thinking about the problem.  Anyway,
this requires the client to "process" or "lift" the tape when recording
it; once this is done, it can be written to a file as a program in a
forth-like language.

The reason I chose the forth representation is that it lets you record
tapes in a portable, text-based fashion; it is readable enough that you
can edit tapes (cutting out unwanted frames et al) with your favorite
text editor.  I was also going to add some new forth primitives to pop
up windows with text in them and such on the screen, so that you could
make "training tapes" with little annotations describing what is happening
and all that.

Sound too good to be true?  Well, it sort of is, since it's not entirely
done (I never slapped a user-interface on it).  The whole thing was done
over a week of Spring Break, with all the programming happening over about
two and a half days, and I haven't worked on it since, really.  All the
mechanics of the flight recorder I described above are there, but a couple
things that I haven't mentioned yet need to be done to make it really
cool; they are easy to do, though.  Back when I was working on it, someone
else contacted me and said that he needed something to do over the break
and would write the user interface, but I guess that never quite came
through, or we lost touch or something.  Ah well.

Anyway, I recently erased my copy of the whole flight recorder client.  I
could probably dig it up from a backup (if it's not corrupted) if anyone
is interested in fixing up the code to be releasable material.  I reemphasize
that all the hard work is already done; I am just far too busy to spend
the time required to polish it up, because I am already swamped with things
that are more important to me.

However, if someone wants the code and I can dig it up, I would probably
be willing to spend about a day or so over a week-end fixing the code up
some more so that it is gotten in a reasonable state.  Please only do this
if you actually know how to program and intend to do it-- again, I don't
want to convey the impression that the flight recorder is usable by the
general public right now, because it isn't.

If you're interested in the code or just want the technical details of
exactly what was required in writing it, go ahead and mail or something.

  -Jon (Hell Peacock)