I note that choicescript favors a generally linear approach to scenes. A follows B follows C. As a long time RPG game master I favor a more sandbox approach, however I understand that that is much harder to code, at least conceptually.
To illustrate what I mean by sandbox, my first serious game, currently under alpha development, is a player trying to save a rural town from invasion by inter dimensional aliens.
There are 18 major locations, interconnected in a square grid, and a number of major locations have one to three minor sub locations, like Charlie’s Junk Shop (minor location) in the South Precinct (major location).
In the town I have about 9 significant NPCs. They have behaviors of their own, react to the growing situation and to the player character. I have had to do some bashing on the game flow structure but its coming together nicely. This lets me have an organic behavior for people, including NPC arcs like a mother and her child, the town chief of police and a lover, a grumpy know it all that doesn’t know who to trust, and the need for the player to find ways to get NPCs on side and coordinated to help. NPCs can also be shortcuts to important player knowledge and help me with the Three Clue Rule.
There are also about 6 alien actors (I might include more) that go about their business building up the invasion and trying to fend off interference. There are also some artifacts that can be acquired and used to good effect against their makers.
I have no preset path through this model. I have two accelerating systems, the alien progress and the PC progress, that interact in somewhat predictable ways. The hardest part is ensuring that the player neither has defeat nor success accidentally thrown in their face. Instead at each turn they have some awareness of how close to either they are and can make meaningful choices to push away from defeat and toward success.
The skeletal framework I have put together is working fairly well. I can play an abbreviated version of the game through and normally achieve success, with a few social dilemmas on the way.
To achieve this one thing I have had to do is allow a “scene” to actually be an NPC or an alien. I go to labels in those scenes to find out how that character deals with a moment of time passing, the player interacting with them in some way, or some sort of event occurring, such as a citizen being kidnapped, the player upsetting someone who then calls the police, and so on.
This has given me a bit over 30 scene files.
I’m kind of pleased with performance just the same. 1,000 random test runs takes about 2 seconds which strikes me as pretty awesome given the number of choice functions that get called, and scene jumps that are taken.
Getting it to run that many times and catalog line counts helped me twice to find instances where I had made some choices impossible to ever take. I’m now adding a set of true / false debug flags in my start up. Turning them on gets the script to throw diagnostics into the scene that can show up when I do test runs. Its a cool system.
Anyway, that’s my journey so far with choice script. I have taken the harder path but I did linear adventures to death back in the 70s, so its time for a challenge. I’m pleased with it so far and hope to have something more robust in a month or so as a beta system to show you.
Open to questions and comments