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?
8.16

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