Search:
Game Publisher
Author Machine
A&B Computing 2.07 (1985) (BBC/Electron, 5.25" Disc)
Publisher: A&B Computing
A Crowd Of Monsters | A&B Computing | A&N Projects
 
 


Comprises: Adventurescape (A&B Computing), Down To Earth (A&B Computing), Jingle Creator (A&B Computing), Lost In Xanadu (A&B Computing) and Lost In Xanadu (A&B Computing)

Machine Compatibility: Acorn Electron, BBC Master 128, BBC Model B, BBC Model B+

Release: On 5.25" Disc

Emulators: BeebEm (PC (Windows))
Elkulator 1.0 (PC (Windows))
Model B Emulator (PC (Windows))
PcBBC (PC (MS-DOS))

How To Play

)

Game Information

Original Release Date: 1st Jul 1985
Original Release Price: Unknown
Market Valuation: £4.00 (How Is This Calculated?)

 

Adventurescape (BBC B/B+/Master 128 Version, 0 Screenshots)

Down To Earth (BBC B/B+/Master 128 Version, 0 Screenshots)

Jingle Creator (BBC B/B+/Master 128 Version, 0 Screenshots)

Lost In Xanadu (BBC B/B+/Master 128 Version, 11 Screenshots)

Lost In Xanadu (Acorn Electron Version, 3 Screenshots)

Full Instructions

Adventurescape

Introduction

These programs provide you with a powerful general purpose adventure generator, together with a full size sample adventure. The adventure, Lost In Xanadu, is based on the poem Kubla Kahn by Colerdige with apologies for our occasionally irreverent use of his magnificent imagery. When you succeed in finding Kubla Kahn and escaping from Xanadu, you can then use the generator to write any adventure of your own design simply by editing DATA statements on one of the programs. Hence anyone can design an adventure without any skills in BASIC programming being required at all.

Before describing the use of the generator in detail, here are a list of its main features:

(i) Long messages and descriptions entered on DATA lines will be printed with automatic word wrap. On the BBC version, several colours are used to distinguish different types of message.
(ii) Objects are described in locations and inventory in full phrases, though only three letter keys are required in the player's input to detect them. In addition, objects may be examined, leading to addition descriptions or comments.
(iii) There is provision for (some) objects to be worn as well as carried, and this is distinguished in the inventory.
(iv) Positions may be saved and loaded under filenames chosen by the player. The program automatically detects presence of a DFS and introduces disc error trapping.
(v) The program uses a 'production system' of ordered condition-action sequences to allow generation of a complex range of puzzles to solve.

These features make the program rather long, limiting the space for text, which is not compressed. Memory has been saved, however, by keeping all numerical pointers and flags in byte arrays. This means that everything has a theoretical upper limit of 255 (word lists, locations, messages, etc) but you would run out of memory anyway before these limits were reached. The parser has been kept to a simple one or two word input processor.

Entering The Programs

The generator consists of two main programs. The first, shown as Listing 1, need never be altered when you write a new adventure. It reads data files created by the second main program, Listing 3, whose DATA statements are edited to create new adventures as described in detail below. BBC owners need only type in Listings 1 and 3 as they stand. Electron owners need to make some modifications. Listing 2 gives the lines which need to be substituted in Listing 1 which avoid problems arising from the use of Mode 7 control codes.

The main problem with the datafile generator (Listing 3) for Electron users is memory space. The sample adventure will run on the BBC in Mode 7 with PAGE at &1900, but will not run in Mode 6, even for a tape system with PAGE set at &E00. The only way we have been able to solve this problem is by drastic shortening of the location descriptions. All other features of the adventure, including the full set of puzzles, have been preserved. If the alternative descriptions shown in Listing 4 are substituted, then the adventure will run in Mode 6 with PAGE at &E00. While the location points following each description are the same, we have left them in Listing 4 to save constant switching of attention between the two listings.

Disc users, as usual, will have an easier time entering and testing the programs. Tape users are recommended to proceed as follows. First type in Program 1 and save it on the beginning of a blank tape. Next type in Program 2 and save it on a different tape. When Program 2 is RUN, it will create two datafiles, a large one called ADVDAT and a much smaller one called INIT (to save reloading the large file to restart the game). The data files should be saved on to the first tape following Program 1. It would be sensible to leave a reasonable gap on the tape in case you have made errors in typing in Program 1 and need to save a revised version over the original. Once your listings have been debugged and the files saved correctly, then only the tape with Program 1 and the datafiles will be needed to play the game. Program 2 is the one you edit when you wish to write your own adventure.

Using The Generator

It is assumed here that readers will have played adventure games and have general familiarity with typical features. Also, since Listing 3 contains many REMs, we will not repeat all the information given there in the text. To use the generator it is essential to created numbered lists for the following:

(i) Locations, or 'rooms'
(ii) Verbs additional to standard ones supplied (see REM at line 2040 of Listing 3)
(iii) Objects. These will be described in locations and some may be carried and/or worn
(iv) Messages to be printed in response to various inputs from the player.
(v) Flags. These are used by the puzzle generator to keep track of which actions have been performed.
(vi) Puzzles. The number of puzzle lines to be entered, but a given puzzle may require several lines as is explained in detail later on.

The first set of DATA statements to be edited in program 2 starts at line 1000 and specifies the size of the above lists as indicated in the REMs. There then follows a list of numbers indicating the room number in which each object is placed initially. These will be assigned to each object on your list in sequence. Note that more than one object can be placed in the same room. If an object is initially hidden and to be discovered only by solving a puzzle, then its room number should be entered as 0. The next set of numbers is for the initial carry status of objects which can be carried but not worn (0), carried and worn (1) or immovable (2).

Lines 1500 on require entry of data for your scoring system. You may give score for treasures, in which case a score is added for the specified objects being carried or worn. If you don't wish to use this method enter two 0s at line 1530 and omit line 1550. Similarly, awarding scores for certain flags set at lines 1580 and 1600 is optional. This allows score to be awarded for solving puzzles which lead towards solution of the adventure. Finally, a score is added for 'winning' at line 1620.

Lines 2000 on require entry of your vocabulary. The verbs must be entered in upper case with a maximum length of four characters, though these may be contractions of longer words. The objects are entered in two lists. First, the object descriptions are given as lower case phrases as you want them used by the program in locations and on the inventory list. Second, you must enter a list of three letter keys in upper case which will be used by the parser in Program 1 when processing the player's input. Hence, an object may be described as "a pair of wire cutters", but entered on the key list as WIR. Full stops should not be entered after the descriptions here.

The DATA lines from 3000 onwards enter alternately the description of each room, and a list of pointers which give the exits. The former may be as long as you can fit onto a single DATA statement. The use of the pointers requires some explanation. You are only allowed to use six directions - north, east, west, south, up and down. The six numbers following each location description are the room numbers pointed to by each of these six exits in the sequence NEWSUD. You must always supply six numbers but a 0 can be entered when these is no exit in a given direction, or when it is initially hidden. Figure 1 shows a map of a mini-adventure with only six locations, whose number, rather than descriptions are shown. The table of pointers which correspond to this map are shown in Table 1.

Location Pointers
  N E W S U D
1 0 2 0 0 0 0
2 0 0 1 3 0 0
3 2 4 5 0 6 0
4 0 0 3 0 0 0
5 0 3 0 0 0 0
6 0 0 0 0 0 3
Table 1: Pointers corresponding to map shown in Figure 1, below
Table 2

In this example all directions are logically defined so that if one can get from one location to another by moving south, one can get back by moving north and so on. The pointers need not be used in this way, however. You can have one way exits, or deliberately inconsistent exits to produce the classic 'twisty maze'. An example of a set of pointers for a maze is given in Table 2. There are five locations in the maze, with exits at either end to locations 19 and 25 which lie outside the maze. To make the maze effective, you must of course provide each location with an identical description.

Location Pointers
  N E W S U D
20 19 20 20 23 23 21
21 20 23 20 20 23 22
22 23 22 20 21 21 24
23 21 23 23 20 21 21
24 20 22 22 25 21 21
Table 2: Directions pointers for a twisty maze

The pointer system requires only that there are no missing numbers in the sequence assigned to locations. If, for example, you decide as an afterthought to add a new location between 2 and 3 and by that time you are up to location 44 - no problem. In designing Xanadu, we moved some of the locations several times at a late stage to improve the adventure design by changing pointers, with no need to change the description sequence itself.

The next set of entries are the messages starting at line 5000. The first two strings are the title of the adventure and an opening message which are printed on a special starting screen when the adventure is first loaded. There then follows a list of messages whose size was supplied at line 1100 with other numerical variables. These are the messages which are presented when a player's input is recognised. For example, the program might respond to EAT APPLE with a message "You choke and fall to the ground dying". Following the general message list, from line 6000, is a list of 'examine' messages. There must be one corresponding to each object in turn, which will be printed whenever a player examines the object concerned. Incidentally, players are only allowed to examine objects which are in their current location, or which they are carrying or wearing. Examine messages can add a lot of colour to a game and provide clues to the function of an object in solving a puzzle. Enter a null string, "", for any object which does not require an examine miessage. In these cases the program will simply respond "You see nothing special".

The Puzzle Generator

Lines 7000 onwards contain the DATA lines for the most complex part of the program - the puzzle generator. The programs use a technique common in artificial intelligence programming called a production system. This consists of a set of condition-action pairs which are searched in a particular sequence. When the first pair with a true condition is encountered, its action is executed and the production system is left without any more pairs being examined.

In order to provide for a large range of puzzles we have allowed the game designer to specify up to 10 conditions which must be met in a given pair, and up to 10 actions which may be taken as a result, the effect of which are detailed in REM statements. These are entered as lines of 20 numbers, as in Listing 3, though the examples will appear incomprehensible without explanation. Rather than spoil your enjoyment of the Xanadu game, we present some hypothetical examples of puzzle construction in Table 3. Note that the Table format requires us to lay out each sequence of 20 numbers vertically, rather than horizontally as they are entered on a DATA line.

  A   B   C
  1 2 1 2 1 2 3
Conditions
 1. Room
 2. Verb
 3. Object
 4. Flag 1
 5. Flag status
 6. Flag 2
 7. Flag status
 8. Carried object 1
 9. Carried object 2
10. Worn object
15
 7
 0
14
 0
 0
 0
11
 0
 0
0
7
0
0
0
0
0
0
0
0
24
0
0
0
0
0
0
0
0
13
24
0
0
0
0
0
0
0
0
0
0
3
4
0
0
0
0
4
20
0
0
3
4
0
0
0
0
4
0
0
0
3
4
0
0
0
0
0
0
0
Actions
11. Flag set
12. Message
13. Exit
14. New location
15. Object number
16. Action
17. New location
18. Object number
19. Action
14
 6
 3
33
 0
 0
 0
 0
 0
0
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
255
4
0
0
0
0
0
0
0
0
11
0
0
4
2
0
25
5
0
12
0
0
0
0
0
0
0
0
13
0
0
0
0
0
0
0

In constructing puzzles, it is essential to remember that the lines are examined in sequence and that the program exits once it finds a true condition sequence. Thus special cases must be entered before more general ones which are to be executed by default. The three examples in Table 3 should help to clarify this. In example A we want a magic word to open up a new exit - say a locked door. However, we only want this to work in one location and then only once. It would be silly to print "The door opens" when it has already been opened. Line 1 of puzzle A specifies as conditions that one must be in room 15 (say the Library) that one must enter verb 7, which is the magic word chosen, that flag number 14 is not set and that object 11 is being carried (a magic wand perhaps). Note that all irrelevant conditions are filled with the number 0, which will automatically return a true value to the puzzle processor in Program 1. Note also that all flags start off initially unset, so it is only necessary to indicate in the numerical section how many flags there are, not what their initial state is.

LOST IN XANADU If the conditions of A1 are met then all actions with non-zero entries will be carried out. First, flag 14 is set, which means that the conditions of this line will never again be met. Second, message number 6 on the list is printed out describing the opening door. It is then specified that exit number 3 is to be changed - this refers to the set of six pointers, so it is in fact changing the direction west. The next number is the new location pointed to - number 33 (perhaps a secret passage). Note that an exit number could be changed to a zero, which would remove rather than reveal an exit. The immediately following line A2 has only one condition - use of the magic word, and only one action - print message 17 (e.g. "Nothing happens"). Thus if you use the word in the wrong location, or in the same location a second time this is what will happen. Of course, had line 2 been presented before line 1, the puzzle would have been insoluble.

The second example, B, also requires two lines. Here we want the player to be "killed" if they enter a given location - number 24 in this example - unless they are wearing a particular object - perhaps an asbestos suit to protect against great heat. Line B1 specifies as conditions that you be in room 24 and wearing object 13, and as actions specifies nothing at all! This is not as silly as it seems, because the purpose of the null actions is to exit the puzzle generator without reaching the next line. The next line, B2, has only one condition - being in location 24 - and two actions. Two special numbers can be entered into the flag set position (11) - 255 for kill or premature end of game and 254 for winning the game. If 255 is set the game will end, the score be printed out and the player asked whether they wish to play again. However, you must inform them that they were killed and how, so a message must be printed first - in the example message 4 on the list.

The third example, C, is a little more complicated and requires three lines. We want a player to be able to break a crystal ball and find a key, but they must first be carrying the ball and a hammer. All three lines contain the condition that the verb must be number 3 and the object number 4 - say "BREAK GLASS". The first line corresponds to success with the puzzle when objects 4 (crystal ball) and 20 (hammer) are carried the following actions occur:

(i) message 11 is printed (e.g. "The crystal ball shatters into a thousand fragments and a gold key falls to the ground"),
(ii) the action specified on object 4 (crystal ball) is that it disappears, while the action specified on object 25 (the gold key) is that it is made to appear in the current location (this object will have initially been assigned a location 0 for "hidden").

Note that we do not need to set a flag to avoid repetition of the success message, as in example A, because the crystal ball has now disappeared (forever) so the condition cannot be true a second time.

Line C2 specifies that if the crystal ball but not the hammer is being carried, then message 12 is printed - e.g. "The ball is too hard to break with your bare hands." Finally, if neither object is being held (C3) message 14 is printed - perhaps "You are not holding the crystal ball" which will do whether the player has already solved the puzzle or not.

Hopefully, these examples will suffice to show how puzzles can be created. Whilst there are obvious limitations imposed, a complex range of possibilities is still permitted. The most complicated puzzle in the Xanadu adventure, for example, required 10 lines to be entered, in the correct sequence, to the puzzle generator!

Advice On Using The Generator

Even though no BASIC coding is required, constructing a good adventure will take many hours and your program will still need to be tested and debugged. Hopefully, there are no bugs in the BASIC, but you will make mistakes by setting impossible puzzles or devising locations which cannot be reached, etc. The best way is to design and test the game in stages, which we suggest as follows:

(i) First draw a map and enter the descriptions and location pointers into the program. Do not hide any exits at this stage. Enter dummy values for numerical data (one noun, one message, etc) and create the datafiles. You can now run the adventure program 1 and simply walk around admiring the scenery and checking that everything corresponds to your map.
(ii) Now enter the list of objects, with locations, carry status and examine messages. Run the programs again and this time you should encounter the objects which can be examined, picked up, worn etc to test that they all behave as expected. Set an arbitrarily high carry limit at line 1080 at this stage.
(iii) Now you can construct and enter the verb list and the puzzles. If your game is any good, you will probably need to do many test runs and modifications to get these right. If you are working on a tape based system, this will really make you see the virtue of a disc upgrade!
(iv) Finally, you should work out the least number of objects that must be carried at any given time to solve the adventure and set the carry limit accordingly. Setting the parameters for the scoring system is probably best left to this late stage as well.

Once your masterpiece is finished you can, of course, present it to your friends with only Program 1 and the datafiles present and keep Program 2 to yourself. That way they cannot cheat by listing the program since all text etc is in the datafile. Of course, a determined cheat armed with Disc Doctor or whatever can break through if that's the way they like to play their computer games!

The size of adventure you can design obviously depends upon available memory. The supplied example for BBC users takes up most of the memory available on the disc system with PAGE at &1900, though the Acorn DFS and some others allow PAGE to be lowered to &1300 while still permitting you to load and save datafiles, thus gaining an extra 1.5K for the game. BBC tape users obviously have more memory to play with. The main claim on memory is text, so if you want an adventure with more locations, you will have to use shorter descriptions and messages to avoid the dreaded 'No room' error. The Electron example adventure is already right on the limit for a Mode 6 game with PAGE at &E00, using short location descriptions.

Advice On Playing

This article has been focussed primarily on the use of the generator for constructing your own games but Lost In Xanadu is a major, and we hope enjoyable game in its own right. Familiarity with Coleridge's poem, though not essential, should increase your enjoyment. It doesn't give you must help in solving the adventure - after all the poet was woken before he saw the end of the story.

A final word of warning - there are many opportunities for premature demise in this game, so frequent use of the quick save/load game facility is strongly recommended!

In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.

So twice five miles of fertile ground
With walls and towers were girdled round:
And there were gardens bright with sinuous rills
Where blossom'd many an incense-bearing tree;
And here were forests ancient as the hills,
Enfolding sunny spots of greenery.

But O! that deep romantic chasm which slanted
Down the green hill athwart a cedarn cover!
A savage place! as holy and enchanted
As e'er beneath a waning moon was haunted
By woman wailing for her demon-lover!

And from this chasm, with ceaseless turmoil seething,
As if this earth in fast thick pants were breathing,
A mighty fountain momenly was forced:
Amid whose swift half-intermitted burst
Huge fragments vaulted like rebounding hail,
Or chaffy grain beneath the thresher's flail:
And 'mid these dancing rocks at once and ever

  It flung up momently the sacred river.
Five miles meandering with a mazy motion
Through wood and dale the sacred river ran,
Then reach'd the caverns measureless to man,
And sank in tumult to a lifeless ocean:
And 'mid this tumult Kubla heard from far
Ancestral voices prophesying war!

The shadow of the dome of pleasure
Floated midway on the waves,
Where was heard the mingled measure
From the fountain and the caves.
It was a miracle of rare device,
A sunny pleasure-dome with caves of ice!
A damsel with a dulcimer
In a vision once I saw:
It was an Abyssinian maid, And on her dulcimer she played,
Singing of Mount Abora.
Could I revive within me
Her symphony and song,
To such a deep delight 'twould win me,
That with music loud and long,
I would build that dome in air,
Thy sunny dome! those caves of ice!
And all who heard should see them there,
And all should cry, Beware! Beware!
His flashing eyes, his floating hair!
Weave a circle round him thrice,
And close your eyes with holy dread,
For he on honey-dew hath fed,
And drunk the milk of Paradise.

Samuel Taylor Coleridge (1772-1834)

Where To Get It

A digital version of this item can be downloaded right here at Everygamegoing (All our downloads are in .zip format).
DownloadWhat It ContainsLink
5.25" DiscA digital version of A&B Computing 2.07 suitable for BeebEm (PC (Windows)), Elkulator 1.0 (PC (Windows)), Model B Emulator (PC (Windows)), PcBBC (PC (MS-DOS)) AaB_02_07.zip

A&B Computing 2.07 is Item ID 3307 in our database. Last modified on Saturday 3rd of December 2016 at 02:01:48 PM.