Skip to content
/ ifhttp Public

👾 HTTP REST server for Z-Machine interactive fiction

License

Notifications You must be signed in to change notification settings

statico/ifhttp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ifhttp

license build status

ifhttp provides an HTTP REST interface for interacting with Z-Machine interactive fiction (IF) stories (typically .z8 files). Clients can connect to the service to start a game and then POST commands to it. Sessions are deleted after a while in a feeble attempt to save memory. This service is definitely DoS-able.

See a live example on https://www.langworth.com/

Usage

$ docker pull ghcr.io/statico/ifhttp
$ docker run -p 8080:8080 -v /path/to/stories:/data ghcr.io/statico/ifhttp npm run -s start -- /data/story.z8

API

All request and response bodies should be JSON. In addition to a status code, requests may return a JSON object with an error property which describes the error.

GET /new

Returns a session ID for a new game.

Response:

{
  "session": "<id>",
  "output": "<text>"
}

POST /send

Sends a command to the game.

Request:

{
  "session": "<id>",
  "message": "<user input>"
}

Response:

{
  "output": "<text>"
}

Reference

  • Inform - IF creation toolsuite
  • ifvms - JavaScript Z-Machine VM used by this script
  • ifplayer - Command-line client which uses ifvms