Axe Software Forums
  Quest Developer Forum
  A Laundry List of Suggestions for QDK/Quest


Author Topic:   A Laundry List of Suggestions for QDK/Quest
bjbest posted 12-12-2002 23:24 GMT     
I recently completed a rather large game using QDK (which hopefully will be added to the arhive shortly), and I have a variety of suggestions for improvements. Feel free to disagree with me or add your own. I apologize if these have already been brought up in other messages, or if they've been fixed in Quest 3.12 (I'm still on 3.11).

*Implement a |cw command for white foreground text. All the other colors have their own command, I don't see why white can't have its own, too.

*Use the same terminology for (in)accessible, (un)available, in(visible) throughout QDK. Is inaccessible the same thing as unavailable? I think it is, but it isn't clear.

*Add a new conditional check: "If player is in room" and then be able to select a room. I found myself at times having to add unnecessary objects to rooms to verify that the player was in the room he/she needed to be in to accomplish something.

*New directional commands: UP and DOWN. These would work just like NORTH, EAST, etc. These commands would make for more logical multi-story structures. You can get around this by using "Go to" exits, but I'd rather just type UP to go up a flight of stairs.

*Every time I tried using a looped sound it only played once.

*Quest needs to supply a space between the object and its suffix. Currently the description will read, "There is a |blamp|xbon the table," with no space between "lamp" and "on the table."

*I'd like to see Quest work with synonyms better. Excluding custom-defined commands, most commands are going to take the form of VERB (e.g., EAST), VERB OBJECT (e.g., TAKE COINS), or VERB OBJECT PREPOSITION OBJECT2 (e.g., GIVE COINS TO BOY, USE COINS ON FOUNTAIN). The problem comes when you have an object that consists of 2 or more words. Let's say you have a STIFF DRINK in your game. You'd like to let the player refer to this just as DRINK, so you set up a synonym redirecting all references of DRINK to STIFF DRINK. The problem is that Quest does not recognize STIFF DRINK as one object; it takes each word individually. So if you type in TAKE STIFF DRINK, Quest will encounter the word DRINK and replace it with STIFF DRINK, altering the command to TAKE STIFF STIFF DRINK. But wait! Now there's a new DRINK in the command line! So that too will be replaced with STIFF DRINK, and ultimately you wind up with a command of TAKE STIFF STIFF STIFF STIFF STIFF STIFF etc. until the game errors out on an overflow. Could Quest instead understand that most commands will be in either a two-part (VERB OBJECT) or a four-part (VERB OBJECT PREPOSITION OBJECT2) structure and deal with interpreting the command that way? I imagine this would be a difficult change, but I feel good synonyms are important to a successful game so that the player doesn't have to hunt around for the precise words.

*Some sort of built-in scoring mechanism? It's not hard to do with variables, but it might be easier if it was directly programmed in.

*I had some problems using nested if-then-else statements not working properly, but unfortunately I can not provide you with specifics anymore and the issue may have been on my end. My solution was to make each new condition its own procedure.

Thanks for listening. Again, these are just suggestions. Overall, I was pleased with using QDK once I got the hang of it. I especially like the timers, they are useful for giving the game a more "real-time" feel.

bjbest posted 13-12-2002 01:14 GMT          
Ok, the suffix issue was fixed in Quest 3.12.
MaDbRiT posted 13-12-2002 14:21 GMT          
bjbest wrote:

A whole lot of stuff actually, all good points too, but there are some "answers" that can come immediately to mind and some further questions. Forgive much snippage in the quotes here...


quote:

*Add a new conditional check: "If player is in room" and then be able to select a room. I found myself at times having to add unnecessary objects to rooms to verify that the player was in the room he/she needed to be in to accomplish something.

Not quite sure what you mean by this. You can read the player's current location easily enough with #quest.currentroom# and use that in tests - an example of what you were trying to do but found tricky would help understanding the problem.

quote:

*New directional commands: UP and DOWN. These would work just like NORTH, EAST, etc. These commands would make for more logical multi-story structures. You can get around this by using "Go to" exits, but I'd rather just type UP to go up a flight of stairs.

Implementing UP/DOWN as directions that can be accessed by typing is really easy, however if they are to be standard Quest Directions they really need Alex to tweak the Quest interface and provide up down buttons alongside the compass rose. I think this is a Good Idea!

quote:

*Every time I tried using a looped sound it only played once.

*Quest needs to supply a space between the object and its suffix. Currently the description will read, "There is a |blamp|xbon the table," with no space between "lamp" and "on the table."
[/quote

Known bugs in 3.11, I'm pretty sure 3.12 fixes these.

[quote]
*I'd like to see Quest work with synonyms better...
... but I feel good synonyms are important to a successful game so that the player doesn't have to hunt around for the precise words.


No argument for the conclusion from me! BUT the use of synonymns for converting two word named objects to one word is fraught with problems and is not the best way to use Quest at all.

MUCH better idea is to use the ALT tag, Your 'stiff drink' could then be named 'whisky', and give it ALT names of 'drink', 'stiff drink', 'glass of whisky' etc. Quest then resolves the typed input to the name of the object and the synonyms aren't required.

I Use synonymns to make alternative verbs, e.g. "swill; slurp; guzzle = drink". When kept for this purpose they work a lot better.

quote:

*Some sort of built-in scoring mechanism? It's not hard to do with variables, but it might be easier if it was directly programmed in.

It could be built in to advantage, I'd not argue that :-) It could also be written as a mini-library though which might be a more attractive way to go.

quote:

*I had some problems using nested if-then-else statements not working properly, but unfortunately I can not provide you with specifics anymore and the issue may have been on my end. My solution was to make each new condition its own procedure.

As my typelib uses nested if-then-elses to a level that scares me silly, I don't think there is a problem with the way these are implemented in Quest. They are however nasty things that are hard to follow the logic of by nature (once you are half a dozen levels in - it gets hairy)... I repeat my plea to Alex for a "Select Case" option!

Look forward to seeing your game bjbest!

Al

Computer Whizz posted 13-12-2002 14:29 GMT          
"|cw"

LOL... And then have a message box popping up saying "WOOHOO... CW!" : )

"I found myself at times having to add unnecessary objects to rooms to verify that the player was in the room he/she needed to be in to accomplish something."

Wouldn't it just be easier to use the "$quest.currentroom$" (or is it "#quest.currentroom#"?) and check that?
FYI quest.currentroom contains the name of the room the player is currently in.

"*New directional commands: UP and DOWN."

This wouldn't be TOO hard to do ourselves - but you might say the same about north south east and west. I would say this would be a good addition - in fact I thought this was a feature already, having a look at the latest QDK I see it isn't.

"*I'd like to see Quest work with synonyms better."

Erm, I remember this from a long time ago... Doesn't Quest have the ability to replace a synonym only once?

"*Some sort of built-in scoring mechanism?"

The problem with this is that different programers would want different scoring systems. If you do it yourself you can get more out of it and have a more versatile scoring system.

Computer Whizz

bjbest posted 13-12-2002 19:13 GMT          
Re: Player in current room check
Yes, you're both right, you could just test the #quest.currentroom# string. I didn't think of that. Still, in terms of making QDK easier to use, I think this condition (i.e., testing if a player is in a certain room) could be implemeneted in the conditional pop-up, making it easier for us. I feel it's an important-enough one to receive such a status, but others may disagree.

Re: Synonyms
This is my first time using QDK or Quest (the last game I wrote was with AGT a million years ago), so I admit a lot of ignorance about ASL. Al recommended using the ALT tag for object synonyms. Is this the same thing as using the "Other names..." button on the Description tab of the Object Properties window in QDK?

bjbest posted 13-12-2002 20:38 GMT          
There's an additional item I forgot to include in my "suggestions" list.

*Conditional menu items. The primary purpose of these would be for holding more advanced conversations with characters. I know adding conversation trees has been discussed, but this is slightly different (I think). Here's how it would work. Let's say near the beginning of the game you encounter a police officer, and when you speak to him, you're presented with three different conversation options. During your travels in the game, you encounter an overturned car in a ditch. Once you find this car, a flag variable is switched on, and then when you return to the police officer, you will now be presented with four options to converse about: the three original ones plus a fourth about the overturned car (which was made available thanks to the flag). I think this would be a simple yet powerful way to make conversations with characters more dynamic. If this is indeed part of conversation tree plans, well, then, excellent! :-)

Computer Whizz posted 14-12-2002 12:19 GMT          
"Re: Synonyms"

I agree that you should use the alternative (other) names.

"Re: Player in current room check"

I think it would be welcome for beginner programmers. They wouldn't have the guts to go through the help file in search of Default-Quest variables/functions.

"Conditional menu items"

I agree whole-heartedly. I tried to do something like this before and since it wouldn't work haven't bothered with updating the game since.
This is needed for wider use of the menu's IMO.

Computer Whizz

MaDbRiT posted 14-12-2002 10:01 GMT          
quote:

Al recommended using the ALT tag for object synonyms. Is this the same thing as using the "Other names..." button on the Description tab of the Object Properties window in QDK?

Yes it is!

Complete agreement on the menu-choices structure here, the lack of ability to make these conditional makes them a pain to work with for 'conditional conversation' - which would be a very useful way to implement it otherwise.

Al

Alex posted 15-12-2002 15:19 GMT          
*Implement a |cw command for white foreground text. All the other colors have their own command, I don't see why white can't have its own, too.

Because white is normally the background colour, so white text would be invisible. To print white text, set the background colour to something other than white, then set the foreground colour to white (using the "foreground" tag or script command, or from the QDK Game Properties window), then use "|cb" (which now always uses the current foreground colour).

*Use the same terminology for (in)accessible, (un)available, in(visible) throughout QDK. Is inaccessible the same thing as unavailable? I think it is, but it isn't clear.

Inaccessible and unavailable are the same thing - I didn't realise I'd used different words to mean the same thing. I'll go through the documentation to make sure I'm being consistent.

*New directional commands: UP and DOWN.

These are already implemented in the

*Every time I tried using a looped sound it only played once.

I'm sure this has been reported for, but I was not able to reproduce the problem. Could you send me the ASL file and the sound file you're using please?

I repeat my plea to Alex for a "Select Case" option!

It's been on the "to do" list for a while...

*Conditional menu items

I like the idea, but what do people here think would be a good way to implement it? Adding an item to menu would be easy enough, but presumably you'd also want to be able to delete or hide menu items? Rename them? These would require identifying menu item elements - if numbers are used, then the numbering goes awry when things get deleted, so different menu id's could be used - but then you'd have to specify some kind of id for each menu item. When you want to add a menu item, would you want to be able to add it to the middle of a menu? How do you want to specify where in a menu it gets placed - you could say after a particular menu id, but what if that id has been deleted, or other menu items have been added after it? I'd really like to add this feature, but I can't think of a sensible design for it - any suggestions would be appreciated!

"Re: Player in current room check"
I think it would be welcome for beginner programmers. They wouldn't have the guts to go through the help file in search of Default-Quest variables/functions.

The next version of QDK has buttons which will allow you to easily enter string and numeric variables, functions and text formatting codes. The function interface will need a bit of work, but when it's done you'll be able to select from built-in functions and specify parameters just as easily as you can specify parameters in QDK for Quest's script commands. You'll also be able to select from a list of built-in string variables too. This will enable QDK users to use (I think) all of Quest's features easily without having to scour the help files. Though I still recommend everybody reads them!

Alex posted 15-12-2002 15:21 GMT          
quote:

*New directional commands: UP and DOWN.

These are already implemented in the


Slip of the keyboard there, as I remember writing the rest of that sentence but seem to have deleted it somehow. It's meant to say "These are already implemented in the next version of Quest, provisionally numbered version 3.2".

MaDbRiT posted 15-12-2002 17:26 GMT          
Of conditional menu's Alex wrote:

quote:

but I can't think of a sensible design for it - any suggestions would be appreciated!

I think that sufficient functionality could be acheived if we could code this and have it work ;-

quote:

define selection <selectionname>
info <Information about the menu>
choice <A choice> (script)
if (x=y) then choice <AnotherChoice> (script).
end define

That would allow the menu to vary according to testable conditions - I don't personally see the need for anything more complex.

Al

Computer Whizz posted 15-12-2002 18:21 GMT          
quote:
That would allow the menu to vary according to testable conditions - I don't personally see the need for anything more complex.

I agree. You don't really need anything more than a simple [IF] in there.
That would deal with hising options. Deleting isn't realy a good idea because, as you said (Alex), it would mess up the "index". Also hiding is all as good as deleting.

Computer Whizz

carlii posted 15-12-2002 23:31 GMT          
quote:
"Re: Player in current room check"
I think it would be welcome for beginner programmers. They wouldn't have the guts to go through the help file in search of Default-Quest variables/functions.

Yep! This is a BIG problem in QDK because some of us (AKA ME LOL) can't write by hand and use QDK...