Also, if you want to create a non-English game i7 gets messy fast.
And the Z machine games can be run everywhere.
Declaring some room with i6 it's literally four lines of code:
The object name and the internal one, the description upon entering it, a light attribute, and a semicolon.
Using C wasn't too painful, but I agree that using something else would have been more straightforward. I've ended up in a situation where the user can type "USE TORCH", but really they want to type "LIGHT TORCH". So I added that as a synonym, but once you do that in a few different places you end up accidentally supporting commands such as:
LIGHT THE BOOK READ THE TORCH
They work, but they're utterly bogus from a logical point of view.
That said I'm pleased I managed to get it working at all, and my next step will be writing a third version using an infocom compiler & interpreter.
https://vetusware.com/download/Infocom%20CPM%20Interpreters%...
You can use infocpm. Just hexedit the COM file to match the DAT file (rename game.z3 to game.DAT).
For example, if the OG interpreter works with zork1.dat, hexedit the file and replace zork1 with "game" so it matches "game.dat".
Object -> "flashlight"
with name 'flashlight' 'torch',
description "It's a battery-powered flashlight, of the sort that switches on and off.",
after [;
SwitchOn: give self light;
SwitchOff: give self ~light;
],
has switchable ~on ~light;But I have created text based adventures (usually with some RPG-style combat) in C++ a few times for fun and it can be done in a fairly clean and simple way.
Even on mobile devices!
Which IF programs support Z machine output?
[0] http://inform7.com/
[1] https://i7-examples.github.io/Bronze/source.html
[2] http://inform7.com/doc/