Can anyone recommend a language based off of features I'm looking for?

I’ve been using Inform 7 for a few months now but at least for the current project I’m working on I feel it probably makes more sense to just restart using a language that was built to do some of the things I’d like to do, rather then trying to force I7 to bend to my whims. I’ve been taking a look at Dialog but I feel I’ve run into other hurdles there. This isn’t to say I’m giving up on either language, I definitely want to return to both but I’m hoping for now at least to just use something that I don’t need to wrangle with so much.

The main features I’m looking for are:

  1. Capable of Algebra using Real Numbers.
  2. The Parser does not require an object in the player’s input.
  3. Methods to get user input outside of the normal game loop, during action handling especially.
  4. Dynamic Values consisting of at least four variables, preferably with no limit.
1 Like

As a language writer, I’d like to clarify:

  1. Pardon me for being pedantic, but do you mean to say ‘algebra’? Or did you mean merely ‘arithmetic’?

  2. I’m not sure that I understand this. Requiring an object is usually dependent on the verb.
    There are some verbs - such as ‘listen’ - that clearly require no object.

  3. Do you mean a second layer of input, to clarify a previous input? Something like DO YOU MEAN THE BRASS LANTERN OR THE SILVER LANTERN?

  4. Is that the same as this thread? Dynamic Predicates limited to two parameters

2 Likes

Have you looked at TADS 3? It’s a pretty powerful language…

2 Likes

Balladeer satisfies these criteria. There are a couple of potential downsides:

  • You’ll need to be comfortable with the Python programming language
  • It’s very new, so there are relatively few examples to study

This demo shows how to have dual control via parser and mouse, in a style which will be familiar to a user of the modern web.

2 Likes
  1. The reason I used the word algebra instead of arithmetic was just to specify that values may be unknown or variable, sorry if that’s not the right usage.

  2. This mainly stems from a problem I ran into with I7 where you cannot define verbs that don’t interact with at least one object.

  3. I mean ways the author can look for input, not disambiguations the parser already handles, the use I have in mind is to have an action which both npcs and the player can use but when the player uses the action I would like to get additional input from the player as part of the action where I don’t think it makes sense to have the input I’m trying to get from the player be it’s own separate action.

  4. Yes. With I7 this also came to my question about having “Quantitative relations” I was able to work around this in I7 though with Collections.

Thanks, I’ll have to read through the docs to see if it’ll be a good fit. Python was actually the language I started writing in but the idea of making my own parser in Python held me back from actually making anything in it.

1 Like

Don’t hesitate to let me know if any of the examples or documentation is unclear. This is a good opportunity for me to improve the experience for early adopters :slightly_smiling_face:.

1 Like

Does it necessarily have to be a parser-based IF language? Because ChoiceScript certainly handles “algebra” quite well, and you can certainly have dozens, if not hundreds, of dynamic values tracked. Furthermore, you can have things happen without user input during the game based on stat (value) tracking.

I’m fairly sure Inform 7 can do arithmetic on variables, intransitive verbs (an action applying to nothing) and additional input from the player during an action (though I’m not sure what you have in mind exactly).

JUMP and WAIT are standard verbs that interact with zero objects. This is common.

2 Likes

Yup I was just coming back to reply to this. Eg I have this testing command code in one of my Inform 7 games:

Understand “zdinner” as zdinnering. zdinnering is an action applying to nothing.

Sorry I probably could have phrased this better, but I meant more so actions applying to non-things, rather than just applying to nothing. The main problem I had run into was with actions not being able to only apply solely to kinds of values in I7, but must also apply to an object.

Additional input during an action is the main hurdle I find myself with I7 right now, I’ve gotten some ideas for possible work around in another thread but I was also told that even these work arounds aren’t able to really handle getting player input during the action handling steps but instead happen afterwards, such as in a scene, or in just limiting what the player can type during a certain prompt.

This looks like

Counting is an action applying to one number.
Understand "count [number]" as counting.

Yeah, that’s somewhat messy. As noted in that thread, there are ways to do it, but not simple ways.

1 Like

Apologies again, here is the specific case I’m talking about.

"Untitled"

Laboratory is a room.

B is a kind of value. The B are c and d.
F is a kind of value. The F are g and h.

testing is an action applying to one B and one F.
Understand "Test [a B] and [a F]" as testing.

And again there are work arounds but I guess what I’m envisioning ideally is a language which has no limits on the grammatical tokens which can comprise a sentence (not being limited to two tokens would also be nice though that is a slightly different feature than what I’m looking for with this example.)