Design

Summary of goals

A responsive, mobile-friendly, HTML5+Json interface.
Collaborative editing of the game by automatically qualified users.
Multiple levels of sandboxing, and a workflow for code approval and migration to higher security clearance.
A social environment that encourages experimentation, but leverages the masses to evaluate the gameplay quality of user-written modules.

Visit (and edit!) the goals page for details on desired features

Roadmap

The two platforms that meet the requirements (dynamic, serializeable continuations, and sandboxing) are currently Rhino and Lua.

The Lua based approach is currently being developed at the weaver-lua repository on github Milestones 1, 2, and 6 have been accomplished.

Read the resources page, specifically the platforms page for exhaustive information and links on why your favorite language will (or won't) work.

Two plans, one on each technology stack, are being defined.

  • Plan A defines the roadmap for the Rhino-based system
  • Plan B defines the Lua-based appraoch.

Feature list (for Milestone reference)

  • Script execution
  • STM/Copy-on-write to allowing easy branching of the world.
  • Weaver synax support - Allows logic-light modules to be implemented without understanding of coding.
  • Visual coding support - drag-and-drop graphical coding
  • World branching support (requires copy-on-write implementation)

Milestones

Milestone 1

Script storage: Filesystem
Syntax: No extensions.
Execution: No sandboxing, all scripts loaded in memory.
Data storage: Only continuations provide any kind of state.
Editing: No support.
API: Display interaction only.

Milestone 2

Execution: Load only scripts that are needed

Milestone 3

Execution: Allow granular sandboxing

Milestone 4

Storage: Unify script and data storage in a tree-like data structure. Sandboxing permissions (for both data and scripts) and merging hints could exist as a metadata fork.

Milestone 5

Syntax: Add support for simplified syntax

Milestone 6

Add support for web-based editing.

Gameplay

This engine is designed to support multiple 'worlds', but drafting one or more worlds is extremely important, so we have a rich set of usage scenarios to keep in mind as we design APIs.

Help design the gameplay