> I am pleased to announce the immediate availability of the first release > of the core distribution of BAABE [1]. > BAABE is a freeware interactive fiction interpreter and framework for > RISC OS. The script files are written in ordinary BASIC for ease of > adventure creation and maintenance, with several veneers and > informational variables made available from the main interpreter. > Documentation from both the gamer's and programmer's perspective is > included in the archive, along with some examples for you to play with, > and hopefully give you an idea of how to write your own games. > The headline feature it the engine's extraordinary capacity for > translation and internationalisation. All text, from cut scenes to verb > handles, is held in message files looked up by means of ResFind. It goes > beyond that, too - the sentence structure the player enters commands in > is not fixed, so depending on the configuration, 'put ball in bag' and > 'bag put the ball' could both be valid commands. > The only requirements for programming using BAABE are a reasonable > amount of experience in BASIC, and a lot of imagination! > http://www.starfighter.acornarcade.com/mysite/games.htm#baabe > [1] Bloody Awkward Adventure Back-End.
How much work do you have to do to create an adventure? Do you for example get bogged down with flags, variables, indexes?
The following bytes were arranged on 6 Nov 2009 by Andrew :
[snip]
> How much work do you have to do to create an adventure? Do you for > example get bogged down with flags, variables, indexes?
You'll have to be more specific than that. What's a flag, what's a variable and what's an index?
The main difference in most interpreters is the sophistication of the adventure you can create solely from data files, without having to write any script. While this interpreter is more advanced than some, e.g. in the sophisticated 'container object' implementation, and the multi-level hints, you'll still end up writing more or less the same amount of code that you would in any other system. There's no 'magic wand' a non- programmer can wave to instantly create a complicated adventure, I'm afraid. :-(
-- __<^>__ / _ _ \ You always find something in the last place you look. ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
In message <6cf126b650.mar...@blueyonder.co.uk> Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
> The following bytes were arranged on 6 Nov 2009 by Andrew : > [snip] >> How much work do you have to do to create an adventure? Do you for >> example get bogged down with flags, variables, indexes?
> You'll have to be more specific than that. What's a flag, what's a > variable and what's an index?
In other words, indicators whether specific events have occurred, variables to hold all the data, indexes for location, inventory etc.
> The main difference in most interpreters is the sophistication of the > adventure you can create solely from data files, without having to write > any script. While this interpreter is more advanced than some, e.g. in > the sophisticated 'container object' implementation, and the multi-level > hints, you'll still end up writing more or less the same amount of code > that you would in any other system. There's no 'magic wand' a non- > programmer can wave to instantly create a complicated adventure, I'm > afraid. :-(
Martin Bazley <martin.baz...@blueyonder.co.uk> wrote: > The following bytes were arranged on 6 Nov 2009 by Andrew : > [snip] > > How much work do you have to do to create an adventure? Do you for > > example get bogged down with flags, variables, indexes?
As well as what Martin says below, I'd suggest that the absolute hardest part of writing an adventure game is the thought and imagination that must go into the fiction itself; planning the story that will unfold for the player, mapping it, devising the puzzles, and writing all the descriptions to go with all of that. All of which should be done before you even think about the "programming" aspect of it.
This is just one reason why the sequel to Quicksand (It's No Game) still exists as nothing more than loose, and fairly incoherent notes on my system. I have some good ideas for the game, but haven't had the time to tie them together in a way that will enable me to start the [extra] mapping process.
> You'll have to be more specific than that. What's a flag, what's a > variable and what's an index? > The main difference in most interpreters is the sophistication of the > adventure you can create solely from data files, without having to write > any script. While this interpreter is more advanced than some, e.g. in > the sophisticated 'container object' implementation,
Hmm... how did you go about that? I noted some ideas I had along those lines on Iconbar at one point. (I was thinking along the lines of making *everything* an object - even rooms - and giving all objects a container status, defining how they could hold things; in, on, under, etc)
> and the multi-level hints, you'll still end up writing more or less the > same amount of code that you would in any other system. There's no 'magic > wand' a non- programmer can wave to instantly create a complicated > adventure, I'm afraid. :-(
Exactly.
The closest you can probably get to that is to provide a very simple script into which the user can drop his own objects/rooms descriptions (this is easily achievable with Trellis) - but then, there'd be nothing particularly special about the result.
I haven't had time to play with BAABE yet - or more specifically, play your conversion of Pyramid. How faithful a conversion is it?
In message <gemini.ksqkyz003rpga0420.s...@softrock.co.uk> Vince M Hudd <s...@softrock.co.uk> wrote:
> As well as what Martin says below, I'd suggest that the absolute hardest > part of writing an adventure game is the thought and imagination that must > go into the fiction itself; planning the story that will unfold for the > player, mapping it, devising the puzzles, and writing all the descriptions > to go with all of that. All of which should be done before you even think > about the "programming" aspect of it. > This is just one reason why the sequel to Quicksand (It's No Game) still > exists as nothing more than loose, and fairly incoherent notes on my system. > I have some good ideas for the game, but haven't had the time to tie them > together in a way that will enable me to start the [extra] mapping process.
I've only written one but found the hardest part having to keep track of all the flags for objects, tasks etc. The story you can just flesh out along the way provided you have a basic set of locations.
>> You'll have to be more specific than that. What's a flag, what's a >> variable and what's an index? >> The main difference in most interpreters is the sophistication of the >> adventure you can create solely from data files, without having to write >> any script. While this interpreter is more advanced than some, e.g. in >> the sophisticated 'container object' implementation, > Hmm... how did you go about that? I noted some ideas I had along those lines > on Iconbar at one point. (I was thinking along the lines of making > *everything* an object - even rooms - and giving all objects a container > status, defining how they could hold things; in, on, under, etc)
This is what I mean by becoming bogged down with flags etc.
The following bytes were arranged on 7 Nov 2009 by n...@spam.invalid:
> In message <gemini.ksqkyz003rpga0420.s...@softrock.co.uk> > Vince M Hudd <s...@softrock.co.uk> wrote:
> > This is just one reason why the sequel to Quicksand (It's No Game) still > > exists as nothing more than loose, and fairly incoherent notes on my system. > > I have some good ideas for the game, but haven't had the time to tie them > > together in a way that will enable me to start the [extra] mapping process. > I've only written one but found the hardest part having to keep track > of all the flags for objects, tasks etc. The story you can just flesh > out along the way provided you have a basic set of locations.
Did you write the interpreter part yourself, or did you use an existing system?
Without a doubt, the only complicated code required is that in the interpreter. Most of the script is simple, and even repetitive; an average line goes, "If the player hasn't done this yet, don't let him do that". The main limiting factor is being bothered to cover all eventualities. I'm still not sure quite what you mean by 'flags', but as the flags you'll be using will be BASIC variables of your choice of name, it can't be that difficult to keep track of them.
For the record, I definitely agree with what Vince says about writing the fiction part; once you know what you're doing, it's fairly easy, but you'll have to go to some considerable cognitive effort to work out how you want your adventure to play.
-- __<^>__ / _ _ \ I don't have a problem with God; it's his fan club I can't stand. ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
The following bytes were arranged on 7 Nov 2009 by n...@spam.invalid:
> In message <6cf126b650.mar...@blueyonder.co.uk> > Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
> > The following bytes were arranged on 6 Nov 2009 by Andrew :
> > [snip]
> >> How much work do you have to do to create an adventure? Do you for > >> example get bogged down with flags, variables, indexes?
> > You'll have to be more specific than that. What's a flag, what's a > > variable and what's an index? > In other words, indicators whether specific events have occurred, > variables to hold all the data, indexes for location, inventory etc.
'Indicators whether specific events have occurred': I'm not quite sure how you plan to write any sort of adventure without using those.
'Variables to hold all the data': Sort of. All game-relevant ones are taken care of for you; the variables you have to worry about are the 'flags' above.
'Indexes for location, inventory, etc.': Either this is much more complicated than it sounds, or you're still hoping for a 'magic wand' solution.
> > The main difference in most interpreters is the sophistication of the > > adventure you can create solely from data files, without having to write > > any script. While this interpreter is more advanced than some, e.g. in > > the sophisticated 'container object' implementation, and the multi-level > > hints, you'll still end up writing more or less the same amount of code > > that you would in any other system. There's no 'magic wand' a non- > > programmer can wave to instantly create a complicated adventure, I'm > > afraid. :-(
> Can you give an example of the script?
Yes - there are three in the download.
-- __<^>__ "Your pet, our passion." - Purina / _ _ \ "Your potential, our passion." - Microsoft, a few months later ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
In message <01077eb650.mar...@blueyonder.co.uk> Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
>>> This is just one reason why the sequel to Quicksand (It's No Game) still >>> exists as nothing more than loose, and fairly incoherent notes on my >>> system. >>> I have some good ideas for the game, but haven't had the time to tie them >>> together in a way that will enable me to start the [extra] mapping process. >> I've only written one but found the hardest part having to keep track >> of all the flags for objects, tasks etc. The story you can just flesh >> out along the way provided you have a basic set of locations.
> Did you write the interpreter part yourself, or did you use an existing > system?
I wrote the game from scratch in BASIC for the BBC Micro. The "interpreter" was just breaking down text entered into component parts and updating the players location and objects status. Another complication was dialogue with game characters.
> Without a doubt, the only complicated code required is that in the > interpreter. Most of the script is simple, and even repetitive; an > average line goes, "If the player hasn't done this yet, don't let him do > that". The main limiting factor is being bothered to cover all > eventualities. I'm still not sure quite what you mean by 'flags', but > as the flags you'll be using will be BASIC variables of your choice of > name, it can't be that difficult to keep track of them.
e.g. object can be taken: bit in object properties variable set as 1, can't be taken: set as 0
> For the record, I definitely agree with what Vince says about writing > the fiction part; once you know what you're doing, it's fairly easy, but > you'll have to go to some considerable cognitive effort to work out how > you want your adventure to play.
In message <9b1d7db650.mar...@blueyonder.co.uk> Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
> 'Indicators whether specific events have occurred': I'm not quite sure > how you plan to write any sort of adventure without using those. > 'Variables to hold all the data': Sort of. All game-relevant ones are > taken care of for you; the variables you have to worry about are the > 'flags' above. > 'Indexes for location, inventory, etc.': Either this is much more > complicated than it sounds, or you're still hoping for a 'magic wand' > solution.
I'm not, I was hoping you could give an idea whether its worth using or whether its better to spend the same amount of time and effort writing a BASIC adventure yourself. All I found I had to get around was the concept of moving around within a map and then realised even that could be done in different ways.
>>> The main difference in most interpreters is the sophistication of the >>> adventure you can create solely from data files, without having to write >>> any script. While this interpreter is more advanced than some, e.g. in >>> the sophisticated 'container object' implementation, and the multi-level >>> hints, you'll still end up writing more or less the same amount of code >>> that you would in any other system. There's no 'magic wand' a non- >>> programmer can wave to instantly create a complicated adventure, I'm >>> afraid. :-(
> In message <01077eb650.mar...@blueyonder.co.uk> > Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
> >>> This is just one reason why the sequel to Quicksand (It's No Game) still > >>> exists as nothing more than loose, and fairly incoherent notes on my > >>> system. > >>> I have some good ideas for the game, but haven't had the time to tie them > >>> together in a way that will enable me to start the [extra] mapping process. > >> I've only written one but found the hardest part having to keep track > >> of all the flags for objects, tasks etc. The story you can just flesh > >> out along the way provided you have a basic set of locations.
> > Did you write the interpreter part yourself, or did you use an existing > > system? > I wrote the game from scratch in BASIC for the BBC Micro. The > "interpreter" was just breaking down text entered into component parts > and updating the players location and objects status. Another > complication was dialogue with game characters.
Oh, right - in that case, it sounds as if BAABE was pretty much designed for you! The entire thing - script included - is written in bog-standard BASIC, but all the complicated stuff is already done for you in the interpreter - player input parsing (with provision for different grammatical structures), keywords with more than one word in them, movement between rooms, ready-made versions of the 'put', 'get' and 'drop' keywords, use of pronouns and the 'all' keyword, game loading and saving, and more obscure features such as more than one command on the same line and provision for clashes in noun keywords (so you don't have to have just one of everything in your adventure).
Dialogue with game characters will still have to be implemented on the script side, but it's a good idea to limit that anyway since it's very confusing for players to try and work out what needs to be said. Standard practice is to define a set of dummy noun keywords and check to see if the player uttered any of them.
It's only when I see the length of the interpreter code that I realise the benefits to be gained by not having to write or adapt it every time I wanted to write a new game!
> > Without a doubt, the only complicated code required is that in the > > interpreter. Most of the script is simple, and even repetitive; an > > average line goes, "If the player hasn't done this yet, don't let him do > > that". The main limiting factor is being bothered to cover all > > eventualities. I'm still not sure quite what you mean by 'flags', but > > as the flags you'll be using will be BASIC variables of your choice of > > name, it can't be that difficult to keep track of them.
> e.g. object can be taken: bit in object properties variable set as 1, > can't be taken: set as 0
Yes, that's more or less exactly how the noun flags work (except it's string, not numeric, based), but don't worry - under nearly all circumstances, you will be able to completely ignore them.
-- __<^>__ "Start off every day with a smile and get it over with." / _ _ \ - W.C. Fields ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
The following bytes were arranged on 7 Nov 2009 by n...@spam.invalid:
> In message <9b1d7db650.mar...@blueyonder.co.uk> > Martin Bazley <martin.baz...@blueyonder.co.uk> wrote:
> > 'Indexes for location, inventory, etc.': Either this is much more > > complicated than it sounds, or you're still hoping for a 'magic wand' > > solution. > I'm not, I was hoping you could give an idea whether its worth using > or whether its better to spend the same amount of time and effort > writing a BASIC adventure yourself. All I found I had to get around > was the concept of moving around within a map and then realised even > that could be done in different ways.
Briefly, yes, it's much, much quicker. And you'll get a more advanced and user-friendly game for your time as well.
-- __<^>__ / _ _ \ I don't have a problem with God; it's his fan club I can't stand. ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
n...@spam.invalid wrote: > In message <gemini.ksqkyz003rpga0420.s...@softrock.co.uk> > Vince M Hudd <s...@softrock.co.uk> wrote: > > As well as what Martin says below, I'd suggest that the absolute hardest > > part of writing an adventure game is the thought and imagination that > > must go into the fiction itself; planning the story that will unfold for > > the player, mapping it, devising the puzzles, and writing all the > > descriptions to go with all of that. All of which should be done before > > you even think about the "programming" aspect of it.
[...]
> I've only written one but found the hardest part having to keep track of > all the flags for objects, tasks etc.
That's largely because you were clearly tackling the _whole_ job. A good adventure writing system should attempt to take care of as much of this as possible on your behalf. You'll still need to handle some of this, unless you want the result to be _very_ basic, because no system can predict what puzzles _you_ will conceive - but certainly, the basics should be handled for you, such as tracking the player through the map, dealing with the player interface, describing things, picking things up, dropping them, etc.
> The story you can just flesh out along the way provided you have a basic > set of locations.
Ugh!
If you mean fleshing out the descriptions and text, then, yes, fair enough - changing "A blue room with a table and chair in the middle" to "This room has light blue walls. The floor is a darker blue, but the bright light in the middle of the ceiling blinds your view of that, so its particular shade is harder to determine. There is a small kitchen table in the middle of the room, with a single chair in front of it." I can accept and agree with.
But if that fleshing out you do _really_ mean the story itself, then "Ugh!"
Modifying it where necessary to fit with unforseen limitations in your development system - or abilities - is also acceptable (due to necessity). Or even to mactch your available resources, which I had to do with the final part of Quicksand; I just couldn't get a photograph to match my original ideas. But not fleshing out the story. That's making it up as you go along, and can lead to a weaker, less coherent story.
> > > You'll have to be more specific than that. What's a flag, what's a > > > variable and what's an index? > > > The main difference in most interpreters is the sophistication of the > > > adventure you can create solely from data files, without having to > > > write any script. While this interpreter is more advanced than some, > > > e.g. in the sophisticated 'container object' implementation, > > Hmm... how did you go about that? I noted some ideas I had along those > > lines on Iconbar at one point. (I was thinking along the lines of making > > *everything* an object - even rooms - and giving all objects a container > > status, defining how they could hold things; in, on, under, etc) > This is what I mean by becoming bogged down with flags etc.
What I'm talking about there, though, is stuff that would largely be handled by the adventure system itself. All you, as the writer of the game, would be concerned with is the specific objects that the system handles, and which of the system's flags to assign to it; once that's done, you should be able to just ignore that aspect unless, as I've said, any of your puzzles require special treatment, in which case you intervene at the script level in the appropriate point.
Forgetting what I've said in that quoted paragraph, which was me thinking about possibilities for a rewrite that will in all likelihood never happen, and looking at the existing version of Trellis, and taking objects as the example:
In Trellis, each object has a variable associated with it which is its location. If the player has picked an object up, that location is zero. If it's out of play, you can set it to be in a room that doesn't exist. (I tend to use -1 which is more obvious, and you could of course consider using _specific_ numbers for specific things; up to you - but again, that's delving into special cases, which may or may not be necessary).
When you enter a room and your script loops to the point where the description of the room must be given, Trellis deals with which objects can be seen there by looking at that variable for each object and determining if its room number is the one the player is in. (Having not yet looked, I don't know if that's how Martin has gone about it). So, at the very simplest, your object handling is to supply Trellis with a list of objects and their properties - unless you want to intervene with how it handles a particular object (to make it fit with your puzzles), Trellis will cope with seeing the object, describing it, picking it up, dropping it, etc with no other effort from you.
So, instead of writing some source code which basically says:
* Look up the description for room 43 and print it. * Look up the exits for room 43 and print which ways the player can go. * Look through the objects and see which ones are in room 43, printing their short description.
(but which would be a bit more involved than that) you can instead just issue a script command (or a small set of them) to do _all_ of that. Your task as the adventure writer becomes much more simplified.
I think in one of your other posts, you've mentioned using a flag to indicate whether the player can take a particular object. The way I handled that in Trellis is to assign each object a weight, and a maximum weight the player can pick up. That means the system can automatically handle cases of the player only being able to lift the sack of potatoes if he isn't already carrying the bag of cement - all you have to do is set these figures correctly at the start. If you just want a simpler "can or can't pick up", set the weight of everything he can pick up at zero, set his max to one, and set the weight of anything you want seen as an object, but which the player can't take, to two. I use bigger numbers for the max and the weight of 'fixed' objects, to make it more obvious - but as long as the latter are bigger than the max, Bob's your uncle. You don't have to worry about handling these things - just about setting the values correctly in the Object definitions file.
The whole point is so that you can devote considerably more time to the fiction itself, and how it plays out, and let an already existing system handle much of the standard work. This is, in fact, not unlike how we go about developing things in general anyway - rather than keep writing the same bits of source code over and over again, we re-use it by putting it in a library, which our programs call; think of a good adventure development system along those lines: It's a programming library for the adventure writer.
> When you enter a room and your script loops to the point where the > description of the room must be given, Trellis deals with which objects can > be seen there by looking at that variable for each object and determining if > its room number is the one the player is in. (Having not yet looked, I don't > know if that's how Martin has gone about it). So, at the very simplest, your > object handling is to supply Trellis with a list of objects and their > properties - unless you want to intervene with how it handles a particular > object (to make it fit with your puzzles), Trellis will cope with seeing the > object, describing it, picking it up, dropping it, etc with no other effort > from you.
[snip some more] > The whole point is so that you can devote considerably more time to the > fiction itself, and how it plays out, and let an already existing system > handle much of the standard work. This is, in fact, not unlike how we go > about developing things in general anyway - rather than keep writing the > same bits of source code over and over again, we re-use it by putting it in > a library, which our programs call; think of a good adventure development > system along those lines: It's a programming library for the adventure > writer.
Regarding your points above, and your earlier comments on my conversion of Pyramid...
When I converted Pyramid, I was determined that it should be as faithful a conversion as possible - even including original bugs if necessary. (I seem to remember, for example, that the only two valid synonyms for the graffiti were 'TEXT' and 'WRIT', which always puzzled me!) For this reason, I actually wrote a BASIC program to convert Trellis data files into BAABE ones - I could let you have it if you like, although it probably isn't much use for anything else, especially since BAABE doesn't have a 'weight' system and so it simply treated weight 200 as the equivalent of the 'do not pick up' flag. Also, considerably more work was required to re-implement the script in 'library' rather than '!RunImage' form - see below.
While writing the converter, I realised there were several ways in which BAABE differed from Trellis in the most fundemental aspects of its rationale. To take just one example, you wondered whether I had gone about object lists in room descriptions the same way you had; no, I haven't. In fact, BAABE's system is the complete opposite. Rather keep track of which nouns are in which rooms, it keeps track of which rooms contain which nouns. I find this considerably simplifies things in matters of room descriptions, since you only have to read out one list, rather than scan the entire noun database. A disadvantage would be that you can't just easily check to see which room a noun's in, but I find that, in most circumstances, if you want to do this you already know which room it should be in and you can use the function (FNhere) provided for that purpose.
Another thing you mentioned above is that Trellis is fundementally a library for an interpreted script file. BAABE, on the other hand, is an engine of which certain aspects may be readily customised, by means of filters and handlers the interpreter calls when necessary.
I'm not saying either approach is necessarily better than the other, except perhaps that my approach doesn't necessitate the writing of an entire language specification and, under most circumstances, is less work for the programmer, but that Trellis is more customisable in certain fundemental aspects (duplicating the eight turns of darkness - suppressed descriptions - was a nightmare!).
-- __<^>__ Red sky in the morning: Shepherd's warning / _ _ \ Red sky at night: Shepherd's delight ( ( |_| ) ) Mince and potatoes: Shepherd's pie \_> <_/ ======================= Martin Bazley ==========================
Martin Bazley <martin.baz...@blueyonder.co.uk> wrote: > The following bytes were arranged on 8 Nov 2009 by Vince M Hudd :
[...]
> Regarding your points above, and your earlier comments on my conversion of > Pyramid... > When I converted Pyramid, I was determined that it should be as faithful a > conversion as possible - even including original bugs if necessary.
Bugs? Those within the adventure, or those within Trellis? (As I discovered when I worked on Quicksand - it's absolutely full of bugs and some terrible programming.)
> (I seem to remember, for example, that the only two valid synonyms for the > graffiti were 'TEXT' and 'WRIT', which always puzzled me!)
Probably just down to a lack of imagination or thought on my part at the time. The game's own history may be a factor as well, since it has origins which predate Trellis. I forget the full detail, but the game as written has gone through several incarnations on more than one platform and programming environment, since I first learnt to press a key on a computer keyboard.
The following bytes were arranged on 11 Nov 2009 by Vince M Hudd :
> Martin Bazley <martin.baz...@blueyonder.co.uk> wrote: > > When I converted Pyramid, I was determined that it should be as faithful a > > conversion as possible - even including original bugs if necessary.
> Bugs? Those within the adventure, or those within Trellis? (As I discovered > when I worked on Quicksand - it's absolutely full of bugs and some terrible > programming.)
The adventure - I only found one that I know of, that below.
> > (I seem to remember, for example, that the only two valid synonyms for the > > graffiti were 'TEXT' and 'WRIT', which always puzzled me!)
> Probably just down to a lack of imagination or thought on my part at the > time. The game's own history may be a factor as well, since it has origins > which predate Trellis. I forget the full detail, but the game as written has > gone through several incarnations on more than one platform and programming > environment, since I first learnt to press a key on a computer keyboard.
It wasn't so much there only being two of them, it was the fact that one of them was incomplete! As a result, the only way to read the text was to type 'READ TEXT', not 'READ WRITING' or 'READ GRAFFITI', etc. - took me some time when first playing the game to figure that out!
-- __<^>__ "Your pet, our passion." - Purina / _ _ \ "Your potential, our passion." - Microsoft, a few months later ( ( |_| ) ) \_> <_/ ======================= Martin Bazley ==========================
Martin Bazley <martin.baz...@blueyonder.co.uk> wrote: > The following bytes were arranged on 11 Nov 2009 by Vince M Hudd : > > Bugs? Those within the adventure, or those within Trellis? (As I > > discovered when I worked on Quicksand - it's absolutely full of bugs and > > some terrible programming.) > The adventure - I only found one that I know of, that below. > > > (I seem to remember, for example, that the only two valid synonyms for > > > the graffiti were 'TEXT' and 'WRIT', which always puzzled me!)
[...]
> It wasn't so much there only being two of them, it was the fact that one > of them was incomplete! As a result, the only way to read the text was to > type 'READ TEXT', not 'READ WRITING' or 'READ GRAFFITI', etc. - took me > some time when first playing the game to figure that out!
READ WRITING should have worked, unless I did something really stupid to prevent it.
The way the "WORDS" is that the first word on the line is the keyword that is used in the script for recognising what the player has entered, with the rest on each line being seen as synonyms for that word.
So for a line in the words file that reads:
TEXT WRIT
What *should* happen is that if, in the script, there's a line:
IF FNSaid("TEXT") THEN blah-blah-blah
(The actual condition would also check for READ, obviously, but...)
The FNSaid function in Trellis itself should find the line in the words file that begins with "TEXT" and then use INSTR to check for each item on that line in the player's input string. "READ WRITING" contains "WRIT" so that should match. "READ WHAT'S WRITTEN" should also work (which is why I used "WRIT" instead of "WRITING"), etc.
But if that *didn't* work, then I guess the rest of the first sentence after "unless" is probably the case. i.e. I did something really stupid at some point which stopped it working. I probably "fixed" something else. :)
<fires up the Iyonix, in much the same way that Gene Hunt fires up the Quattro. Or not.>
A quick glance at the words and script files and everything /seems/ fine. The actual line is:
IF (FNSaid("READ") OR FNSaid("EXAMINE")) AND FNSaid("TEXT") AND Store%(3)=10 THEN
Store%(3) is the player location - 10 being the room with the writing. That part of the condition is ensuring you can only read the writing if you can see it - ie if you're there. By checking for (READ OR EXAMINE) AND TEXT means you should be able to READ or EXAMINE the words.
Rather than play it through (again!), I've just added "WRIT," as a synonym to "PEDESTAL" in the Words file, and built the modified game. (The pedestal appears in the opening room). Typing "EXAMINE WRITING" now serves to examine the pedestal - this suggests that the FNSaid function is working correctly. (Well, in the latest build of Trellis, anyway - the one used for Quicksand. OTTOMH, I don't think any changes were made to that area in the program - mainly it was to do with screen modes and graphics, etc).