Dialog

Dialog is a domain-specific language for creating works of interactive fiction. It is heavily inspired by Inform 7 (Graham Nelson et al. 2006) and Prolog (Alain Colmerauer et al. 1972).

An optimizing compiler, dialogc, translates high-level Dialog code into Z-code, a platform-independent runtime format originally created by Infocom in 1979.

Since Dialog version 0d/01 there's an interactive debugger, and since version 0g/01 there's a separate backend for the Å-machine story format.

The main discussion is happening at the intfiction.org forum, in the Dialog category.

Manual

The Dialog Manual will tell you everything about the latest version.

Brief notes for each new release appear in this forum thread.

Download

The release archive includes:

  • Full source code for the Dialog compiler.
  • Pre-built executable files for Linux (i386 and x86_64) and Windows.
  • The latest version of the Dialog standard library, and the standard debugging extension.
  • A copy of the manual.

The compiler is distributed under a 2-clause BSD license.

IFID Generator

For reasons outlined in the Treaty of Babel, the Dialog compiler may bug you about declaring a story-specific IFID. To generate the required declaration, simply click the button below.

Notable works

This is what Cloak of Darkness looks like in Dialog.

My IFComp 2018 game Tethered is the first published Dialog game.

Posted Thursday 22-Nov-2018 21:18

Discuss this page

Disclaimer: I am not responsible for what people (other than myself) write in the forums. Please report any abuse, such as insults, slander, spam and illegal material, and I will take appropriate actions. Don't feed the trolls.

Jag tar inget ansvar för det som skrivs i forumet, förutom mina egna inlägg. Vänligen rapportera alla inlägg som bryter mot reglerna, så ska jag se vad jag kan göra. Som regelbrott räknas till exempel förolämpningar, förtal, spam och olagligt material. Mata inte trålarna.

Anonymous
Tue 11-Dec-2018 17:44
if I have an object in a closed transparent container how do I override the default 'you can't reach obj' take fail message?

(instead of [take *]) doesn't seem to work in this case (scope?)

52 more comments hidden. Click to show all.

Anonymous
Sun 29-Oct-2023 23:10
In a thread involving implementing a "Talk To" rule to Dialog, you mentioned you would consider adding it to the library.

Any further thoughts?

Thank you.
Anonymous
Tue 26-Dec-2023 19:49
Why is an asterisk needed to make a berry a type of fruit in:
(berry #blueberry)
(berry #cherry)

(fruit #apple)
(fruit *(berry $))
from https://www.linusakesson.net/dialog/docs/traits.html

but an asterisk is not needed to make a stone a type of item in:
(item (stone $))
from https://www.linusakesson.net/dialog/docs/items.html
Anonymous
Thu 15-Feb-2024 03:13
Dialog development came to a standstill several years ago. Is it now a dead language?
Anonymous
Wed 3-Sep-2025 15:41
Can't compile on Windows (in MSYS) because this uses termios.h and ioctl.h. Definitely not a good decision.