Story Teller

License

The Story Teller for Ruby is a command-line interface software runtime program for playing interactive-fiction games which use the Inform 6 Ruby Port.

The Story Teller is intended to be used to play a game specified by a path to a directory or file. The game file or directory specifies the source code for a game file written using the Inform 6 Ruby Port.

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

Install the latest version of PostgreSQL.

mise use postgres@latest
mise install

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!