On this page:
5.1 Account Reference
account
5.2 Engine Reference
engine-start
engine-options
5.3 Quest Reference
5.3.1 The Quest language
world
zone
5.3.2 Using Quest as a module
load-quest
world?
zone?
7.8

5 Reference

    5.1 Account Reference

    5.2 Engine Reference

    5.3 Quest Reference

      5.3.1 The Quest language

      5.3.2 Using Quest as a module

5.1 Account Reference

 (require rilouworld/account) package: rilouworld

struct

(struct account (name zone))

  name : string?
  zone : symbol?
A local player’s account is made of a name and a zone identifier which represents the current zone of the world the player is in.

5.2 Engine Reference

 (require rilouworld/engine) package: rilouworld

procedure

(engine-start options world account)  any/c

  options : engine-options?
  world : world?
  account : account?
Start the game engine with options defining the width, height, and title of the window, loading a given local world using account as the player.

struct

(struct engine-options (width height title))

  width : integer?
  height : integer?
  title : string?
Define width, height and title of the main game window, when passed to engine-start.

5.3 Quest Reference

 #lang rilouworld/quest package: rilouworld

The Quest language is a DSL for writing game worlds in Rilouworld. You’ll find below the complete description of the language.

For an easy introduction to it, you might want to read Introduction to the Quest language.

5.3.1 The Quest language

 #lang rilouworld/quest package: rilouworld

syntax

(world (name world-name)
       (uuid world-uuid)
       (version world-version)
       (description world-desc)
       (changelog change-expr ...)
       (authors author-expr ...)
       (resources resource ...)
       (zones zone ...))
 
change-expr = 
(change (version change-version)
        (date change-date)
        maybe-breaking
        change-desc)
     
maybe-breaking = (breaking)
     
author-expr = (author maybe-section author-name)
     
maybe-section = 
  | (section section-name)
 
  world-name : string?
  world-uuid : string?
  world-version : string?
  world-desc : string?
  change-version : string?
  change-date : string?
  change-desc : string?
  author-name : string?
  section-name : string?
  resource : resource?
  zone : zone?
Create a new playable world.

syntax

(zone zone-id
      (name zone-name)
      (map zone-map)
      (type zone-type)
      (rectangles rectangle ...)
      (actors actor ...))
 
zone-type = inside
  | outside
 
  zone-name : string?
  zone-map : path-string?
  rectangle : rect?
  actor : actor?
Declare a zone of your world with a unique identifier zone-id in which actors can exist.

5.3.2 Using Quest as a module

 (require rilouworld/quest) package: rilouworld

You can require the Quest language as a module in your code in order to manipulate actors, load, save and verify quest files.

Using Quest as a module will not execute the language, generate worlds or actors, it’ll just give you access to useful tools to handle quest files.

procedure

(load-quest path)  (or/c world? zone?)

  path : path-string?

procedure

(world? v)  boolean?

  v : any/c

procedure

(zone? v)  boolean?

  v : any/c