Call for suggestions: commands/abilities

8 messages Options
Embed this post
Permalink
Cordilow

Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
(This post was updated on )
What do you want to be able to do in a text adventure? What kind of commands would you like to see in addition to the standard ones? What are some features you would like to see?

I'm making a set of object-oriented text adventure modules for Python, and I'm looking to make it as satisfying as is possible, given the time I have to work on them.

I still need to work out some of the extended basic functionality. I'm adding some of the flexibility standard to MUDs to these—so they should be more than traditional text adventures. I mean, such as typing "get 2.potion" will get the second potion listed, rather than the first. I want to make it so multiple items of the same name will be listed under one heading. That way, if you have forty of the same item, it won't list it forty times. It'll just say "item (40)" instead. Everything is an object—so everything should be able to be referenced.

Anyway, please let me know.

I've heard requests for such things as snow (and perhaps various commands for dealing with it) and the ability to dig. Objects can already be made into portals to other rooms or to whatever rooms certain objects are in. The mapping system is done, pretty much, except that I want to extend it so that outside areas have skies (usable by flying and sometimes by falling characters). The lock and key system is complete, as well as the door system. I still need to finish adding functionality for under/on/behind things in certain functions (i.e. give, look, put, etc.), but it's already functional with get (you won't believe how much code goes into getting things flexibly). I still need to make "get all.item" functional (that means you get everything that matches the string you type; for instance, typing "get all.frog" will attempt to get anything with the string "frog" in its name).

I have a grouping system where any object can be added to a group. This is how most boolean attributes work. For instance, something is closed if it is in the closed group. You can pass through doors without opening them if you are in the passDoor group. Objects don't have the groups, but the groups have the objects (that way there is a lot less overhead, since the groups are only created once).

Anyway, there are some things that aren't terribly efficient about how I've coded things, but all in all, it should still be fine (and this can be fixed later, if need be).

One problem I'm having, though, is that the python modules I'm using can't just be imported into an empty python file where you can code everything from there. It uses a GUI—so, if you import the GUI, it will be running before whatever you type. That means the code after it won't ever execute. Also, since it's object-oriented the story will probably have to progress by using some method such as checking for certain conditions every time a certain command is typed. This is a little different than you might expect in a non-object oriented program.

So there will be two files the text adventure maker will have to deal with. 1. The map-building file (where you create rooms, items, people, etc.). 2. The file containing the functions that are executed for each command typed (this is where you make it so that when the user does a certain thing, then a certain thing will happen).

I plan to make at least two separate GUIs functional with these modules. One is with WxPython and the other is with Ren'Py. The Ren'Py one should be nicer and more functional, but the WxPython one should initially load a lot faster.
bloodstone

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
Hi.  My first thought was "Huh?"  I know I'm not the most technolocicaly advanced, but I would apriciate a bit more input on what you're talking about.  The way you discribed some things sounds almost like a quest game, but I don't think that was the point.  Please explain this a little more.
Cordilow

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
Text adventures are text-based games. There are no graphics. You see words on the screen and you type stuff to do. You don't use the mouse at all, either.

Typically, in a text adventure, you see a description of the room you're in and a list of whatever is in the room. You can type in stuff for your character to do. For instance, typing n or north will make your character attempt to go north (you can also type 'go north'). Typically, you have to figure stuff out to progress in the game.

Does that make sense? Anyway, here's a list of some typical commands:
get
take
give
put
look
kill
eat
drink
push
turn
open
close
unlock
lock
inventory (or i or inv: this lists your belongings)
save
load
quit
move
examine
search

Examples of usage:
• look under bed
• push chair to fireplace
• eat bread
• drink flask (drinks the contents of the flask)
• kill monster (traditional games require you to specify a weapon while such as MUDs use whatever you are equipping)
• unlock box with brown key

Typical directions include the following: n, s, e, w, u, d, ne, se, sw, nw, although in mine I've added more for the sake of accurate documentation of real places, and objects can also be directions—for instance, a closet may be an object you can enter.

Text adventures can look simple at first glance, and although some of them are pretty simple, others can be quite complex.

If you're still confused, you can look at this Youtube video of someone playing Zork I.
bloodstone

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
Okay.  I think I've got the basic idea.  It is like a quest game only there aren't any graphic, you have to use your imagination.  Right?  Sort of like a pick-a-path book you can't cheat at.  thank-you for the clarification.  I'm still left with"why?" but to each there own.  i'm sorry this wasn't exactly the feed-back you were looking for, but thanks any way.
Dolphinia

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
In reply to this post by Cordilow
I have only ever played one game like this and to be honest I can't remember the name. It was fun I just didn't get the chance to play more than the one time we were moving around a lot back then and it was pre-wi-fi. Anyway I always wondered and maybe it's just a lack of experience but how come they never offered the option of riding on things. You know instead of go.north you can type gohorse.north so you get on a horse getting there faster than the guy without a horse.  Just curious. D.
Cordilow

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
Ah, that's a good idea! I would probably set the standard syntax as something like this:
mount horse
dismount horse

But I'd add alternatives, such as these:
get on horse
go on horse
climb horse

And then let the user navigate normally after having typed that. Or, it could be more complex, but that's probably what I would start with.
Cordilow

Call for suggestions: commands/abilities [update]

Reply Threaded More More options
Print post
Permalink
In reply to this post by Cordilow
I've put the Python version on hold.

I decided to start over with a different framework, to make it better in the end, and I decided to switch to Lua and/or Vala instead of Python. This should make certain things a lot easier, and it will make the resulting code faster.

The Python code is still there, though.

Lua has a few issues, though (such as it's not as intuitive and feature-rich as Python, except in certain regards where it surpasses it), but hopefully I can work around those. I might end up maintaining both Python and Lua versions, in the end. Also, I think Python is faster for checking if a certain value is in a data structure (though I think Lua is faster in every other regard).

The main reason for the switch is that my code had to go through tons of processor-intensive loops every turn when I allowed NPCs to move about at random—this made it slow if I added more than a few roaming NPCs. Now, I could just redesign the algorithm, somehow, and I probably will some day, but going with a faster language also seems needful when I want the games to be more intricate.
Cordilow

Re: Call for suggestions: commands/abilities

Reply Threaded More More options
Print post
Permalink
In reply to this post by bloodstone
bloodstone wrote:
Okay.  I think I've got the basic idea.  It is like a quest game only there aren't any graphic, you have to use your imagination.  Right?  Sort of like a pick-a-path book you can't cheat at.  thank-you for the clarification.  I'm still left with"why?" but to each there own.  i'm sorry this wasn't exactly the feed-back you were looking for, but thanks any way.
Well, I wouldn't exactly say they're like books at all. The only real similarity is that you read them. They're more like regular video games, only you read everything that happens and type everything you do. Typically, the writing involved pertains to descriptions. You can do story segments, but it's not too common and it can confuse or irritate people who don't bother to read longer descriptions (it's not always necessary), seeing as they might not be in the mood to read that either, however important it is.

Visual novels (not graphic novels—there is a huge difference), on the other hand, are very much like books, and often choose your own adventure stories. You can still cheat, though, but in different ways.

I'm actually making these text adventure modules compatible with the Ren'Py visual novel engine—so you can have text adventures with background art, character art, music, sound effects, transitions, menus, etc. Anyway, this makes them more like regular games, although you still control everything by typing (which, in my view, is often superior, seeing as what you can do this way is pretty vast). Plus, the visual aspects should make inserting story segments much nicer, more convenient and visually appealing.

Currently, only the Python version will work with Ren'Py, although I know a way to make Lua script available (but it's not as stable as I'd like for some things, and it's not as cross-platform).