Let's suppose that you've played a few Adventures.
You've been bitten by the 'Adventure bug' and you decide to have a
go at writing an Adventure of your own. You've got a few ideas
floating around in your head and the programming side of it doesn't
seem too difficult. After all, it's just text input and text output.
Right?
The ideas begin to multiply and conflict with one
another, but as they evolve, only the best ideas survive. After a
little more day-dreaming, you come up with an original theme. You
sift out the most intriguing puzzles from the back of your mind and
devise a cunning map on the back of a shopping list. This game is
going to be brilliant! When you unleash it onto an unsuspecting
world, they will herald you as the greatest Adventure writer of all
time.
Now all you've got to do is put all the pieces
together and write the code. Then everything collapses in a heap.
How on earth do you even start to write an Adventure program?
Writing an Adventure is quite a monumental task, but
it is not difficult, just tedious. If you are serious about writing
an Adventure (whether for fun or profit), there are probably three
approaches you could take. Firstly, you could do an immense amount
of research into human psychology, database design, parsing
techniques, artificial intelligence, compiler design and so on and
hopefully write a complete Adventure from scratch in the language of
your choice. This may take as long as two years, so you'd have to be
pretty dedicated. I have taken this approach in my own spasmodic
Adventure writing pursuits and some of my research notes are over
five years old!
Secondly, you could take a listing of an existing
Adventure, decipher it to see how it works and modify the database
and logic processing parts to create your own game. There are a
number of books and magazine articles that you could use to help you
along the way. A friend of mine followed this approach just recently
by following an ANALOG listing and came up with quite an impressive
Adventure in just a few weeks!
Thirdly, you could use an Adventure writing utility.
There are a number of these around including commercial products
such as Adventure Master and Adventure Writer or the more primitive
public domain offerings such as Max Manowski's Adventure which is
available from Antic, Page 6 and various user groups. That brings us
to the subject of this month's column, The Slave.
The Slave
The Slave is the latest offering in the area of
Adventure writing utilities available for the Atari 400/800/XL/XE.
The hype in the advertisements make it out to be the greatest thing
since the ring-pull beer can. Unfortunately, this is just not so.
Writing Adventures is downright hard work and The Slave doesn't make
the job any easier – you just do things differently. It is a tool to
help you get the job done. Nothing more, nothing less. Once you've
accepted that fact, you are less likely to be disappointed with the
product.
The creative aspect of Adventure writing is still up
to you. No Adventure writing utility will help you design an
Adventure – and neither should it. YOU must create the plot, draw
the map, design the puzzles, select the vocabulary, create the
characters, write all the room and object descriptions, predict the
player's actions and decide how to handle them. If you can't write,
can't spell or can't design logical puzzles (and logical solutions),
then Adventure writing is not for you. If you fall into this
category, then you might as well stop reading right now.
For those of you still with me, I hope I've softened
your expectations so that you don't expect too much from The Slave.
Now, let's get down to the nitty gritty evaluation.
First
impressions
I was bubbling with enthusiasm when the editor told
me that The Slave was on the way for review – I'd never been sent
anything to review before. When it arrived, I couldn't wait to get
started. I ripped the parcel open to find a disk and a bulky manual.
The loading instructions said to insert The Slave disk and turn on
the computer. When I did, I was rewarded with a screen full of
garbage! Hey, what's going on here? When I double checked the
instructions, I found a paragraph AFTER the loading instructions
which told me that I needed BASIC. Sheesh!
I rebooted with BASIC.
This time a rather impressive GRAPHICS 8 title
screen came up accompanied by a "horribly cute little tune, totally
out of character with the screen display itself". At least that's
how the manual described it.
When the tune finished, another program loaded and I
was presented with a GRAPHICS 0 menu in Atari's default blue. None
of the options made much sense, so I started at the top to see what
would happen. Another program loaded. Another menu presented itself
in default blue. And again, nothing made much sense. After
experimenting a bit, I was able to achieve nothing except
considerable apprehension because of the way the disk drive kept
turning on and off for no apparent reason. I tried to get back to
the first menu, but couldn't. It turns out that you have to reboot
(by pressing SYSTEM RESET) and repeat the title page/cute little
tune sequence.
The next time around, I picked a different option
from the main menu and ended up in the same state of confusion. It
looked like I'd struck a dog! At this point, I rebooted the system
with trusty old DOS 2.0 and did a disk directory. Nothing! It was
time to heed the old hacker's proverb, 'If all else fails, read the
manual'.
The
manual
The Slave manual consists of 126 pages of blurry,
draft quality, dot-matrix printing (without lower case descenders)
printed on single-sided, tractor feed paper. In other words, a
backyard job. But that's okay. I've got a lot of respect for anyone
who tries marketing their own product – PROVIDING THEY'VE GOT A
PRODUCT WORTH MARKETING!
A first glance at The Slave manual was encouraging.
It had a good contents page and everything appeared to be laid out
in a logical order. Little was I to know what the future held in
store.
If you ignore the author's tendency to pat himself
on the back, then a couple of the early chapters make interesting
reading. These early pages also told me what I'd already learnt the
hard way, mainly that The Slave manual is essential to learn how to
use the program. "Ignore it at your peril – without it you will go
nowhere very quickly indeed." This advice should have been plastered
all over the front cover!
I spent the next week reading The Slave manual from
front to back. Mind you, this was done while travelling to and from
work and some parts of the manual were virtually impossible to
fathom without a computer in front of me. By the time I'd finished
the manual, I felt like saying 'So what?'.
My initial impressions had been misleading for the
manual turned out to be horribly inadequate and broke many of the
rules of good documentation. For example, it was not broken down
into small manageable chunks, it did not flow properly from section
to section and there was no indication of how the minor parts fit
into the whole. Nothing seemed to make sense.
The
sample Adventure
It struck me that the next step was to try and run
the sample Adventure referred to in the advertisements and the
manual. The manual didn't actually tell you how to do this, but I
thought I'd be able to work it out with a bit of trial and error. By
this time, I'd discovered that the disk was formatted using DOS 3.0.
(Why on earth anybody would want to use DOS 3.0 is a complete
mystery to me.)
Anyway, I re-examined the disk and found that it had
15 files. The purpose of these files wasn't mentioned anywhere. I
could see that I was going to have to do this the hard way, so I
started out by converting all the files to DOS 2.0 using Matthew
Jones' 'Access III' from page 6 issue 14. Lo and behold, the program
wouldn't run in DOS 2.0! I wondered why.
When I examined the files, I found that five of them
were written in BASIC. Hmm. Maybe I could browse through the
listings, work out what they were supposed to do and why they
wouldn't work in DOS 2.0 and perhaps make a couple of little changes
so that they made more sense. I particularly wanted to avoid the
reboot every time you tried to return to the main menu.
Unfortunately, the author had put some protection in
the programs to avoid them being listed. It was all pretty standard
stuff so I promptly proceeded to unprotect them. During the process
I discovered that the programs had been written using Revision B
BASIC. This was evident by the way the programs had 'grown' each
time they had been saved. By fiddling with BASIC's zero page
pointers, I was able to shrink the programs back to their proper
size. I also discovered that the author used some pretty sloppy
programming techniques (such as premature exits from FOR ... NEXT
loops) and that two of the programs had not been through the
standard LIST, NEW, ENTER procedure to clear out the variable name
tables.
I realise that all this is of little or no interest
to the end user, but it showed all the signs of an amateur. I was
building up a very strong image of The Slave's author and it wasn't
very favourable!
Once everything was all cleaned up, I was able to
work out how things fitted together. With my new found knowledge, I
cross referenced all the files with the menus in the manual and
started to see the light at the end of the tunnel. Then I was struck
a crushing blow. I suddenly realised that there was no sample
Adventure! Bloody hell! Talk about false advertising! I was
shattered.
The Slave
By this time, I'd wasted a month or so (in between
other projects) just trying to understand how The Slave was supposed
to work and I still hadn't written so much as one byte of an
Adventure! The deadline for this review was rapidly drawing near and
I started to panic.
I couldn't cheat. I couldn't just study the sample
Adventure (because there wasn't one) and I couldn't think of any
other shortcuts. There was nothing for it but to write an Adventure
from scratch and try to get it running with The Slave.
Luckily for me, I love writing Adventures. I've
written a few before and knew exactly what to do. I christened this
one 'baby Adventure' because of its size and came up with a cute
little map, an objective and a couple of fairly straightforward
puzzles. Once the Adventure was designed (on paper at least), the
next step was to turn it into a program using The Slave. I did so
with a great deal of apprehension.
I started at the beginning of the manual and worked
through it very slowly and very cautiously. It rarely presented
anything in a logical order, so I had to constantly flip forwards
through its pages in search of the missing instructions. In many
cases, the missing instructions were obscure, ambiguous or weren't
to be found anywhere.
While building my Adventure, The Slave constantly
did things that I didn't expect, like adding bits that I didn't want
added. Whenever this happened, I backtracked and tried again. And
again ... and again ... until I eventually got it right. In fact, I
started the entire Adventure from scratch at least three times!
When the Adventure was finished, The Slave compiled
it without any complaints, but it wouldn't run. Don't ask me why.
I'm sure I did everything properly, but the manual is so vague on
some points, that I couldn't be sure. In the end I gave up in
despair. If I had pushed on any further, I'm sure I'd have had a
nervous breakdown and I didn't think it was worth it.
A typical
session with The Slave
Despite my inability to get the Adventure running, I
was able to sort out most of The Slave's illogical menus and its
obscure way of handling things. Here is a brief account of what to
expect.
Begin by making a backup of both sides of The Slave,
then put the original away in a safe place(?). Side 1 contains all
The Slave programs and side 2 contains DOS 3.0 and all its support
files. You will need to use both sides during a typical session, so
you might want to save yourself some disk swapping by copying all
the DOS 3.0 files onto side 1. Before you start writing your
Adventure, format three disks with DOS 3.0. One is needed for all
the text files, one for all The Slave's working files and one for
the final game disk.
Boot The Slave and wait for the main menu to load.
This has 9 options as listed below:
Descriptions editor
Exits editor
Flags and object locations
Compile adventure code
Vocabulary compile
Sound editor
Rearrange data files
Header creation
BASIC mode
Each of these options except Rearrange data files
loads another program, so the normal sequence of events is to make a
menu selection, wait for the program to load, remove The Slave disk,
insert the appropriate data disk, do some editing, save your work to
the data disk, remove the data disk, insert The Slave, reboot the
system, wait for the main menu to load and repeat the whole process
over and over again until your Adventure is finished.
The descriptions editor is nothing more than an
extremely primitive editor which you use to enter all the text that
will be output by the game. The Slave divides this text into four
files (which are not DOS compatible) for messages, objects,
locations and examine.
The exits editor allows you to create the map for
your Adventure onto a DOS 3.0 file called EXITS.SLV.
The flags editor allows you to set up flags,
initialise the locations of objects and decide whether an object is
movable or not. This information is saved onto FLAGS.SLV, OBLOC.SLV
and IMMOVE.SLV respectively.
The most complex part of the Adventure writing
process is the logic. The manual warns that "the faint of heart
should turn back now". The Slave handles logic in the most
cumbersome way that I have ever encountered in an Adventure writing
utility. You must write the logic in a sort of pseudo language that
the author calls Slave Adventure Language. SAL strikes me as being a
horribly disorganised mess. It is somewhat similar to a job control
language on a mainframe, but less logical. At first glance, the
range of commands looks pretty impressive, but a closer look reveals
that many of these are necessary to account for The Slave's other
limitations. The Slave makes you write the code for the entire
program, not just the processing of actions as with other Adventure
writing utilities. So how do you write with SAL? Hang onto your
hats. You're going to love this next bit. You must first go to BASIC
and type in your SAL commands within BASIC DATA statements! That's
right ... in BASIC! I couldn't believe it! Talk about a half-baked
product! Why not just write the whole thing in BASIC in the first
place?
Fortunately, there is a sort of skeleton set of DATA
statements included on the disk which you can use as a guide. Once
you've finished entering your SAL commands, save the file using LIST
"D:SLAVE.ext". You must use SLAVE as the filename, but you can use
any extender except XXX. This has a special purpose as discussed
below. You can now use the main menu option labelled compile
adventure code to create two files called DATAFILE.ext and
DATAFILE.XXX. This is why you can't use XXX as an extension.
You must go through a similar process of writing
BASIC DATA statements to define your verbs and nouns, then use the
vocabulary compile option to create VERBS.SLV and NOUNS.SLV.
The next item on the main menu is the sound editor.
I think you can skip this one as a bad joke.
The rearrange data files option goes through a lot
of disk activity, but I don't know what it does.
By now, you should have one disk with the text for
messages, objects, locations and examine and a second disk with all
the following files:
EXITS.SLV
FLAGS.SLV
OBLOC.SLV
IMMOVE.SLV
DATAFILE.ext
DATAFILE.XXX
VERBS.SLV
NOUNS.SLV
Go to DOS, copy SLAVEDRI.VER from The Slave disk to
the third blank disk, then append all the above files to it. This
takes about 18 disk swaps!
Finally, the header creation option allows you to
prepare a GRAPHICS 0 title screen and write a header to the disk you
just created with the expanded SLAVEDRI.VER file on it. If
everything has gone to plan, you should now be able to boot this
disk. If everything hasn't gone to plan ...
A few
observations
The Slave is not for beginners. Don't even THINK
about using it unless you're an experienced programmer and you have
a thorough understanding of how an Adventure works.
Using The Slave turned out to be a disk swapping
nightmare. You need five disks to create a game and must constantly
swap amongst them. Having two disk drives is of no benefit because
The Slave only supports one drive.
Flags are used so frequently in Adventures that I
normally associate a flag with every object. Thus flag 1 is used for
object 1, flag 2 for object 2 and so on. Unfortunately, The Slave's
system doesn't allow this flexibility. Flags 0 to 29 are reserved
for special purposes and therefore can't be associated with objects
0 to 29. You can either start numbering your objects with 30 or
forget about any one-on-one flag to object association. If you adopt
the latter course, your logic in the processing of verbs will need
more tests and be much harder to follow.
Unfortunately, The Slave also fails to provide flags
for rooms. These are normally used for functions like 'Does the room
contain water?', 'Can the thief enter this room?', 'Has the player
visited this room before?' and 'Is the room dark?'. These will have
to be simulated using extra tests in the logic processing part.
The final Adventure is totally disk based and seems
to always take two disks (or two sides of one disk) regardless of
how big the Adventure is. I couldn't get my Adventure to run, but it
certainly appears that ALL text is read from the disk only as
needed. None of it is kept in memory. You know what that means ...
lots and lots of disk activity. I love disk intensive Adventures!
Summary
I mentioned earlier that the author of The Slave had
a tendency to pat himself on the back. This got me really angry
while I was battling to get the program to even work, but it was
brought to a head by the following paragraph: "Slave Driver is thus
the master control program, the 'guts' of the Slave system, and,
throwing modesty to the four winds, is quite brilliant! Anyone out
there want to argue?" Yes! I want to argue!
The Slave is a dog of a program. The only feature it
has is consistency. It is consistently bad! In fact, in my six years
in the computer business, this is unquestionably the worst single
piece of software that I've ever been unfortunate enough to
encounter on ANY computer. It should never have been released. It is
obviously a backyard product written by an amateur. It has the worst
user interface and the worst human engineering that I've ever
encountered and obviously has no regard at all for the end user. I
doubt that it's even been tested. In fact, it strikes me as a
half-finished product that's still in the experimental stages.
As an Adventure writing tool, it makes a good drink
coaster. It doesn't come within a bull's roar of other Adventure
writing utilities – even those in the public domain. On a score out
of ten, I'd give it a one ... and even that's being generous!
If you're serious about writing Adventures, this
product probably won't help you. You'd be better off buying a good
book on the subject.
top