Unconventional input terms

OurJud
I'd just like to put some feelers out there, to see if I'd be making a big mistake with my ideas.

We all know that a player conventionally moves around Text Adventure worlds via compass points, and I think for classic dwarf/troll/fantasy adventures this is fine. You could also argue it's the most logical way as it keeps the various directions available to the player down to a single word (and is quick to input with n, e, s, w). However, for the modern-set adventures that I like to build, I'm wondering I could go with different terminology for moving around.

I like the minimalist, classic look, and disable all the compass points, inventory box, object lists, hyperlinks, etc, and instead include all the necessary info in my descriptions. So what I'm imagine instead of the typical:

"You are in a clearing. To the north is a lake. South leads to mountains and to your east lies a hut"

Is something more like:

"You are in the lounge. There is a door to the hallway, and to your left, an archway leads to the kitchen. A conservatory lies behind you."

The input to get to these places would be 'enter hallway/kitchen/conservatory', but would that be obvious to you as a player, if you came across a game with such a description?

Silver
There's obviously problems with doing directions such as left and right as its wholly dependent on what direction someone is facing. Do they always face the same way? The reason why north, south etc persists in IF is because nobody has yet thought of anything better.

But, if you have...

Yes, you can alter those commands in Quest.

Here is a link regarding templates:

http://docs.textadventures.co.uk/quest/ ... board.html

There's probably others but you'll have to search them out yourself.

Silver
Also you don't have to have your rooms connected to each other and so can set up custom commands.

You are in the living room. You can see a door to the hallway and another to the kitchen.

Then make a command/verb called goto kitchen and in a script set that command/verb to move the player object to the kitchen.

Silver
The problem with completely doing away with compass points is that the player then struggles to identify an internal map in their mind. They can remember that that they travelled northwards to the pub and west to the shopping precinct. If you take those reference points away they might struggle with how everything lies in respect to each other.

What you are suggesting will work but only on a very small scale. And even then it might leave players disorientated.

HegemonKhan
working with player orientation (turning the direction that the player is facing) to room mapping orientation... would be quite the programming (it can be done... by Jay, Pertex, Pixie, Sgrieg, and etc other good programmers, but not us, lol).

probably the best method is using the Text Processor commands ( http://docs.textadventures.co.uk/quest/ ... essor.html ), or you could use command bar (input bar during game play) commands (not using the 'Exit' Elements to go between rooms), such as my 'explore' and 'travel' sample coding:

(though this is too advanced for you right now to do on your own, as it requires knowledge of lists and dictionaries, and other advanced stuff)

(and it's for an older version of quest, so it may not work for your current quest program, even if you change my code 'version="540" ' to 'version="550" ', as there might be scripts or other code lines that have had their syntaxes changed between versions, too. Well, you could download quest program version "540", though keep it separate from your current version quest program and folders, to play out this sample code of mine, if you want to)

<asl version="540">
<include ref="English.aslx" />
<include ref="Core.aslx" />
<game name="Testing Game Stuff">
<gameid>eef801a1-4e6b-4b0a-bdbf-8f3ecfa8389c</gameid>
<version>1.0</version>
<firstpublished>2013</firstpublished>
<turns type="int">0</turns>
<statusattributes type="simplestringdictionary">turns=</statusattributes>
<start type="script">
msg ("Important Note:")
msg ("Type in: help")
</start>
</game>
<object name="homeland">
<inherit name="editor_room" />
<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>
</object>
<object name="grassland">
<inherit name="editor_room" />
</object>
<object name="plains">
<inherit name="editor_room" />
</object>
<object name="desert">
<inherit name="editor_room" />
</object>
<object name="tundra">
<inherit name="editor_room" />
</object>
<object name="swampland">
<inherit name="editor_room" />
</object>
<object name="mountains">
<inherit name="editor_room" />
</object>
<object name="forest">
<inherit name="editor_room" />
</object>
<object name="wasteland">
<inherit name="editor_room" />
</object>
<object name="coastland">
<inherit name="editor_room" />
</object>
<object name="hills">
<inherit name="editor_room" />
</object>
<command name="help_command">
<pattern>help</pattern>
<script>
help_function
</script>
</command>
<command name="explore_command">
<pattern>explore</pattern>
<script>
explore_function
</script>
</command>
<command name="travel_command">
<pattern>travel</pattern>
<script>
travel_function
</script>
</command>
<object name="data_object">
<inherit name="editor_object" />
<travel_string_list type="simplestringlist">homeland</travel_string_list>
<homeland_events_string_list type="simplestringlist">grassland_discovery;plains_discovery;desert_discovery;tundra_discovery;swampland_discovery;forest_discovery;mountains_discovery;hills_discovery;wasteland_discovery;coastland_discovery</homeland_events_string_list>
<homeland_events_script_dictionary type="scriptdictionary">
<item key="grassland_discovery">
list add (data_object.travel_string_list, "grassland")
msg ("You've discovered the grassland! Now, you can travel to the grassland and explore it!")
</item>
<item key="plains_discovery">
list add (data_object.travel_string_list, "plains")
msg ("You've discovered the plains! Now, you can travel to the plains and explore it!")
</item>
<item key="desert_discovery">
list add (data_object.travel_string_list, "desert")
msg ("You've discovered the desert! Now, you can travel to the desert and explore it!")
</item>
<item key="tundra_discovery">
list add (data_object.travel_string_list, "tundra")
msg ("You've discovered the tundra! Now, you can travel to the tundra and explore it!")
</item>
<item key="swampland_discovery">
list add (data_object.travel_string_list, "swampland")
msg ("You've discovered the swampland! Now, you can travel to the swampland and explore it!")
</item>
<item key="forest_discovery">
list add (data_object.travel_string_list, "forest")
msg ("You've discovered the forest! Now, you can travel to the forest and explore it!")
</item>
<item key="mountains_discovery">
list add (data_object.travel_string_list, "mountains")
msg ("You've discovered the mountains! Now, you can travel to the mountains and explore it!")
</item>
<item key="hills_discovery">
list add (data_object.travel_string_list, "hills")
msg ("You've discovered the hills! Now, you can travel to the hills and explore it!")
</item>
<item key="wasteland_discovery">
list add (data_object.travel_string_list, "wasteland")
msg ("You've discovered the wasteland! Now, you can travel to the wasteland and explore it!")
</item>
<item key="coastland_discovery">
list add (data_object.travel_string_list, "coastland")
msg ("You've discovered the coastland! Now, you can travel to the coastland and explore it!")
</item>
</homeland_events_script_dictionary>
</object>
<turnscript name="global_turnscript">
<enabled />
<script>
game.turns = game.turns + 1
</script>
</turnscript>
<function name="help_function">
msg ("Type 'explore' to explore your area.")
msg ("Type 'travel' to travel to different areas.")
</function>
<function name="explore_function"><![CDATA[
switch (game.pov.parent) {
case (homeland) {
result_1 = ListCount (data_object.homeland_events_string_list) - 1
if (result_1 >= 0) {
result_2 = StringListItem (data_object.homeland_events_string_list,GetRandomInt(0,result_1))
invoke (ScriptDictionaryItem (data_object.homeland_events_script_dictionary,result_2))
on ready {
foreach (item_x, split ("grassland_discovery;plains_discovery;desert_discovery;tundra_discovery;swampland_discovery;forest_discovery;mountains_discovery;hills_discovery;wasteland_discovery;coastland_discovery",";")) {
if (result_2 = item_x) {
list remove (data_object.homeland_events_string_list, result_2)
}
}
}
} else {
msg ("There seemingly is nothing left to explore in this area.")
}
}
}
]]></function>
<function name="travel_function">
show menu ("Where do you wish to travel?",data_object.travel_string_list,false) {
if (not game.pov.parent = GetObject (result)) {
game.pov.parent = GetObject (result)
} else {
msg ("You are already at this area.")
ask ("Try again?") {
if (result=true) {
travel_function
} else {
msg ("You realize that you need to discover a new area to travel to first, before you can travel to that place.")
}
}
}
}
</function>
</asl>


--------------------------

also, this link is really useful:

http://docs.textadventures.co.uk/quest/guides/
http://docs.textadventures.co.uk/quest/ ... board.html (this deals with renaming the compass directions)

(scroll down, as there's another bottom section of guides too)

OurJud
Mmm, I was forgetting that the conventional compass points were default, and that I'd tell the system I wanted to use 'enter kitchen' instead of 'north'.

I suppose the compass points are only relevant when the scale of things grow.

If I had the description:

"You are in the lounge. There is a door to the hallway, and to your left, an archway leads to the kitchen. A conservatory lies behind you."

would the system understand the input "enter kitchen", or would I have to tell the system what that command meant with scripts and such?

Oops, I see on reading again that Silver has answered this.

So in a nutshell, if I use the normal N E S W navigation, the sytem will do it all for me. If I want to start using 'enter kitchen', I'd have to create the command my scripting it?

jaynabonne
When you create exits, you can go back later and give them aliases instead of the compass directions. For example "kitchen", "living room", etc. Then you can say "go kitchen", etc. to navigate. Silver has a good point, though. "Blue Lacuna" has non-compass directions (go beach, etc), and a common complaint its author, Aaron Reed, heard was that people had trouble orienting themselves. They could navigate eventually, but they felt lost having no notion of which direction they were actually going. That's not to say you can't do it. It's just something to keep in mind.

jaynabonne

would the system understand the input "enter kitchen", or would I have to tell the system what that command meant with scripts and such?



Out of the box, Quest doesn't support "enter" for directions. It uses "go" or "go to" instead. You could modify the pattern for the "go" verb to include "enter" as well (but be prepared that it will apply everywhere - like "enter outside", etc).

OurJud
So do these aliases mean I don't have to script anything?

So room1 leads to room2 by going north - and vice versa, yes? So then I give north the alias of 'kitchen' and south the alias of 'lounge'? This would then mean the game understands 'go to kitchen'?

jaynabonne
To add "enter", do this:
1) In the bottom left, click "Filter" and then choose "Show Library Elements". This will make all the internal elements show up.
2) Under "Commands", find the "go" command.
3) Select it. A button will appear in the top right (next to a yellow bar) that says "Copy". Click the Copy button. This will copy the command into your game so you can modify it.
4) Change the pattern to (all one line):

^enter (?<exit>.*)$|^go to (?<exit>.*)$|^go (?<exit>.*)$|^(?<exit>north|east|south|west|northeast|northwest|southeast|southwest|in|out|up|down|n|e|s|w|ne|nw|se|sw|o|u|d)$

jaynabonne
OurJud wrote:So do these aliases mean I don't have to script anything?

So room1 leads to room2 by going north - and vice versa, yes? So then I give north the alias of 'kitchen' and south the alias of 'lounge'? This would then mean the game understands 'go to kitchen'?


Yep! Try it out. :)

OurJud
I think in actual fact, it's not what the player enters to move around that matters to me. It's that I want to avoid using compass points in my description. Trouble is, explaining to the player than North takes them to the kitchen, without actually saying so,

OurJud
Thanks, JB. If I do this, will players still be able to use proper English, such as 'enter kitchen' but also use 'go outside'?

jaynabonne
It will support both, yes. (Well, all three - go, go to and enter.)

OurJud
Yay! It understands go to...

but not 'Enter'. I think I got lost in your instructions for the library thing. Am I supposed to be entering that code somewhere, because you don't say so?

Do I put it in that field before I hot 'copy'? Also, where is the "Change the pattern to (all one line)" option?

OurJud
Done it!

jaynabonne
You need to copy the command first. Otherwise, you can't edit it. (It's read-only.) Once you hit copy, it will appear at the bottom of the command list, and it will no longer be grayed out.

go edit.png


You enter the pattern where I show in the picture. I said "all on one line" because the forum forced it onto two lines when I pasted it. But it needs to all go in that edit field beneath where it says "Regular Expression".

I would recommend saving your game to a backup file before you do these sorts of changes, just in case.

(I'm off to bed, so I'll be unresponsive for 7 hours or so. :) )

OurJud
Thanks, Jay. You must have missed it, but I did post that I'd done it before you posted these instructions. Thanks anyway. Navigation in my game can now be done with 'N E S W', 'go','go to', and 'enter' :)

I think I must be unique in this, but I think I would actually find getting around in a game easier if I could use room names instead of compass direction.

If I'm in a room (lounge) and told there are doors leading to the kitchen, hallway and conservatory, it makes far more sense to me, to say 'Go to kitchen'. And then when in kitchen, 'Go to lounge', rather than having to remember that I came north, so must go south to get back to where I was.

It could get tricky in the larger areas, such as town or villages, but if I can get the descriptions right, I think I could pull it off. I suppose I'll only know if and when I get any feedback on the finished game. If people are saying it's too difficult without compass points, then I'll know for next time.

george
Using non-compass directions isn't the norm in IF but it's common in other text games such as Mushes and MOOs. So it's not really anything inherent in the medium. I think if your game is clear about it you can make it work. Also providing a graphical map, even something like an image a player can access with a > map command, helps.

OurJud
I very much like the map idea :D

What are Mushes and MOOs ?

george
Multiplayer text games, usually RPGs. Basically before there were MMOs, there were muds, mushes, and moos (and many variations thereof). They're still around. Google and ye shall find.

Silver
Emily Short has written an interesting article on game geography. Although I don't think it deals specifically with what you are doing it is food for thought when planning out a game.
http://emshort.wordpress.com/how-to-pla ... geography/

This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums