There are better features in Inform (I don't know Tads and others), while others are better in Quest. By better I mean "easier to program".
Things I find easier / better in Inform :
- I find it's more flexible to be able to create objects aside of rooms, while for Quest you must put them in one room from the beginning (you can have objects wherever in the code, and group objects by use of them.
- The classes in Inform are usefull.
- the use of "self" instead of object ex :
Talk: self.times_spoken_to = self.times_spoken_to + 1;
(easier to re-use the code)
also some pre built commands such as "hasnt visited", so you don't need to configure flags to do the same effect in Quest.
Room street "A street in Altdorf"
with description [;
print "The narrow street runs north towards the town square.
Local folk are pouring into the town through the gate to the
south, shouting greetings, offering produce for sale,
exchanging news, enquiring with exaggerated disbelief about
the prices of the goods displayed by merchants whose stalls
make progress even more difficult.^";
if (self hasnt visited)
print "^~Stay close to me, son,~ you say,
~or you'll get lost among all these people.~^";
],
n_to below_square,
s_to
"The crowd, pressing north towards the square,
makes that impossible.";
- Creation of new verbs, and especially the use of them inside the game :
Verb 'fire' 'shoot' 'aim'
* -> FireAt
* noun -> FireAt
* 'at' noun -> FireAt
* 'at' noun 'with' noun -> FireAt
* noun 'with' noun -> FireAt
* noun 'at' noun -> FireAt reverse;
so "FireAt" can be used with an object to "lauch" this command :
Prop "Gessler's soldiers"
with name 'soldier' 'soldiers',
description "They're uncouth violent men, not from around here.",
before [;
FireAt: print_ret "You're outnumbered many times.";
Talk: print_ret "Such scum are beneath your contempt.";
],
found_in south_square mid_square north_square marketplace,
has animate pluralname proper;
- multiple parenthesis for disambiguity :
if ( Claudine in Location && i<1 && (habits_urbains has worn || habits_campagne has worn ))
etc...
- it's easier to debug in Inform, ( in spite of some good features in Quest on the other hand, like the variable windows etc.)
for ex. it's possible to go directly to a place with the debug in Inform, to grab some objects out of sight etc.
- Some good interpreters for inform, like WinFrotz, are only 175 ko or less <-> 2 Mb for Quest because of VB. So it's easier to distribe a game with interpreter that fit on a floppy
On the contrary, I like much the compass and object lists in Quest, 1st I liked it less, but now I think it's very conveniant.
In Quest :
- to modify properties during the game. Probably it's as simple in Inform, but so far I hadn't used the feature.
- the ability to clone objects. It's very good, and I wouldn't know how to do it with Inform (it's probably possible too)
ex :
define procedure <chop_branch>
if exists <branch> then clone <branch; new branch; sans_issue2>
msg <You cut some parts of the tree>
reveal <branch>
show <branch>
flag on <sap_flow>
end define
- on the opposite to Inform / Glulx, it's very easy to include sounds and images. More formats are also supported.
I won't make more comparison, I think I like both system all in all.
Inform seems more "powerfull" because it's closer to a language such a C, and it's also possible to really program with it, for ex I wanted to solve a problem I had, it's for finding how many soldiers they are in an army, when we know that they must be in equal rows, and some others soldiers are arriving late and they must be added to the rows, and those must remain equal etc.
I solved it easily with this in Inform :
[ CalculerSub x ;
for (x=1: x<=50000: x++)
if (x%3==0 && (x+1)%5==0 && (x+2)%7==0 && (x+3)%9==0 && (x+4)%11==0)
{print x ; print " ^";};
];
It's not a hard critic, as I said before I think most critics against Quest from some users of rec.arts.in-fiction are not fair at all. I just think they believe the language in itself it's not as powerfull as it is in reality, and they also don't like it's not open source as other languages (and then easily portable).
So far the thing I dislike the most in Quest, when I'm designing my game, is to think it's limited to MSWindows. I hope to change O/S in the future, and I prefer to have a 'portable' game. And it's not the supposed limitations because I can design it almost as I wish, except I can't configure the colours of display in the sources and I can't include images in the text windows.
You could read if you want an overview of some of Inform's possibilities and way of programming, to read this guide :
Inform Beginner's Guide
http://www.firthworks.com/roger/IBG.htmland study also the game tell.inf
I don't want to preach against Quest of course, but it could give some ideas for improving Quest. I wrote about this before, but I think if it was multi plateform and with some more built-in verbs by default, other if coders may consider Quest with better eyes. Thanks to the wonderful library made by MaDbRiT the system is much improved, but if only 50% of people coding new libraries for Inform would help on Quest too, it'd increase much its popularity and quality. But remember, most good IF coders are on Linux...
Two last remarks :
- I tried to look at the code of Cloak of Darkness for Quest at
http://www.firthworks.com/roger/cloak/index.html Unfortunately it's now obsolete and can't be edited in the QDK. I don't find the courage or the hability to recode it myself.
- an interesting option in QDK would be to display in the boxe the normal ASL code of the game, instead of a simplified one, so one could get inspiration to code by hand more easily (instead of having to create a temp file from QDK, open it in text editor, copy the code to the ASL source etc.)