There’s a broader philosophical question here of “what would a new Standard actually be trying to achieve?” Different proposals in this thread have different ideas of this.
Fundamentally, every new Z-machine feature has to justify its existence by answering the question, “why is this so valuable that it is worth either (1) a massive community effort to get it into as many interpreters as possible, or (2) fragmenting the ecosystem into terps [and games] that support it and those that don’t?” As Z-machines (and Z-machine games) have proliferated, this bar has become increasingly hard to reach.
Some factors make it easier, however:
- You’re forking the Z-machine for a particular project or platform, where the game is always expected to be shipped with that interpreter (e.g., Vorple).
- The feature degrades gracefully on non-compliant terps.
- The feature fills an obvious gap that actual authors actually want filled.
- The feature is clearly needed in the existing Z-code ecosystem; building a new format or switching to something like Glulx would not achieve the same ends.
The resurgence of retro-IF has changed these considerations dramatically. For a long time, if someone said “I want images, expanded memory, etc.”, the answer was “just use Z6” or “just use Glulx.” But now, there are a lot of games specifically targeting Z3 or Z5 for retro compatibility; a gracefully-degrading Z5 image opcode like arc_image suddenly makes sense.
Returning to the question: what would new standard actually be trying to achieve?
Motivation 1: A “purer”/“more perfect” Z-machine
This is appealing to theorists, but has trouble answering the question “why is this worth fragmenting the ecosystem?” zzo38 tried to do this with their series of “quixotic” terps a number of years ago, and it went down like a lead balloon. At a certain point, aren’t you just creating your own new XYZ-Machine format?
Motivation 2: Support bigger games
This is appealing to authors, but has trouble answering the question “why the Z-machine and not another system?” Today, the Z-machine’s main appeal is retro compatibility, but most retro terps already don’t support the full memory allowance of Z8. Who would a bigger Z-machine actually be helping?
Motivation 3: Improve optimization on retro platforms
This has more reason for existence, but would require a lot of joint effort by terp and compiler developers to be useful. In practice, the changes required to make a significant difference would de facto result in a new incompatible VM format.
Motivation 4: Allow game features that weren’t previously possible (but which would actually be nice to have in retro/Z-code contexts)
IMO, most genuinely viable ideas fall under this motivation. Examples of commonly-discussed pain points that could be addressed:
- Graphics in Z5/Z8 games. (
arc_image seems to have won here.)
- More granular ways to store/retrieve data from disk.
- More text-formatting options (e.g., proportional alignment/justification).
- A socket system for interfacing with out-of-terp software or web APIs.
TL;DR features that improve functionality on retro platforms, but which degrade gracefully on non-compliant terps, are most likely to get traction. Calls for fundamentally redesigning core opcodes and memory models will be a harder sell.
TL;DRR xkcd 927.