Proof still needed that the whole override/conditional system works out. In particular:
- Prove commutativity of overrides that don't conflict or supersede.
- Prove that configuration variables can have values provided in a way which never leads to paradox or ambiguity.
Future work in the language itself:
- Consider a fuller type system allowing for easy factoring out of common patterns like inventories and current/max items. This might go all the way to ADTs.
- Investigate restrictions on randomized variables to allow computation of things like "what are my legal placements?"
- Experiment with the language and ergonomics and see where improvements are needed, or if tweaks are needed for the more complex rule systems.
- Build out a standard library.
- The current logic is incapable of ensuring that, say, all items are accessible, in an ergonomic way. Create a way to do this (probably multiple victory conditions?)
- Properties to verify optimization properties, e.g.
monotonic
for variables.
Potential syntactic sugar/library functionality:
- Declarations of multiple of the same kind of thing quickly.
- Immediately modifying instances.
- If actions are too long, shortening them?
- Calculations where a player may break logic in such a way as to soft lock, requiring more subtlety (especially if a player may be required to use the same trick to get out.
Next steps:
- Rewrite the parser & samples to match the new language design
- Implement the language