Tartarus

2019

Tartarus is a web based MUD like environment. Users connect to a persistent world of interactive programmable objects via a webapp frontend. Interaction with the environment is mediated through a text based interface.

Like works of interactive fiction, exploration and interaction within the world are based around text which informs the player about their surroundings and the possible actions they may perform. Building upon this, due to the dynamic programmable nature of the environment far more complex narrative systems can be defined than are possible with traditional graph based interactive fiction tools.


A Tartarus world consists of a large complex of rooms. Inside each room are objects, which have various properties and behaviors which can be edited by players. Players also inhabit rooms, and interact with adjacent objects through text commands which let them send messages to these objects. In true object-oriented style Tartarus objects can receive these messages and act on them accordingly, allowing them to reactively modify themselves, create or modify other objects in the room, or even players/rooms.

This system is in essence an implementation of an old-school dynamic MOO. Tartarus though, was designed to be a modern peer to these older tools; it uses contemporary web technology to enable better accessibility (everyone has a browser, a Telnet client, less so) and moreover leverages modern browser capabilities to provide a richer and more interactive interface than archaic MUD/MOOs.

Tartarus was also heavily inspired by Devine Lu Linvega’s Paradise, as well as Erik Svedäng’s Else Heart.Break().


The original implementation of Tartarus was completed in 2019. It’s written in Ruby using the Sinatra framework, and a little Javascript for the frontend. The Tartarus server supports realtime user commands and object editing using a websocket API.

The in-game scripting language is a small stack-based concatenative language that uses a Smalltalk/Erlang-esque message passing system to facilitate communication between in-game objects. The interpreter for this language is a small AST Tree-Walker constructed from OO principals, and is admittedly quite slow (not to mention kinda buggy), but it gets the job done.

Tartarus worlds have a permission/ownership model vaguely similar to that found in UNIX systems. This enables users to protect their rooms and objects from unwanted tinkering or griefing by third parties.


Give Tartarus a try!

Check out the code