It's always interesting when people use their own self-created engines rather than one of the big established ones, and this looks pretty innovative and exciting. Anything to make it easier for the player to interact with the game is a positive development. I'm looking forward to seeing the end result.
XD That's the story of all of us creating our own system. No matter the result, for sure the joy was there just creating them.
One thing I i thik i learned doing mine, is that trying to stick to an existing program language instead of creating your own from scratch is easyer for you to create and easyer for others to learn.
I have seen your "pastebin" and i can get the concept of external .txt files for each room, isn't it? Do we have a public definition for that ConTextEngine or just private? I'm just curious about systems :)
using a existing language would mean a larger interperter to a larger degree i would say, I am not after making an entire programing language after all.
There is not public defenition since I am not done defining it for my self.
I just added the idea of enter, exit blocks. where I can place script that should run when I load a new room, exit script is run for the old room, enter is run for the new, mean i could trigger the effects like a look action on the room i am entering automatically from any room, rather then being dependant on showing the right text from the action in the room previous room that I just left.
But quick break down.
The engine builds around a few basic ideas.
1. each row contain it's own full Script logic.
2. a tab means the current script is a child to the previous script.
3. before execute each script do a Eval() to determine if its the children should be executed.
4. when a script is executed, all its children will be executed in order if the Eval pass.
5. Each time you load a scene the old scene is released, and the new one, with a new input context is created.
Action(Free text, each word is converted to a context with the previous word as a parent, when your input match the action text and you press enter, all childscripts are executed)
"look boots", "open top cabinet"
Command (defined system commands like present, set, load, inc/dec, system)
* present combines text and when to show it to the user.
* load the scene from the specified folder by parsing the Logic.txt within. "command load Living/CentralCorridor"
* set will set the namedstate type to the value "command set (bool)MyBoolStateName true"
* inc/dec increase or decrease a int state by 1 "command inc (int)MyIntStateName"
* system( back to book menu, exit, debug)
Condition(compare state to value, or state to state)
* will only Eval to true if condtion is true, and only execute childscripts if thats the case.
Automatic Enter/Exit
* Exit will execute before you load the next scene if a exit is declare in the script.
* Enter will execute after a load if the newly loaded scene have it declared in the script.
using a existing language would mean a larger interperter to a larger degree i would say, I am not after making an entire programing language after all.
Oh, it was just an idea that works for me :) During development I had to take many decissions, some of which I would not make now, but i'm happy with the choice I took about stay stick to an existing languaje. ParserCommander that I developed has about 3.000 lines of code, so it's not very large I think.
There is not public defenition since I am not done defining it for my self.
The same works for me. I started to make external documentation about how to use it, and finally I realize that it would take almost more time to do and maintain it than programming it :D
It's nice to make parsers, but also games, so here we are! ;)