Salet presentation

Here’s Salet, a new open source cybertext in-browser IF engine. It’s actually Undum refactored and rewritten in CoffeeScript with some bits of Raconteur sprinkled in. The result is something radically new.

Click to play

If you are familiar with my recent games, the house style won’t be a big surprise. It has a strong focus on exploration and free jumping between your text passages. It’s silent about character qualities but that’s more because of an UI problem, not a definite design decision.

But you won’t get much information looking at the compiled game. The real changes are under the hood.

The goal of Salet is to take an object-oriented approach to in-browser choice-based IF game building and run wild with it. This is a stripped source code for this room:

room "plaza", salet,
  title: "Town plaza"
  ways: ["shop"]
  before: (system, from) ->
    if from == 'world'
      """
        You climb up the well and come out to a central plaza of a quaint little town.
        A plaque nearby says it's the town of *Innsmouth,* wherever that is.
      """
    else
      "You quickly find the central plaza."
  objects: [
    obj "people",
      dsc: "There are {{people shouting}} nearby."
      act: 'Just some weirdos shouting "Viva la Cthulhu!". Typical.'
  ]

The main idea is to have some sort of a world model, not just a bunch of text passages to play with. Of course, it’s not forcing you to write in object-oriented style, but just you wait until I finish the inventory management.

What’s new?

The list of changes over Undum and Raconteur is big. The stuff that excites me is:

  • I see an IF game compiled of rooms, not just text passages. There are four events for the author to customize when walking between rooms. Also the player has a nice list of obvious exits.
  • The interface is now completely isolated from the game logic. You can run wild with your HTML markup without having to mess about sensitive code.
  • Salet has autosaving. It’s on by default.
  • Instead of plain text links, you can define objects. That’s not just a fancy glue between the link and its action, it has power.
  • The localization engine does functions now. I use it just as an alternate syntax for Undum’s variable substitution but heck, maybe you want to support Japanese players and break out all the big guns.

Here’s a wiki, and the engine source repository is also an example game.

Contributions and early adopting are welcome.

I’m also keeping a list of bugs and planned features. The general plan is just to make more games and push the engine in that direction.

Short version: an alternative take on Undum! It’s cool! I’m using it to do more weird web hypertext games. Stay tuned.