Are there frameworks for reasoning about questions comparable to: Given my quest and stage design, is it assured that for any mixture of participant selections there is no such thing as a means for the participant to lock themselves out of finishing the sport?
For example, assume a quest like this:
- The Participant can betray NPC A and obtain merchandise b from NPC B as a reward, or
- The Participant can betray NPC B and obtain merchandise a from NPC A as a reward.
- The Participant can commerce both merchandise a or b for a key. That is the one solution to get hold of key.
- Solely the key opens a brand new zone. That is the one solution to enter zone.
- The participant can kill NPC A. Upon demise, NPC A doesn’t drop merchandise a.
With this setup, the participant can lock themselves out of finishing the sport in the event that they kill NPC A and betray NPC B. On this case, they will neither get merchandise a nor b as a reward, subsequently by no means get hold of key, and by no means enter zone.
Now take a look at these two further guidelines:
- If killed, NPC A drops merchandise a.
- The one solution to kill NPC A is thru an merchandise that may solely be obtained from zone.
Including both of those choices / constraints ensures that the participant can by no means lock themselves out of finishing the sport.
When you wanted some time to learn via these guidelines, then it implies that it’s not less than a bit troublesome to cause about them, though that is solely a really small instance. For any lifelike variety of choices, constraints, NPCs, gadgets, and quest branches, likelihood is excessive that we overlook a possible path through which the participant results in probably the most irritating state of affairs: being unable to finish the sport, and doubtlessly discovering this out solely very late.
How do folks cause about such issues? I can think about encoding some helpful info into my quest descriptors, gadgets, and many others., turning all of it into some type of large state machine and computationally validating that there aren’t any useless ends. Or I can flip all of the choices and constraints into Prolog clauses and examine for satisfyability. Each appears doable however costly to construct only for one recreation.
How do studios do that? Are there current frameworks? Limitless QA and hoping for the perfect? Leaving it to beta testers?