Running the Server

The Stunt server requires a database to run. A database is a prexisting/persistent set of objects, verbs, tasks, etc. that is loaded into memory when the server starts, and is periodically written back to disk with updates.

You have a few options. Stunt is compatible with popular legacy databases like LambdaCore and JHCore. If you want a modern database that uses all of Stunt's new features, you may want to start with a database built from Stunt.db. And, of course, you can always fire up Minimal.db and roll your own.

Legacy

If you want to go with a legacy database, reread Compling the Server to ensure you built the server correctly and then start the server as per the usual. For example:

moo LambdaCore-latest.db LambdaCore-latest.db.new 7777

Keep in mind that while legacy databases run perfectly, they do not take advantage of Stunt's new features, like anonymous objects and multiple inheritance. And remember, the Stunt database format is incompatible with the old LambdaMOO server, so make a backup of your database before you start!

Stunt.db

Stunt.db is a minimal database, suitable for bootstrapping, that makes use of enough of Stunt's new features to be interesting. This database is really little more than the the Kernel Package installed in a standalone database. It comes with kernel version 1.1.4 already installed. It's an ideal starting point if you want to build your own Stunt optimized database from scratch, but want to use the Stunt package system and packages.

Run the server:

moo Stunt.db Stunt.db.new

Then connect to the running server.

telnet localhost 7777

The database comes with two default players: Wizard and Programmer. Temporary passkeys for both players are output to the console. Look for the lines that contain the phrase "PASSKEY for...". Use the passkeys to connect to the running server (replace the passkey with the appropriate passkey from the logs):

connect 5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8

The functionality present in the Stunt database is pretty minimal. If you're not comfortable eval'ing moocode, you'll want to install a few packages. First, list the packages that are available:

@list packages with $composed

$composed is the reference to the package manager. The command output lists the packages that are installed, as well as additional packages available at stunt.io. The @install command downloads and installs packages (the primitive and core packages contain useful utility objects and verbs):

@install primitive with $composed
@install core with $composed

Improvise

Improvise starts with Stunt.db and then pumps it up on steroids. It's a ready-to-run, web-enabled database built on top of a handful of packages and some off-the-shelf software. It's nowhere near complete, but it is a much better vision of what's coming (and probably a lot more interesting to play with). A partial list of features include:

  • web-based console/command-line
  • web-based database browser
  • web server with Mustache templating
  • full REPL
  • basic player/programmer/wizard hierarchy
  • authentication infrastructure
  • persistence

One notable omission is a VR layer. But then, that's the piece that most people want to/should build on their own (or load in the LambdaCore Package).