ZILF 1.6 released

ZILF was first announced in July 2009. The initial release, 0.2, included one sample game: a port of Cloak of Darkness, with its own primitive parser. The announcement on rec.arts.int-fiction teased three things to come in the future:

Since then, the parser has grown in sophistication and become a true standard library. Advent was ported and became the first full-length game written in ZIL since 1989. And now, sixteen years later, all three parts of this prophecy have finally come to pass.

At long last, I give you ZILF 1.0.

Changes in this version include a new system for customizing the status line, easier modification of standard verbs, improved Unicode support, a new command-line experience, and yes, experimental support for compiling to Glulx. (You’ll also need Glazer for that.)

Get it at zilf.io, where you’ll also find links to documentation and our Discord server. Visual Studio Code users can get the ZIL language extension from the marketplace.

43 Likes

at least you recognise that is production-grade :slight_smile:
(which was since 0.8, capable of compiling the mass of legacy code everyone known well…)

Best regards from Italy,
dott. Piergiorgio.

3 Likes

I may be missing something again here, but I just downloaded and tested this v1.0 build with the idea that I could compile my new WIP with a different name or extension in one command. I tried zilf hotel.zil hotel.dat and also zilf build hotel.zil hotel.dat but both fail to produce a hotel.dat file - at the point where zapf should be invoked, I just get the zapf ‘usage’ help info. I can do this as a two step process with - zilf -S hotel.zil followed by zapf hotel.zap hotel.dat but from the zilf build -h help it looks like this should work as a ‘combined’ zilf command ?

3 Likes

Oops! Good catch, it didn’t work when passing a second filename. That’s fixed in 1.0.1, which is available for download now.

4 Likes

Yea, verily, they say the prophecy was first uttered on Usenet and that it has been handed down through the ages ever since.

Congrats, Tara! Very cool.

3 Likes

Now, if I could only wrap my head around ZIL and its syntax the way I managed with TADS… At least there’s plenty of example code out there.

2 Likes

Version 1.1 is now available for download. It features some big parser improvements (topics, missing verbs, “everywhere” scope, better syntax line decisions), better integration with the VS Code extension, and the “even more experimental” Glulx mode I used for Zork II and III over here.

6 Likes

Version 1.2 is now available for download, featuring some Glulx improvements (GLK function, better V4/V5 compatibility) and library fixes (ordering NPCs, drawing the V6 status line).

11 Likes

Love this project, and the excellent way that you present it on the site. The REPL is a nice touch.

2 Likes

Version 1.3 is now available for download, featuring Blorb support, parser improvements, debugging improvements, an updated Cloak of Darkness example, and minor bug fixes.

4 Likes

I downloaded 1.3 and I have a library issue with openable containers for one ofmy WIP’s (think this may be an existing bug though) I have a glass case which is closed and locked (but transparent so you can see inside). Inside this is a box which can also be opened. I created a minimal example in zilf here

"EMPTY GAME main file"

<VERSION ZIP>
<CONSTANT RELEASEID 1>

"Main loop"

<CONSTANT GAME-BANNER
"EMPTY GAME|
An interactive fiction by AUTHOR NAME">

<ROUTINE GO ()
    <CRLF> <CRLF>
    <TELL "INTRODUCTORY TEXT!" CR CR>
    <V-VERSION> <CRLF>
    <SETG HERE ,STARTROOM>
    <MOVE ,PLAYER ,HERE>
    <V-LOOK>
    <MAIN-LOOP>>

<INSERT-FILE "parser">

"Objects"

<ROOM STARTROOM
    (IN ROOMS)
    (DESC "START ROOM")
    (FLAGS LIGHTBIT ONBIT)>

<OBJECT GLASS-CASE
    (IN STARTROOM)
    (DESC "glass case")
    (SYNONYM CASE)
    (ADJECTIVE GLASS)
    (FLAGS CONTBIT TRANSBIT OPENABLEBIT LOCKEDBIT)
    (TEXT "A basic glass case.")>

<OBJECT BOX
    (IN GLASS-CASE)
    (DESC "box")
    (SYNONYM BOX)
    (FLAGS CONTBIT OPENABLEBIT)
    (TEXT "A basic box.")>

If I attempt to open the case, I can’t as it is locked. But I can open the box which is inside the case but should not be accessible as the case is locked - there does not seem to be a check for this. See transcript here

INTRODUCTORY TEXT!

EMPTY GAME
An interactive fiction by AUTHOR NAME
Release 1 / Serial number 260122 / ZILF 1.3 lib T5

START ROOM

There is a glass case here.
In the glass case is a box.

open case
You’ll have to unlock it first.

look in case
In the glass case is a box.

open box
You open the box.
In the box is nothing.

3 Likes

I believe this is historically accurate. ZIL doesn’t traditionally enforce touchability for actions other than taking; instead, you could add a check to the container’s CONTFCN.

However, it’s the 21st century, and we can probably do better. I’ve filed this as ZILF-292.

3 Likes

I have never really looked at the CONTFCN, so thought I would look up its use. Couldn’t find too much documented but it seems it intercepts any interaction with objects inside the container in question. Therefore, I put a guard against doing anything to the box that required ‘touch’ while the container was closed and that seems to have resolved my issue - thank you.

2 Likes

Version 1.4 is now available for download with some big library updates, including a scoring system, touchability checks (!), and parser improvements, as well as optimizations and bug fixes.

5 Likes

Version 1.5 is now available for download with several parser improvements and bug fixes, and a new sample game (Rascal).

5 Likes

Wow, not sure I can keep up with all these releases coming thick and fast :heart_on_fire:I was in the process of overriding the parser to be able to just alter the ‘three dot’ empty response for one of my projects, when the notification popped up for this release and find that it’s already added as a new NOTHING-ENTERED library message :blush: – keep up the good work @vaporware Thanks :+1:

3 Likes

1.x and lots of releases in a short while – you’re going to have to find a new username if you keep this up. :slightly_smiling_face:

6 Likes

I can’t locate how to just get the bin folder for actually compiling the games. I’m very excited about the new use of TCOLOR, which I was not aware about before…

Which OS?

If you’re on Windows, the installer puts it at C:\Program Files (x86)\ZILF\bin, but it should also be added to your path so you can run zilf from anywhere.

1 Like

Ah, so ZILF is now an installable thing? Right. I might need to figure that out, because on some other projects I’d rather keep the old bin files as it uses the three-noun modifications I did for Milliways…