1.0.11 • Published 2 years ago

frotzer v1.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Frotzer

badge badge badge badge

This is a minimal but yet complete javascript wrapper of dumb frotz (dfrotz) running on Node.js. Frotzer is packaged as a module exposing its API via a single class. When the installation is launched, the latest dfrotz C code is automatically downloaded from the Frotz official repository and compiled at installation time in the module directory.

Frotzer's main use is the creation of bots or testing enviroments for Inform6/Inform7 games and the development of their web frontends.

Getting Started

Dependencies

  • GNU Linux (e.g. Ubuntu, etc.) or MacOS (note: no Windows)
  • Underscore.js (installed automatically by npm)
  • dfrotz (code automatically built at installation time from the official git repository)

Installation

To use Frotzer in your Node.js project, run:

npm i @bitbxl/frotzer

Usage

Frotzer's behaviour is driven by a set of options that can be passed via the constructor. A typical (short) workflow with the Inform6 demo adventure (Ruins) using default options:

const {Frotzer} = require('@bitbxl/frotzer');

let frotzer = new Frotzer({storyfile: 'Ruins.z5'});

(async () => {

  let responses = await frotzer.start();
  // responses contains:
  // ['[Please press SPACE to begin.]', 'Days of searching, days of thirsty
  // hacking through the briars of the forest, but at last your patience was
  // rewarded. A discovery! (etc...)']

  let responses = await frotzer.command(['look', 'inventory', 'pick mushroom']);
  // responses contains:
  // [Or so your notes call this low escarpment of limestone, but the rainforest has
  // claimed it back. Dark olive trees crowd in on all sides, the air steams with the
  // mist of a warm recent rain, midges hang in the air. (etc...),
  // 'You're carrying: Waldeck's Mayan dictionary a sodium lamp a sketch-map of
  // Quintana Roo', 'You pick the mushroom, neatly cleaving its thin stalk.]

  let responses = await frotzer.save('myGame.qzl');
  // responses contains:
  // ['Please enter a filename [Ruins.qzl]:', 'Done']


  let responses = await frotzer.quit();
  // responses contains:
  // ['Are you sure you want to quit?', '<END>']

}

More information on how to use Frotzer is in the API Documentation.

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago