I've also started using ADRIFT over the past few weeks and that has built in commands for standing, sitting and lying on objects, turning objects on and off, closing and opening objects, locking objects, using an object as a shield or weapon in a battle engine, as well as commands that exist in MaDbRiT's TypeLib, like reading an object and using an object as a container. Plus it has a character implementation so that objects are separate from characters.
If Alex could implement some of these features in Quest, or MaDbRiT could write a library for some of these commands, I think a lot more Quest games will appear a lot sooner rather than later.
I think one of the main failings with Quest right now is its, for want of a better word, fiddlyness.
Adding custom commands is one of the things that every game needs because the commands that are covered are, frankly, not up to much. Yet rather than a simple one-click to add a custom command, I need to click on Game -> Properties -> Global Settings -> Edit Custom Player Commands -> Add and then finally I can enter the command I want. Wouldn't it be easier to just have an icon in the main QDK interface that I could click on to add a command? It would certainly save time. The way things are now, adding custom commands is such a tedious and long drawn out process that most people don't seem to bother.
It's also very fiddly adding items and there seem to be one hell of a lot of unnecessary options here: prefix, suffix, detail, display type, not to mention the strange idea of lumping in characters and objects together. This way, every time I add a character to a game I have a make a point of making them "not takeable" or have it possible for the player to pick them up and carry them around as if they were normal objects. It might be a better idea to separate the two: have one area for objects and another for characters.
I also think Quest needs to recognise a few more basic commands. When I wrote a game I was surprised to find the program didn't understand the "wear" command, one of the most commonly used commands in text adventures since the dawn of computers! I suppose I could create a custom one but, really, shouldn't Quest cover at least the basic commands and not leave the poor writer with the forbidding task of creating every command they're going to need in a game?
The way Quest is now, it has potential but its GUI isn't a patch on Adrift's and nor is it anywhere near as straightforward and easy to use. And if you're just going to hand code everything, it lacks the power of either Tads or Inform, which has pretty much left it behind in the text adventure market. Games might be getting written for it, but as they're all pretty much drivel that's no big deal.
EDIT: another thing that really bugs me although no one else seems to have mentioned it so maybe it's just me. Too many pop up windows! Seriously, you edit a command and have to click your way through a dozen or more windows to get to the bit you want to change and then close down every one of the windows. Is there any need for so many windows? Why not just have one?
I need to click on Game -> Properties -> Global Settings -> Edit Custom Player Commands -> Add and then finally
command <take all> msg <You can't take all.>
command <x self; look myself; x myself; examine myself; examine self> msg <You are yourself, it's already much, few people could claim the same.>
command <hints> displaytext <hints>
command <walkthrough; solution> displaytext <walkthrough>
command <dirs> {
if not ( #quest.doorways.out# = ) then msg <You can go out to #quest.doorways.out#.>
if not ( #quest.doorways.dirs# = ) then msg <You can go #quest.doorways.dirs#.>
if not ( #quest.doorways.places# = ) then msg <You can go to #quest.doorways.places#.>
}
command <objects> {
if not ( #quest.objects# = ) then msg <You can see in your surroundings :|n#quest.formatobjects#.|n>
}
command <give #@thing# to #@destinataire#> {
if ( #destinataire# = Livolas ) then {
msg <Livolas thanks you for the #@thing#.>
lose <#@thing#>
hide <#@thing#>
} else <This person doesn't want this item now.>
}
command <put #@thing# in #@container#> {
if property <#container#; container> then msg <You put #quest.error.gender# #thing# in #container#> else msg <You can't put #quest.error.gender# #thing# in this.>
command <blow in #@objects#> msg <Blowing in this doesn't make any interesting sound.>
command <borrow #@objects# from #@actor#> msg <You can't achieve it this way.>
command <buy #@object#> msg <#quest.error.article# is not for sale>
command <bring>
command <cancel>
command <cast>
command <carve, dig, pick>
command <change>
command <clean>
command <climb>
command <close>
command <comb>
command <complain> msg <Don't complain all the time !>
command <cook> msg <Maybe it's not time to cook now ?>
command <cough> msg <Reuf, reuf>
command <count>
command <commit suicide> playerlose
command <cry> msg <You don't need to do that now. Crying can't be made on command.>
command <cut #@quest.objects#> {
if property <#quest.objects#; breakable> then {
msg <You torn #quest.error.gender# #quest.objects# to pieces, and nothing usefull remains.>
conceal <#quest.objects#>
}
}
command <change #@quest.objects#> msg <Change what ?>
command <crawl>
command <dance> msg <You dance a bit for your own pleasure>
command <desire>
command <detach>
command <dive>
command <dig>
command <draw>
command <dream>
command <drive>
command <drink #@quest.objects#> {
if property <#quest.objects#; drinkable> then {
msg <You drink #quest.error.gender# #quest.objects#>
conceal <#quest.objects#>
}
else msg <#quest.error.gender# #quest.objects# doesn't seem good to drink, you should forget this.>
}
command <eat #@quest.objects#> {
if property <#quest.objects#; edible> then {
msg <You eat #quest.error.gender# #quest.objects#>
conceal <#quest.objects#>
}
else {
msg <#quest.error.gender# #quest.objects# doesn't appear appetizing, you shouldn't do this.>
}
}
007bond wrote:Another big problem is the fact that a lot of people don't like to hand-code, because it's sort of like programming. Meaning that most people DON'T find it easy to add new properties and commands in a text editor
Expert coders probably don't need libraries at all, so I think the priority with libraries should be that they be as easy to use from QDK as possible.
Quest is about the only IF Creator that lets you edit the code straight from a text editor
I think they DO need libraries, because even if they are "expert coders", they probably don't want to spend their time coding basic things.
How about different libs for different object groups? A lib for living/biologic objects would include coding for properties of living things (alive, hungry, sleepy, size, weight, other stuff). A lib for scenery (trees, lakes, rivers) that are interacted with but you generally can't take them with you. If I define an object now like a lake, it shows up in the list of objects. I would rather have it there, but not have to take it to get a drink.
That's a good point about overriding the built-in behavior. I noticed that in the integration of your lib with the Quest environment there was considerable contention between the two.
Would it be worth asking Alex to consider offering an override feature to the built-ins that would allow them to be replaced?
Hmm, maybe that's THE answer, making everything into objects with properties
typelib_2? I don't think I've seen it, have I???
"Fred, put the widget in the fridge"
"Ask Fred to examine the suspect parcel"
"Fred, take off the Tutu"
>Ask Fred about the car
"Sorry, I know nothing about that"
>Ask Sue about the car
"It's mine, a Porsche 911 - it's nice isn't it."
>Tell Fred about the car
You tell Fred all you know.
>Ask Fred about the car
"It belongs to Sue, I'm told its a Porsche"
>ask Fred about Sue
"She's a nice girl, bit of a speed freak I'm told."
>ask Sue about herself
"I'm a librarian, but I do have a thing about sports cars".