Est. 1985 Beginner

ALAN

ALAN - the Adventure LANguage - is a declarative, domain-specific language for writing text adventures, designed in 1985 so that people who are not programmers can describe a world rather than implement one.

Created by Thomas Nilsson (now Thomas Nilefalk) and Göran Forslund

Paradigm Declarative, domain-specific language for interactive fiction: authors describe locations, objects, actors and verbs rather than writing control flow. Strictly typed and compiled, with single-inheritance classes and instances layered on the declarative core
Typing Static, Strong
First Appeared 1985
Latest Version Alan 3.0 Beta 8 (September 2021)

ALAN - short for Adventure LANguage - is a special-purpose language for writing interactive fiction. It was designed in 1985 by Thomas Nilsson (who now goes by Thomas Nilefalk) and Göran Forslund on a premise that separates it from almost every other authoring system: the person writing a text adventure should not have to be a programmer. Where Inform and TADS give authors a general-purpose language with an interactive fiction library on top, ALAN gives them a notation for describing a world - rooms, things, characters, verbs - and supplies working defaults for everything the author does not mention. Four decades later, it is still maintained by one of its original designers, still shipping, and still the language behind occasional new competition entries.

History and Origins

ALAN was designed in Sweden in 1985. Its earliest widely cited artefact is the adventure Saviour, which dates from the same period and has, according to the project, been used as a test game for the system ever since - a detail that says a good deal about how the project has been run.

Version 2 arrived around 1993 and is the version most people encountered. Through the 1990s ALAN spread the way hobby systems did at the time: through the Interactive Fiction Archive, the rec.arts.int-fiction newsgroup, and word of mouth among authors who found Inform’s C-like surface forbidding. Late-1999 community comparisons of authoring systems record what ALAN looked like at its peak of visibility: version 2.8, a rewritten manual in several formats, a beginner’s tutorial with code examples, a project website with an FAQ, a proposed standard library, and interpreter builds distributed for a wide spread of then-current platforms - reportedly including MS-DOS, Macintosh, Amiga, Windows, Linux and Solaris - with a Glk port newly completed to make future ports easier. Developer support, unusually, was the author answering email directly.

Work on a successor reportedly began in the early 2000s, and ALAN 3 appeared around 2005 and superseded version 2. It kept the declarative surface but added a real object model underneath - classes with single inheritance, instances, events and rules. What followed was an unusually long beta period: rather than declaring a 3.0 release, the project moved through a long alpha and then a numbered beta series, with the maintainer stating that no incompatible changes were planned before release. Alan 3.0 Beta 8 was announced in September 2021, adding UTF-8 support alongside the ISO 8859-1 encoding the system had required until then. As of mid-2026 it remains the current release.

In July 2019 the source moved from Bitbucket to GitHub, where the compiler, interpreters, standard library, documentation and example collections now live under the alan-if organisation, published under the Artistic License 2.0.

Design Philosophy

The reference manual states the guiding principle plainly: it should be very easy to do common things, but it should also be possible to do more complicated things. Everything else in ALAN follows from that.

Describe, don’t implement. An ALAN source file is a set of declarations. The author states that a location exists, what it looks like, and which exits lead where; that an object is in it and is takeable; that an actor walks a script. The runtime supplies the parser, the world model, the default verb behaviours and the standard failure messages.

Defaults everywhere. Almost every construct is optional and has a sensible default. A location with nothing but a description is a valid location. This is what makes the language usable by non-programmers - the floor is very low, and complexity is opt-in.

Readable source. The syntax is deliberately close to English, with declarations reading as sentences and every construct terminated by a full stop. Source is meant to be readable by the author six months later, and by other authors reading published games.

Strictly typed and compiled. Beneath the friendly surface, ALAN is a strictly typed, compiled, object-oriented language with single inheritance. The compiler catches a large class of errors before the game ever runs - a deliberate trade against the flexibility of a dynamic system, on the theory that an author who is not a programmer benefits most from being told exactly what is wrong.

A game file, not a program. The compiler produces a compact, portable game file that the interpreter runs. Distribution is the game file alone; players never need the compiler, and the same file runs on every platform with an interpreter.

Key Features

The core vocabulary is small. A location looks like this:

The kitchen IsA location
  Description "A cramped kitchen. The smell of yesterday's dinner still hangs in the air."
  Exit east to hallway.
End the kitchen.

IsA names the class an instance belongs to; location is one of the built-in classes. Every construct ends in a period, and a declaration is closed with an End statement.

Beyond locations, the language provides:

ConstructPurpose
OBJECT / instancesThings in the world, with attributes and container behaviour
ACTORCharacters, including the player character HERO
VERBWhat a player action does
SYNTAXThe command patterns that map player input onto verbs
CONTAINERObjects that hold other objects, with capacity limits
EVENTSomething scheduled to happen at a future turn
RULEA condition that is checked each turn and fires when true
SCRIPT / STEPMulti-turn sequences that drive actor behaviour
ADD TO / EVERYExtending an existing class, or applying a declaration across a class hierarchy

Attributes can be boolean, numeric, string, event-valued or reference-valued, and are inherited from superclasses. The ALAN 3 object model supports classes, inheritance, instantiation and polymorphism, so an author who does outgrow the declarative surface has somewhere to go.

The parser handles the conventions players expect - multiple objects, all except, disambiguation - without the author writing any of it, which is a large part of why the system remains usable by beginners.

Toolchain and Platform Support

The system ships as a compiler plus an interpreter. The interpreter is called Arun; the ALAN 3 compiler produces a game file that Arun executes. Alongside the command-line interpreter, the project’s own build produces a Glk-based interpreter (requiring the Glk library), a Gargoyle plug-in so ALAN games play in the standard multi-format interpreter alongside Z-machine and TADS games, WinArun - a Windows Glk-based GUI interpreter - and WinAlan, a Windows front end for the compiler. A v2-to-v3 source converter is included for authors migrating older games.

The repository documents building on Cygwin, MSYS2 (native Windows, 32- and 64-bit), Linux including WSL, and macOS/Darwin, with cross-compilation to Windows possible given the right toolchain; platforms outside that list are not covered by the project’s own build instructions. Additional pieces exist around the core: an integrated development environment (AlanIDE), a map generator, and the standard library and example collections. The project maintains a unit-test suite (requiring Cgreen) and a regression-test suite (requiring a Java runtime), and the maintainer has said he relies on that automated testing rather than manual checks when packaging releases.

Evolution

VersionApproximate periodCharacter
ALAN 11985 - early 1990sOriginal design; declarative world description
ALAN 2around 1993 - 2005The widely distributed version; interpreter builds for many platforms by 2.8, Glk port, first standard library, most archived games
ALAN 3around 2005 - presentClasses, inheritance, instances, events and rules; long alpha and beta series; UTF-8 in Beta 8

The trajectory is unusual. Most hobby IF systems either stop dead or get rewritten by a successor community; ALAN has instead been carried by its original author across four decades, adding an object model without abandoning the declarative surface that was the point of the language in the first place.

Current Relevance

ALAN today is a small, quiet, still-living project. Beta 8 has stood as the current release since 2021, continuous integration builds development snapshots, and games still appear - Anssi Räisänen, who maintains the standard library, entered Temptation in the Village, an adaptation of an unfinished Kafka work, in IFComp 2025. The community is measured in dozens rather than thousands: the GitHub repositories carry a few dozen stars between them, a community-compiled 2022 list counted roughly 60 ALAN games on IFDB, and most support still flows through the author and a small group of long-time users.

Anyone choosing an authoring system in 2026 will almost certainly land on Inform 7, TADS 3 or Twine, all of which have larger communities, more documentation and more actively maintained libraries. ALAN’s argument is narrower and still valid: if what you want is to describe a world in something close to English, with a compiler that catches your mistakes and a runtime that supplies the boring parts, it does that with less ceremony than anything else.

Why It Matters

ALAN is the clearest example in interactive fiction of a genuinely declarative authoring system. Inform 7 later became famous for natural-language source, but its readability sits on top of a full programming model that authors eventually have to confront. ALAN started from the other end: the language is the world description, and the programming model was added underneath, decades later, only when authors pushed against the edges.

It is also a case study in single-maintainer longevity. A language designed in 1985 by two people, still compiled and released by one of them in the 2020s, with its original test adventure still in the regression suite, is rare in any part of software. The version numbering never quite caught up - a 3.0 that has been in alpha or beta since the mid-2000s is a fair joke at the project’s expense - but the code builds, the games run, and authors with no programming background have shipped complete works in it. For a language whose entire purpose was to let non-programmers write adventures, that is the measure that counts.

Timeline

1985
Thomas Nilsson - who now goes by Thomas Nilefalk - and Göran Forslund design the first version of ALAN in Sweden. The adventure Saviour dates from the same period and has been used as a test game for the system ever since
1993
ALAN version 2 is released around this time, the version that carried the system through its most visible decade and whose compiled game files became the format most archived ALAN adventures use
1996
ALAN adventures start appearing in the Annual IF Competition, beginning with Don't be late!, which placed 22nd of 26 entries - the point at which the system became visible to the wider interactive fiction community rather than just its author
1999
ALAN has reached version 2.8, with a rewritten manual and beginner tutorial, a project website and a proposed standard library. Interpreter builds distributed through the IF Archive around this period reportedly covered MS-DOS, Macintosh, Amiga, Windows, Linux and Solaris, with a Glk port newly completed
1999
Two ALAN games enter the 5th Annual IF Competition - The HeBGB Horror!, which placed 16th of 37, and King Arthur's Night Out, which placed 22nd - the strongest showing the system has had in a single competition
2005
ALAN 3 appears and supersedes version 2, adding classes and inheritance, instances, events and rules to the declarative core. The new line then spends an unusually long stretch in alpha and beta rather than reaching a numbered final release
2014
Robert DeFord's The Wyldkynd Project, his second ALAN game, finishes 6th of 10 entries in Spring Thing 2014
2015
Robert DeFord enters Onaar in IFComp 2015, where it finishes 16th of 53 entries - one of the largest ALAN games written and a demonstration that the system could carry a substantial modern work
2019
On 30 July the ALAN source code and documentation move from Bitbucket to GitHub, consolidated under the alan-if organisation along with the standard library, the documentation and the example collections
2021
Alan 3.0 Beta 8 is announced in September, adding UTF-8 support alongside the previously required ISO 8859-1 encoding and more complete checking of container limits. The reference manual carries a matching Beta8 revision dated 17 December 2021, and this remains the current release

Notable Uses & Legacy

Onaar, by Robert DeFord

A large ALAN 3 adventure entered in IFComp 2015, where it placed 16th of 53 entries. DeFord had already entered The Wyldkynd Project in Spring Thing 2014, finishing 6th of 10, and the pair are the most substantial modern demonstrations of what the system can carry.

The ALAN Standard Library

A community-maintained library, developed by Anssi Räisänen and published on GitHub as AlanStdLib, that supplies the default verbs, classes, messages and location handling an adventure needs. It removes the need to implement the ordinary player commands - take, drop, examine, go - from scratch, and is the practical starting point for new ALAN 3 games.

IF Competition and Spring Thing entries

ALAN games have been entered in the annual competitions since the mid-1990s, including Don't be late! by Greg Ewing (1996, 22nd of 26), Leaves by Mikko Vuorinen (1997, 29th of 34), CC.. also by Vuorinen (1998, 18th of 27), and The HeBGB Horror! and Vuorinen's King Arthur's Night Out in 1999. The system has never dominated a competition, but it has stayed in the field for three decades.

Temptation in the Village, by Anssi Räisänen

An adaptation of an unfinished work by Franz Kafka, entered in IFComp 2025 - evidence that new ALAN work is still being written and released decades after the language was designed, largely by the same small group that maintains the tooling.

Saviour, the long-running test adventure

A traditional adventure dating from the language's earliest period that has, according to the project, served as a test game for the ALAN system ever since. It is unusual for a hobby language to keep one of its earliest programs as a live conformance check across three major versions of the compiler and interpreter.

Running Today

Run examples using the official Docker image:

docker pull
Last updated: