StoryTeller

License

StoryTeller is a runtime layer for use by software programs used to play interactive-fiction games which are built for the Inform 6 Ruby Port.

StoryTeller is intended to simply provide the barest minimum facilities required by the Inform 6 Library Ruby Port software to function in the context of a game play specified by a game directory or file. It does not attempt to replicate a byte code interpreter runtime like frotz.

Install mise-en-place

The mise CLI tool used to manage multiple runtime versions.

See: https://mise.jdx.dev/getting-started.html

curl https://mise.run/zsh | sh
mise --version

Install required runtime software

mise install

Now install the bundler for managing project dependencies.

gem install bundler
gem update --system

Download and install the latest version of PostgreSQL.

Setup

Install some gem dependencies.

bundle update --bundler
bundle install

Run

Execute the inform.rb program. It will play the included example game.

bundle exec inform.rb
Welcome to...

EXAMPLE
An Interactive Example
Copyright (c) 2025 by Nels N. Nelson.
Release 1 / Serial number 251006 / inform.rb v1.0.3 Library 6/11N 

Field
You are standing in a field in front of a small 19th century house which stands just to the east of you. The house hardly stands up to the stiff wind rolling down from the north.
You can see a small toy top here.

>quit
Are you sure you want to quit? yes
[Hit enter to exit.]

Linting

bundle exec rake lint

Testing

bundle exec rake test

Project file tree

Here is a bird's-eye view of the project layout.

# date && tree -A -I "game|logs|vendor|tmp|Gemfile.lock"
Sat Dec 13 22:05:24 CST 2025
.
├── config
│   └── database.yml
├── CONTRIBUTING.md
├── exe
│   └── inform.rb
├── Gemfile
├── inform-runtime.gemspec
├── lib
│   ├── runtime
│   │   ├── articles.rb
│   │   ├── builtins.rb
│   │   ├── color.rb
│   │   ├── command.rb
│   │   ├── config.rb
│   │   ├── context.rb
│   │   ├── daemon.rb
│   │   ├── database.rb
│   │   ├── events.rb
│   │   ├── experimental
│   │   │   └── handler_dsl.rb
│   │   ├── game_loader.rb
│   │   ├── game.rb
│   │   ├── grammar_parser.rb
│   │   ├── helpers.rb
│   │   ├── history.rb
│   │   ├── inflector.rb
│   │   ├── io.rb
│   │   ├── kernel.rb
│   │   ├── library_loader.rb
│   │   ├── library.rb
│   │   ├── link.rb
│   │   ├── logging.rb
│   │   ├── mixins.rb
│   │   ├── module.rb
│   │   ├── object.rb
│   │   ├── options.rb
│   │   ├── persistence.rb
│   │   ├── plurals.rb
│   │   ├── prototype.rb
│   │   ├── publication.rb
│   │   ├── runtime.rb
│   │   ├── session.rb
│   │   ├── snapshots.rb
│   │   ├── stdlib.rb
│   │   ├── subscription.rb
│   │   ├── tag.rb
│   │   ├── tree.rb
│   │   ├── version.rb
│   │   └── world_tree.rb
│   └── runtime.rb
├── LICENSE
├── Rakefile
├── README.md
├── roller2.jpg
├── scripts
│   ├── backup.rb
│   ├── clone.rb
│   ├── delete.rb
│   ├── init.rb
│   ├── rebuild.rb
│   └── restore.rb
└── spec
    ├── game_spec.rb
    ├── inform_spec.rb
    ├── inform_system_spec.rb
    ├── object_spec.rb
    ├── parser_spec.rb
    ├── spec_helper.rb
    ├── verblib_spec.rb
    └── verify_gem_spec.rb

7 directories, 63 files

Thanks!