2015-02-11 17:20:08

I use pure basic. it seems a good language, and the death match series has prooven it fully capable of making audio games, despite the fact that it's not an Object Oriented Programing Language.

now. I have a question. Would a language like this be suitable for coding a text adventure? or any programming language, for that matter? Or do I have to use one of those languages like adrift or inform to create it.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-11 18:47:12

I would think a text adventure could be built using any programming language.  Personally, since you are already comfortable with Pure basic, I recommend just using that to make your text adventure.

When I need to divide large numbers by each other, and no calculator is handy, I scribble out long division.  That is what I was taught growing up, and other people of different locations or age groups may have been taught something different.  Two alternate processes called double division and the partial quotient method are also designed to give you the result of dividing 2 numbers.  There is no actual "right" or "wrong" choice when picking one of these methods, because they are just that... methods.  These are just different ways you can lay out your problem and organize the logic as you work through the problem.

In the same way, Object oriented programming is just one (of several) ways to help you organize the logic of your project.  The Object oriented programming approach is popular, just as long division is currently the most popular (I believe), but this is not because either is necessarily the "best".  So in short, never look down on your chosen language (Pure basic) because it is not object oriented in nature.  It does not make it any less capable as a programming tool.  smile

- Aprone
Please try out my games and programs:
Aprone's software

2015-02-11 22:31:54

That said, something like Inform 7 gives you a *lot* of free stuff.  They usually implement rooms and objects for you, a capable parser that can accommodate much more natural language, etc.  You can certainly do it in Purebasic, but you will also have to implement the framework: how do players move, exactly?  Whereas something aimed at IF development gives you all that for free, and you can focus on the art and not the details.  I know that the inform 7 tutorials are very, very well-done, but the inform 7 IDE can be somewhat annoying.  It's up to you, and I think it depends on if you're at the point in programming where learning a new language is faster than implementing 3000 lines of code or so to do stuff.  Eventually, new languages take an hour or two, not a week or two; that said, in this case and somewhat ironically, Inform 7 specifically can be hard on veteran programmers whereas new programmers tend to like it a lot.

My Blog
Twitter: @ajhicks1992

2015-02-12 01:30:11 (edited by The Dwarfer 2015-02-12 01:32:21)

Since I got the attention of experienced programmers, can you tell me how I might go about setting up my map?

as for movement, don't worry, I think I know how I'd set that one up.
But for the map, would I need to create a structure for maps, to create it?
how might I set it so that it plays a description for a square when you step on it? for example you head north from the back wall and it reads, "standing before a stone door."
I set it up to do this, unfortunately when I tried to open the door, though the door opened, it repeated the description of the square. my theory is that because it's in my repeat loop to check if you're on that square, it's constantly executing that, so when I open the door it knows that my y position is still 1 so it says the description.

So yeah. how would I set up my map, and how would I determine descriptions for each position? Do I need an array for all positions on the map? do I need multi dimentional map because it's x and y?
Or, should I have to make a map structure, would I have to define some random descriptions, so that each time I moved on the map, it would play one of them? And if there was an object nearby, or a wall nearby, it would say something like "door to the east" or "wall to the south?"
don't worry. you don't have to tell me how to make it determine if an object is near, because I know how I'd do that. Just how to set up the map.
@camlorn oh lol, I hope I don't have to use 3000 lines to set up a map in pb(:D). if I have to do that I'll go to inform7. but if you have inform7, don't you need to make the user install external programs, and can they see your code?
Thanks a bunch,
Steven

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 03:11:03 (edited by camlorn 2015-02-12 03:11:50)

Setting up the map is the easier part, in my opinion.  The scary part is the parser: you won't come close to things like Inform 7, you will have difficulty figuring out how to do custom one-room-only commands, etc.
The map itself is an easier thing, though it is worth noting that Purebasic will possibly make properly freeing it difficult.  This is not an issue as you are not allocating and freeing maps all day long, and there's literally no reason that it can't just b in ram; nevertheless, this is one of the reasons I do not like the language (it's also a reason why i don't like C or C++).  The simplest way is to probably make a room struct that contains pointers for all the possible directions you wish to support, a function that takes a direction string and a struct and returns a pointer to the room in that direction or null, and a set of commands that allow movement in those directions.  You would probably end up abstracting the command itself into another function: the movement command need not know specifically which direction, so long as it has its name, and so you can cut down the code specifically dealing with it by a factor of 8.  The code to display the room description belongs in a look function which is called both by the look command and the movement command; the latter, of course, only calling it on success.
You haven't even thought about inventories yet.  Or the fact that one room specifically is on a ship, and how nice it would be to be able to have fore and aft instead of north and south.  Or how you're going to handle the probably hundreds of special cases that come up in an IF title.  I think it is possible to code an interactive fiction title in a general-purpose language and it may make a good learning project, but if the only goal is the finished game and not furthering yourself as a programmer, you're going to end up duplicating at least 75% of what one of the if-specific systems is giving you out of the box, and you're going to have a lesser set of features.  Something like inform 7 gives you inventories and exits and all that and then keeps going, well beyond the features you have thought of needing at this time.  The one thing they're not very good at is stats and mud-like combat systems, but if you're thinking of doing something with stats and mud-like combat systems, you might as well learn C and set up a mud codebase.  If you know Purebasic, you're so close to C it's scary.
As for special software and seeing your code, yes to the first and no to the second.  Most of us who play interactive fiction already have that software; it is by no means hard to get going these days, and ironically enough I believe the Braillenote also has it (it did at one point, it's how I first played curses).  Glulx and the various z-code versions are what your game gets distributed as, and these do not contain your code in a format that is easily decompilable.  Unless you are making a commercial title, though, there is literally no reason for you to care-if someone has fun decompiling the game and reverse engineering it, that's still fun with the game and it still gave value to someone who might have otherwise not bothered.
Your mileage may vary with Inform 7, but it's how a number of the authors in the actual community do it.  For example, Counterfeit Monkey by Emily Short, which was actually quite fun; she's won a number of awards for her titles as I recall.  The problem with Inform 7 is the IDE; it works fine with Jaws, should work fine with NVDA now that they fixed a word wrap issue, but is still more annoying than the command line IMHO.  You can't use the command line with I7, but if I did an IF title I'd still use it.  It's the closest thing to art I have ever seen or heard of in programming--the entire thing reads like a description of an environment and not like a program.  For example (off the top of my head, but I'd be willing to bet quite a lot that this is perfectly valid, and if it's not the compiler is actually probably going to suggest how to fix it):
A box is a kind of thing.  Boxes can be rounded or square.  Boxes are usually square.  The red box is a box.  The red box is in the living room.  The red box is rounded.
Here's an actual library, specifically for handling liquids.  Read it and see if Inform 7 is something you want.  Be sure to go far enough to see what actual I7 logic looks like, as the first bit is just telling you about what liquids and their containers can be.  That's probably the best way to make a decision; their tutorial basically starts with examples, continues with examples, and ends with examples.
The only stumbling point with the setup is that you will need to configure it to run your game in the IF interpreter of your choice.  I did manage to do this, but haven't touched inform 7 in a very, very long time.  The built-in one is not so nice if you're blind, not unless someone wrote an add-on.
Which avenue you take is up to you and it depends on what you're trying to get out of the project.  Also, be aware that Inform 7 is not the only thing like Inform 7 out there.  It's just the one I'm familiar with.

My Blog
Twitter: @ajhicks1992

2015-02-12 05:00:56

For parser: yeah I was leaning towards creating a check input function that will be constantly called in the repeating loops of the game. If there is specific commands for a certain room, it can check if you are in that room, and only execute the command if you're there.
inventory:
this could be possible--an array and a few procedures would make that a duable feet, though there's likely to be a few bugs that will be harder to find and take some time to combat. but to get an item from the inventory, you could do something like this:
for I = 0 to arraysize(inventory()) -1
if textstring = "get "+inventory(I)\name)
;run through the inventory. see if the word or phraise after the word "get" matches any of your items in your inventory
inventory(I)\using = 1
;if this is a weapon, when fighting it will always run through the inventory like we're doing in this for loop here. if it finds a weapon that you're using, it'll fight with that. I'm also aware of the fact, that you may be using multiple objects(say you're holding a light or something), so there will be a type variable, and the only way you'd get to fight with the item that had using set to 1 was if the type = "weapon" or something.
;here's an example, in an optional if statement that might alter the text displayed, by checking if it's a weapon or not.
if inventory(I)\type = "weapon"
print("you wield a "+inventory(I)\name)
else
print("you start using a "+inventory(I)\name)
endif
;now, we display an error if you try to get an item that you don't have.
else
print("you don't have that item in your inventory.")
endif
next
none of that code has been actually tested, but with my knolege of pb I'm pretty sure it's possible, but if it were to possess bugs I wouldn't be surprised--that's how code is. it doesn't always work how you want it to.
well thanks for your help Cam. I'm learning.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 05:11:40

Camlorn does bring up a very good point, and it's one I hadn't properly considered before making my earlier post.  I'm not used to using pre-made tools for these sorts of things, so I tend to forget about how much time and effort they can save.  If Inform 7 happens to have all of the features you're game is going to need, then it is worth checking out.

- Aprone
Please try out my games and programs:
Aprone's software

2015-02-12 05:57:14

as good as it is, my game will contain fighting. so I'm ok with taking extra time that could be saved--it's the same principal as bgt compared to a regular general purpose language.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 06:17:23

Consider the following illustrative example.  It is a common enough situation and illustrates why things you aren't realizing are complicated actually are.  I'm going to walk through this at a high level.  I'm not telling you that it's time for a tool: if you are using this to learn a programming language, you will certainly come out the other side knowing it well.  That may be your goal, and a project like this will touch on just about everything except trigonometry and physics simulation.  3000 lines is what I would consider average for the basic engine itself if the intent is to approach the quality of an I7 title and assuming two things: the programmer doing it is well-versed in programming and the language being used is at a much higher level of abstraction than Purebasic (GC is a must here).
You make a room with some objects, say an important key which is on a table.  The room needs to contain the table needs to contain the key, otherwise you can't present it in all the ways you expect-looking at the table needs to show the key as on the table.  But it's on, not in.  And your room description should mention the key if and only if the key is on the table.
Difficulties: transparent containers, changing an in to on, getting the string of the room's description (usually a constant) to change in a predictable manner based off a condition.
You now wish to let the player get the key.  You have to be able to accept some or all of the syntaxes that the player might type.  One isn't enough: modern IF titles are flexible enough that it is rarely about guess the syntax.  To illustrate: "get key table", "get key from table", "get all table", "get all from table", the list goes on.  Keep in mind that this is a very simple command, and I haven't even touched on the possible combinations involving articles and adverbs and objects which have long names and disambiguating what the player refers to.  And modern titles will often offer suggestions or ask you for clarification.  You're able to abstract this behind a function, but the thing you get out of it is going to be a struct of some sort describing an action, not a straightforward execution of that action.  And it's going to be a pretty complicated function, probably involving reading lists of data from a file or a huge array or something.
So fine, you say, you can deal with all that.  But the table is a trap.  You now wish to do something instead of getting the key, up to and including modifying the game map.  In the world of game development, this is when people usually throw their hands up and bring in a *second* programing language--namely a scripting language.
Which brings us to the final pair.  Your levels need to be stored separately from your game.  You're not going to be able to do this with hundreds and hundreds of if statements.  You're going to almost certainly need some sort of general triggering and event system, you're going to almost certainly need some sort of scripting language, and you're almost certainly going to need to cram all this into some level file format.  Because it's complicated, you're now probably going to really want (though possibly not need) some program to help you edit it.  Keep in mind that every time you need a new feature, you have to go modify all the proceeding stuff.
And the second closely related one is that for an IF title, you have to save the whole world.  Everything.  It's not enough to save the player or some of the world or anything.  You need to be able to write this format back out (possibly minus scripts and triggers) to disk.  Your saves are almost complete copies of your game.  People typically solve this by reaching for associative arrays because otherwise you're going to have to write individual save functions for every single object.
I could write a medium quality interactive fiction engine in Python, wherein I have the following things.  If you can find all of these in Purebasic, you're about 50% of the way there.  But this is medium quality, and yes, some of these are arguable.  Anyhow: automatic serialization of objects and all subobjects, including support for cycles (pickle); really, really, really strong string manipulation (built into the language); the most powerful template engine possible (solves the description problem, jinja2); scripting languages (use Python itself in your level format); a publish/subscribe system (for solving my table example, ironically it'd possibly be pyglet for this but writing your own event framework capable enough for this is maybe 40 lines); and tools for reading human-readable formats for my level design (yaml or json, avoid xml like the plague imho).  Note that I've said nothing about parsers, parsers for natural language are an entire branch of study.  The thing that you have in Python that *might* help is called nltk, but using it is complicated, and it will improve the quality if anything at all, not give you a parser to start with.
You hhae your life slightly easier if you try for a single player mud because you can be much more rigid, but I don't see the point to single player muds--the code to run a multiplayer one is already available to you and starting from scratch means only that you're duplicating man-years of effort.
And one last note.  All your objects need to be referenced either by pointer or by global ID at all times.  Anything else is asking for trouble: at best object duplication and at worst making serialization and "is that the right key" tests incredibly difficult. For serialization, al objects should have an id anyway and you're going to want a global registry, so it's probably best to make a function to give you a pointer to an object from its id and to make inventories and the like arrays of ids.  This holds for any game with moderately complicated data or the need to serialize more than just the player object itself--as soon as you want the player and the player's inventory to be saved, you're at id land.

My Blog
Twitter: @ajhicks1992

2015-02-12 17:11:04 (edited by The Dwarfer 2015-02-12 17:25:15)

If it comes down to it, pure basic won't be the lang I use to code that game, should it become too complicated. I don't know if I'll ever look into something like pithon, because from what I heard you have to indent your lines just right for everything and that just doesn't sound like something I want to spend my time doing. C, maybe. if it's like you said, similar to pb, I could look into it. Inform7, that's already out of the question, because it doesn't support stats. How would you save in inform7 anyway?
As for saving I have possibilities of how I'm gonna do that but I'm starting from step one so not thinking so far yet. Perhaps when I create a triggering system there could be an array of possible strings the user might type. I'm not quite sure how I'd go about something like alter aeon where you can just type cast gu for casting a gust of wind or just sta for stab, but I could perhaps check for up to 10 different strings for each function, using a for loop and array. it could be something like this:
;we will check for some possible strings. I won't have to declare these anyware else, since this will be added to the trigger system, and the program will always be checking for any number of these strings.
dim stringGet.s(1)
;since it's a basic language we have 2 items (0, and 1) in the array.
for h = 0 to arraySize(containers())
;list of containers on the map. we need this because containers can be more than just, say, tables (they can be red box, box, bucket, coffin, can... must I say more)?
for i = 0 to arraySize(containerItems())
;lists the items in the container. In case the user types "get [insert name of item here]" we want to see if that item actually exists. or, if they put in get all, the player gets all off the table.
stringGet(0)="get "+containerItems(i)\name+" from "+containers(h)\name)
stringGet(1)="get all "+containers(h)\name)
next
next
this is all I'll provide for now, because I don't yet want to get too far and start blabbering things I haven't tried or even thought about. big_smile
I'm just going out on a limb here, because I'm by no means "experienced," but we learn by trial and error, and usually there's more than one way to do things in programming.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 18:21:25

Inform 7 supports stats if you code them or get code for them.  Kerkegrip is a complete roguelike and is something I can't consistently spell.  The reliques of tolti-aph is another, intended in this latter case as an intermediate to advanced programming example.  There are extensions for floating point and decimal math if you need it.
The z-machine is interesting.  Back in the day, (I believe) Infocom released Zork.  I can never remember the company names for a certainty.  But this was before X86 and, if you wanted to get a wide userbase, you had to port your stuff to tens of different platforms.  So they decided to invent their own computer.  But speed didn't matter because these weren't realtime, so they didn't have an actual need to implement it in hardware.  instead, they coded a software simulation of it and ported that simulation to all the platforms they wanted to support.  The stuff in .z5 files and which is produced by at least half the IF development systems is z-code, a type of assembly language that runs on this platform.
Now, that probably seems like a big digression.  But it's not.  They handle saving in exactly the same way that Windows handles hybernating: spitting out a copy of the simulated RAM and simulated registers and simulated everything to disk.  Modern z-code and glulx are the same way, but provide some more stuff for multimedia--you can get sounds and graphics in the game to some extent if you want.  The save command is implemented in the interpreter and is another thing you get completely for free.
As for the parser, no, no you can't.  This is something that is hard and it is also something that is hard to explain to new programmers.  Even something on the order of what modern Lpmuds provide is difficult, and interactive fiction goes a lot further.  You have to be smarter about it-you have to write your program to know what a verb is and what a noun is and to have rules for figuring out when the first and second noun ends.  most verbs do not need 3, fortunately.  The way I'd do it is build a struct containing a verb, a noun, and a second noun; build a function which splits a string in that manner; build a function which tries to convert a noun to an object; build a group of functions that take completely resolved action structs, one for each verb; and then use an associative array to look them up.  An associative array is just an array of structs with a key and a value conceptually, though in practice most languages which provide them implement them as a hash table or a tree of some sort.  The total amount of code for this functionality alone, however, is going to top 500 lines.  Otherwise it is going to be pretty pathetic in comparison with an actual IF parser.  But how you are doing it now simply will not scale.
I hate to go here because everyone decides to jump in with "no you don't" when I do, but you almost certainly will have an easier time with a language supporting inheritance.  In such a language, coding rooms to handle commands that happen in them is easier, and you can make special locations that check for things.  This is probably the simplest (as in least complex and least lines of code) way to get an approximation of the kinds of things you are going to need to be able to do.  If you really want to do this in a general purpose programming language, you need something that can handle special cases without requiring you to wade through a hundreds-of-lines function to find the specific one you're interested in, etc.  Implementing inheritance in Purebasic can actually be done at least to some extent, but it's not something I'd suggest trying to figure out as a learning project, and it's going to be pretty ugly to use.  The reason that Purebasic works for other types of games at all is because those other types of games have maybe 5 or 10 types of objects and few to no special cases, so the fact that you don't have the compiler on your side with class and inheritance support doesn't hurt as much.  But interactive fiction is almost completely special cases.  That's basically the whole point.  And when you get stuff like that where you need one object to be just slightly different from every other object of its type, inheritance comes into its own; it replaces what will be hundreds of if statements.
As for Python, yes, you have to indent.  But you should be indenting anyway, at least if you don't want sighted people to look at your code and declare it unreadable.  And there will quite possibly come a day when you'll be doing it anyway because it helps you with those functions that nest five or six levels deep.  Everyone considers it an odorous thing at first, even myself.  But then you do it and it becomes automatic.  You can choose something else if you want to look at leaving PB, but I promise that indenting is not anywhere near the big deal you think it is at the moment.  The rule that most blind people use is indent by one tab wherever you'd usually put a left brace and unindent by one tab wherever you'd usually put a right brace; Python is not prescribing an indentation scheme so long as the one you use is consistent.  You can also find editors that will remove the burden of manually pressing tab all the time; in such a case, it becomes press tab instead of left brace, press shift+tab instead of right brace, and otherwise just type normally.
And finally, have you played any interactive fiction?  I feel like you're not understanding what it actually is.  Counterfeit monkey is good if you like clever plays on words, and I'm sure that you can find other games.  Curses is interesting, but only if you have a walkthrough on hand.  The thing is that interactive fiction is not usually about the programming.  It's usually about the writing-people like Emily Short are spending maybe 80% of the time writing and planning and the other 20% programming whatever few game mechanics are unique to the game.
I mention this because it looks to me like you are thinking along the lines of a single-player mud.  Your generalizations are tending in the direction of what I see in mud codebases, which are ironically much easier in a lot of ways than what you need for a high quality interactive fiction title.  The only thing that carries a single-player text game is the story and the quality of writing, with a secondary emphasis on having a super clever game mechanic (Kerkegrip, which I can at least spell consistently if incorrectly, shows this latter point).  Counterfeit monkey has both.  But nothing else carries your game.  Nothing.  Inform 7 is close to art because Inform 7 is about writing an interactive fiction title, not coding the quite frankly huge codebase needed to write an interactive fiction title.  The entire language of I7 is about coding special cases.  New game mechanics just happen to be special cases that apply everywhere.  The entirety of every other language we're discussing here is about abstracting special cases into general cases, because that's what typical programming is about if you do it right.  And this is why I say use I7.  Stats aren't anywhere near as important to an interactive fiction game as good fiction and puzzles, and good luck with either of those while you figure out your engine.  Just about the only way to do this is to essentially build your own I7, or at least an I6 (I6 looks like a more traditional programming language, but has a really huge standard library aimed specifically at IF development).

My Blog
Twitter: @ajhicks1992

2015-02-12 19:03:14

Hmm. well if inform7 supports fighting, allows you to use weapons and other objects, locked and closed doors, directional movement, then I'd definitely use it; variables would also be nice... is variables a seprat function of inform (library)?

oh and another question.
I tried to play a text adventure on the web in inform 7's website. I kind of liked it, kind of didn't. is there a software you could download and open to play these games, that isn't web browser based?

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 19:08:14

I mean heck. if I can create objectives for the player, objects of type enemy for fighting,
stats for players and enemies and such,
levels, and saving ability, I'll switch to that in a heartbeet.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 20:04:39 (edited by camlorn 2015-02-12 20:05:27)

You can create it there.  You can create it in Purebasic.  But Inform 7 probably already has code for all those things once you go through the tutorials.  But if your goal is a combat-based game, jump on the regular audiogame bandwagon because I promise you'll see much more success there.  Single-player text games are not carried by such things-look at kerkerkruip (which I am now spelling right).  it does have combat, but you can complete the game in maybe half an hour at most.  Combat is not fun.  Grinding is not fun.  If you forgo the possibilities of audio and realtime combat, the thing that is left that is fun is story.  Stop thinking about coding.  Start thinking about writing and spelling and synonyms.  Start thinking about word plays.  Or clever backstory.  Or puzzles that use 6 obscure details that, once you put them together the right way, leaves you going "that was so obvious, how did I never see it?"
Go get Windows Git[.  This is an interpreter capable of playing games in the Glulx format, which is what everyone is using these days.  You will also need an NVDA add-on, but I am unable to find it online; someone gave it to me but I suspect it's probably in the NVDA Dropbox folder.  I may go through the trouble of getting this to be more publicly available, but not at the moment-someone maintains a repository, but seems to be missing this one, and I'm not sure why.  The specific information on it is as follows:
Automatic speech output for interactive fiction interpreters; Status: running; Version: 1.1; Author: Nick Stockton <[email protected]>
Regardless of if you decide to put your users through this or not, you should do this yourself so that you can see the kind of thing you are proposing to develop.

My Blog
Twitter: @ajhicks1992

2015-02-12 20:11:02

Oh no. don't be mistaken. This game will not! be based on combat, or I'd not think twice about making it audio. Combat will be an element; win a couple fights to achieve some goal if necessary. Fighting will only be about %10 of what I worry about. It'll mainly be finding out information, collecting objects, and, of course, going places. I just want fighting to be a possibility, because there will be enemies on occasion.
and what about winglulx? I heard that was also an accessible glulx game interpreter--read up on the description. Or perhaps winfrots?

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-12 20:47:19

If you use Inform 7, the Inform ATTACK (Advanced Turn-based TActical Combat Kit) will handle everything as far as fighting. (This is the same system used in Kerkerkruip.)

“Can we be casual in the work of God — casual when the house is on fire, and people are in danger of being burned?” — Duncan Campbell
“There are four things that we ought to do with the Word of God – admit it as the Word of God, commit it to our hearts and minds, submit to it, and transmit it to the world.” — William Wilberforce

2015-02-12 21:32:06

You can use any of those as long as you can find the add-on for it.  I use Wingit and the add-on I listed supports a bunch of interpreters; shame it's not more easily found.  Regardless, any interpreter with speech output and/or an NVDA add-on is fine.
If combat is not a big part of your game, then don't worry about combat at all.  At worst, you can make it a clever puzzle-a scripted sequence with lots of amusing deaths unless you figure out the 5 or 6 specific things needed for victory.  Unless you have a bunch of enemies that require fighting (please don't), it's worth the time to do something like that.  Counterfeit Monkey, for example, has almost no combat-the things that involve enemies involve figuring out how to get past them through subterfuge and deception and cleverness with language.  Curses does have some combat, but it's what I just said-in the cases of Curses, you get 10 different rods that do things and a bunch of other puzzle pieces, and at least one fight-like sequence  centers around realizing that a pill you found earlier will save you from deadly poison gas or something along those lines  (it's been a while and curses does very, very odd things to the brain of the player).

My Blog
Twitter: @ajhicks1992

2015-02-12 21:46:51

Hmm. good suggestions.
I was leaning towards making my combat system sort of like a turn based, or perhaps one like what is in alter aeon, which, as I roughly guess, relys on timers and stat comparisons.

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-13 00:14:37

For information about interactive fiction, I would recommend taking a look at http://www.intfiction.org/forum/

If you are going for parser-based interactive fiction (i.e., like the old Zork games), then Inform is the obvious choice; however, if your plans are more in the directions of choice-based games, then I would look to something simpler than Inform.

Some alternatives for that are Twine, Quest, and ChoiceScript. Not sure how well-suited to combat any of those are, but they're definitely very well-suited for writing and executing interactive fiction. I would strongly recommend considering some of these for your first game creation. The simpler the system, the more you can focus on making the _game_ itself, and the more likely you are to end up with something fun.

And I'm saying that as someone who has built his own Text Adventure engine from scratch (twice, actually), and released games using that game engine. Actually, I'm thinking of releasing the text adventure engine as a free "write your own CYOA" app soon, but it will be for Android devices only. The three alternatives I mentioned above all support web-based games, I believe.

2015-02-13 01:07:38

Do you know where I could find some example inform games?

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-13 16:01:44

@severestormsteve1, in PB, do not forget the PrintN() function. The syntax for this function is:
PrintN (text.s)
This prints a newline after the text.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2015-02-13 16:49:06

@Ethin
Before reading this text, please know that I mean this as a jenuin question, there's no underlying negative tone to this. I'm providing this disclaimer because the question I am about to ask could be read wrong given the circumstances under which it was posted. So when you read it, don't take any offence to it, as I mean no harm or other negativity by it.

question: What made you decided to post that last post? How will it help me?

But thank you anyway, for trying to help. But Yes I know about the PrintN (it came in handy when i was trying to code this in PB, because if I didn't use printN it would put words without spaces and other weird junk like that).

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-13 17:03:50

I just thought that you needed it. I didn't know you already knew about it.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2015-02-13 17:15:24

Ah i see. it's all good. Yeah that command can be pretty useful

If you have issues with Scramble, please contact support at the link below. I check here at least once a day, so this is the best avenue for submitting your issues and bug reports.
https://stevend.net/scramble/support

2015-02-14 15:48:17

Sorry, don't know a lot about the Inform community; but I'm sure you'll find something if you dig around on the inform7 page.

I do know that there is a Cloak of Darkness implementation for both Inform 6 and 7 (file contains both implementations). The original site is no longer actively maintained, but many (if not most) IF languages tend to have an implementation of CoD available somewhere to look at. Even I did one for my Storyscript, in order to test out the featureset. It's a nice little story for getting an impression of how the IF language you're considering works.