Favella · v1.4.4

FAVELLA 1

An interactive fiction engine you program in Italian.

Available Universo Favella License MIT Windows · Linux · macOS
FAVELLA 1

Preview

Scroll ↓

What it is

FAVELLA 1 is an interactive fiction engine in which the code is an Italian sentence: you write «La cucina è una stanza.» and the kitchen exists. Definitive version 1.4.4: language, engine, manual and site stay as they are.

FAVELLA 1 is a game engine for interactive fiction that lets you create worlds by writing simple sentences in Italian. It was born as an experiment, with an ambitious mission: to make the development of text adventures accessible to everyone, especially writers and game designers, using the Italian language as a real programming language. Code is prose: if you can describe a scene, you can program it.

There are no curly braces to balance and no semicolons to remember: you write «La porta di ferro è chiusa.» and that sentence, as it is, becomes a rule of the world. Beneath the prose there is real engineering: a two-pass compiler with an LALR(1) parser, unambiguous by construction, protected by 1180 language tests and 50 check tests. The engine is written in Python, with a single dependency.

It is a finished project. Version 1.4.4 is the definitive one and will not be modified again: stories written today will run the same in ten years. The repository stays open under the MIT licence, as a reference for anyone who wants to learn, pick up the work or take it somewhere else. Favella Studio is its writing home.

Features

01

Italian is the language

FAVELLA 1 was born from a twofold passion: for interactive fiction, in the wake of Zork and the text adventures of Infocom, and for programming languages. For years the reference point of the field has been Inform 7: powerful, but tied to English and to a syntax that intimidates anyone who is not a programmer. The idea of an Italian alternative, intuitive and modern, stayed in a drawer for a long time.

The insight is radical in its simplicity: what if Italian were not used to comment the code, but were the code itself? The project's cover promise is exactly this: your code is a story.

A room
La prigione è una stanza.
A description
La descrizione della prigione è «Una cella umida con una porta di ferro a nord.».
An object
La chiave arrugginita è prendibile.
A beginning
Il giocatore comincia in prigione.
A rule
Invece di apri la porta di ferro se il giocatore ha la chiave arrugginita: dire «La porta si apre!».
02

What the language can do

With version 1.0.0 the language was declared complete: every construct had found its place. Afterwards, the 1.x versions only added things, without touching what worked. The result is a world that behaves as if alive.

Rich Italian
Plural copula, genitives and partitives, articulated prepositions, reliable accents in names. Custom verbs even of several words, and synonyms for every verb.
Conditions and rules
Instead of, Before and After rules, with «otherwise»; compound conditions with and, or and not, even in parentheses; two-object actions such as «use the key on the door».
A living world
States and counters, timed events, daemons (rules that fire by themselves), dark and light, characters that walk, branching dialogues, pronouns and anaphora, Undo and Again.
Counters talk to each other
A quantity can be a number, the value of another counter or a random draw: «reduce the life by [strength]», «by a number between 2 and 6», and dynamic comparisons between quantities.
Authorial chance
A random choice among state values, «the weather becomes one of clear, rain, fog», and a probabilistic condition, «Every turn if it happens (1 in 4)». Everything is reproducible and undoable.
The world that changes on stage
Switchable darkness, «the clearing becomes dark» or «lit», and conditional lines of dialogue.
State talks to state
Indirection between states: one state is copied into another, «the courted becomes the favourite», and compared, «if the courted is the same as the favourite».
Initial place
An ambient sentence that introduces an object until nobody has moved it, then disappears.
What stays out
The themes of quantities with plurals and entity templates are deliberately left out: simplicity for the author is a feature, and a stock can already be expressed as a counter.
03

For the player

A story is played by typing commands («examine the little table», «go north», «take the key»), or by tapping. With verb buttons, in the exported page and in the website's cassettes, you build the sentence by tapping a verb, an object and, if needed, a second object: «Give», then «Apple», then «to the guard». The buttons propose only what the player already knows, and verbs invented by the author appear after the player has found them by typing.

The author chooses with a sentence: «I comandi si scrivono.» (text only), «I comandi si scelgono con i pulsanti.» (buttons only); the default is both. Typos do not consume turns, «exit» does not close the game by mistake, and the engine knows everyday verbs: open, close, turn on, turn off, eat, drink, wait, «take all», and the directions up, down, northeast.

You save and load with «salva mattina» and «carica mattina», wherever the engine runs: the game is rebuilt by replaying the commands, and a fingerprint of the state checks it.

04

How to install it

Since version 0.29.0 FAVELLA has been distributed as a cross-platform installer: you download the one for your system from the latest release on GitHub, and there is no need to clone the repository or install Python. The executables are not signed: at first start you accept the SmartScreen warning on Windows or the Gatekeeper warning on macOS.

Whoever has Python 3.10 or later can instead install the package from PyPI with «pip install favella1», which brings the standard module library and the story gallery with it.

Windows
Installer favella1-setup-…-windows-x64.exe, which creates shortcuts in the Start menu.
macOS
favella1-…-macos-arm64.dmg image for Apple Silicon: drag the folder into Applications.
Linux
favella1-…-linux-x86_64.AppImage file: make it executable and launch it.
pip
pip install favella1, then «favella1 versione» to check.
05

Command-line tools

After installation the «favella1» command does everything: you play a story, open the lab in the browser, check it, export it.

favella1 gioca storia.fav
Plays a story.
favella1 playground
Editor and engine in the browser, even offline.
favella1 compila storia.fav
Diagnostics only: reports errors and warnings without playing.
favella1 collaudo storia.fav
The static checker. With --finali it says which endings can be reached by playing.
favella1 esplora storia.fav
Random games: reports anomalies and coverage, that is where the story breaks.
favella1 esporta storia.fav
Generates a single playable, shareable .html file, with the story and the engine.
favella1 galleria · libreria
They list, play and copy the gallery's stories and the library's modules.
06

A gallery and a library

The package brings three short, complete and winnable adventures, with commented source: they are for having fun in five to ten minutes and for learning by reading how they are made. For something bigger there are the official demos, such as «Il Relitto Silente», science fiction in 15 rooms, and «La Casa di Via Stradivari», the manual's guide story.

The standard library collects .fav modules to include with «Includi», ready-to-use vocabulary that recurs in almost every adventure, so it does not need rewriting every time.

Il Faro Spento
Five minutes, atmospheric mystery: relight the lantern at the top of the lighthouse before the ship crashes on the rocks.
Il Giardino Murato
Ten minutes, fairy tale and riddle: you do not leave this garden with keys, but with a gift.
Il Forziere dei Tre Sigilli
Ten minutes, gothic riddle: gather the three seals hidden in the castle and open the iron chest with three recesses.
sinonimi.fav
Synonyms of library verbs, such as «scruta», «arraffa», «spalanca».
proprieta.fav
Pairs of common opposite properties, such as broken and intact, wet and dry.
verbi.fav
Action verbs the engine does not know by itself: «brucia», «scava», «bussa», «salta».
07

To learn

The language has its own Programming Manual: twenty-one chapters, 95 pages in the third edition, which tells every construct with a story example from beginning to end. The PDF is free, and there is also the paper edition on Amazon; their pages, and that of the Favella Studio guide, are linked below.

The official website favella.eu also offers an interactive course, in homage to the cassette programming courses of the early Eighties: twenty-one «cassettes», one per chapter of the manual, in which, when a lesson asks for a sentence, it is the real engine that compiles it. And the lab «Programma con FAVELLA 1»: the real engine, running in the browser, you write on the left, press «Compila e gioca», test on the right, and read the compiler's authentic errors with the line number.

08

Reliable by construction

The grammar is LALR(1) and unambiguous by construction: the compiler works in two passes, first a symbol table that collects the names of rooms and objects, then parsing with those names as closed tokens. Italian stays natural, but the grammar stays deterministic. A permanent anti-ambiguity guard, in the test suite, checks that no sentence of the corpus has more than one tree.

The suite counts 1180 language assertions and 50 for the static checker, all green, plus 425 pytest tests. The latest versions came from sweeping checks: 1.4.3 from a fuzz of 1520 commands and the eleven suites of Il Viaggiatore, 1.4.4 from an error reported at the wrong line, found while writing the Favella Studio guide.

09

How it grew

The language grew by levels, starting from a small subset of Italian. The latest stages, in order:

1.0.0
The language is declared complete, after the eight levels of the roadmap, the living world and the four themes.
1.2.0
Save and load, the check that plays, synonyms for authors' verbs: all of it came out of writing a real game, Il Viaggiatore.
1.3.0
Resolves all the issues of a critical analysis: typos do not consume turns, new verbs and directions, «give the apple to the guard», conditional texts, title and prologue.
1.4.0
The verb buttons, and the engine emitting a stream of typed events instead of writing with print().
1.4.1 and 1.4.2
Four defects found while playing Il Viaggiatore; «use the key to open the trapdoor», «use the key and open the trapdoor» and «open the trapdoor with the key» all count as «use the key on the trapdoor».
1.4.3 and 1.4.4
Three defects found by a fuzz of 1520 commands; the right line for errors, on 6 October 2026: the definitive version.
10

Its home and its companions

Favella Studio is the visual writing environment of FAVELLA 1: an application for Windows and Linux with the engine inside, which shows as panels what the language writes as sentences. Il Viaggiatore is a real game written in FAVELLA, with its own repository and releases: the language's biggest features, from saves to the check that plays, were born while writing it. Both, with the manuals and the guide, are pages of this universe, linked below.

11

A finished project

FAVELLA 1 is finished. Version 1.4.4 is the definitive one and will not be modified again: language, engine, manual and site stay as they are. The repository is public, under the MIT licence, as a reference for anyone who wants to learn, pick up the work or take it somewhere else. No contributions to the language are expected.

The project was not written in solitude, but in constant dialogue with an artificial intelligence: a development partner with whom to define the specifications, explore the design of the grammar, generate code and refactor. A hybrid approach that leaves vision and decisions to the human author, Simone Pizzi, and speeds up everything else. The project's official home is favella.eu.

Technical sheet

Version
1.4.4 (definitive)
License
MIT
Platforms
Windows · Linux · macOS
Installers
Windows x64 (.exe) · macOS Apple Silicon (.dmg) · Linux x86_64 (AppImage)
Package
pip install favella1 (Python 3.10 or later, on PyPI)
Engine
Python, with desktop interface · single dependency: lark
Grammar
LALR(1), unambiguous by construction
Testing
1180 language assertions · 50 for the checker
Language
Italian
Manual
21 chapters, 95 pages · third edition
Status
Finished: it will not be modified again
Official website
favella.eu
Status
Available

Available

Ready to try it?

Get it from the releases page, with the source open.

Other versions: macOS (Apple Silicon)

In the same category