I downloaded Cal-3040. It’s still difficult for me to believe in your freetext system, but you clearly have some significant programming chops. Maybe you’re a past Loebner Prize winner or a Siri programmer or something, I dunno.
So let’s say you build the system, and it works exactly as advertised. It can reliably examine freetext English and correctly determine which of the possible prewritten options is intended. Cool!
I still wouldn’t want to work with a system like this, because experience tells me that it would place an insurmountable load on the writer. And even if you were a familiar luminary of the IF community, I’d want to see a completed example that shows me you have a solution for this problem.
Why am I so concerned about authorial burden? Take a Twine game (multiple-choice). Writing a Twine game can easily spin out of control if you don’t routinely prune your branches or twist them into a shape where they routinely rejoin. After all, if you don’t take that step, then even choosing among 2 options 5 times means writing 32 options at decision point 6. That’s exhausting.
(Your example syntax doesn’t show significant branch tracking, but I assume you have some way to handle variables, because otherwise the conversations will be visibly deterministic and one-word player responses will be disastrous.)
In Twine, I can limit the player’s choices, and I can rejoin tracks appropriately, so that’s survivable. A player might mutter about my specific decisions, but at least they’ll know what their options are.
But to my understanding, the system you’re describing leaves the tracks invisible to the player. I can set up what I think are reasonable options and I can try to cue them in dialogue, but players can’t see what I’ve actually implemented and haven’t implemented. That leaves me the choice between implementing everything they try, versus not implementing everything they try.
Take the “Guilt by Association” example, from the first page of this thread. I know the point here was to show the syntax, but even the initial message
…has a disastrous number of reasonable responses.
The suggested responses appeared to be:
Who are you?
What’s the problem?
Look around.
Why can’t you go home?
How old are you?
Other reasonable responses off the top of my head:
How did you get my number?
Are you lost?
You should call 911.
Where are you?
Where is home?
…and once the kidnappers, dresser, and gun are introduced, it gets even worse. Because now the player is trying to understand the situation and formulate a plan.
Tell me about the kidnappers.
Where did the kidnappers grab you?
Did anyone see you get kidnapped?
How long ago did the kidnappers leave?
Do you know what the kidnappers want?
Are your parents rich?
Are you tied up or handcuffed or anything?
Are you locked in a bedroom or closet or basement?
Slide the dresser in front of the door.
Check and see if the gun is loaded.
Do you know how to shoot a gun?
Everything’s going to be all right.
Take out one of the dresser drawers and hit the kidnapper with it when he comes back.
Again, none of these are unreasonable responses. But if I try to implement everything, then it’s easy to see how the frightening 2 ^ 5 of Twine could explode into an unachievable 10 ^ 5 or more.
But everything I don’t implement is a crime against mimesis - because it will break the illusion of communicating with another human being. This could be pretty fun for players, but in the same way that fiddling with a chatbot is fun. And if it isn’t fun, then it’s just frustrating, because their perfectly valid ideas are being interrupted.
You could implement a standard syntax of sorts, so that players aren’t freetyping to the same degree. I can see you did something of the sort in Cal-3040, and that would help set player expectations about what’s valid vs. invalid player behavior. (After all, if I type “pirouette across the room” into a Glulx game, I wouldn’t expect a valid response either. There are very specific rules about what you can enter into a traditional IF parser.) But then you’d have to teach your new syntax to the players, and that’s tricky.
Is it possible to get around the exploding-options problem? Maybe. But I don’t see how, and that’s a concern outside of the entire programming question.