Skip to content
Joseph edited this page Apr 2, 2020 · 6 revisions

Motivation

Scalu is an event based programming language that exists for the purpose of building sandboxable scripts that run on Source engine clients. Scalu features three key features that separate it from simply writing to a configuration file manually.

Bind Resolution

The Scalu language enforces a particular convention for binding keys. Keys are bound to events, and then events are bound to services. This has many beneficial properties. Firstly, scripts no longer concern themselves with binding keys directly. For instance, the enduser decides what key they want to associate with "move forward". Scripts interested in the "move forward" event can then add services to that event without knowing what key "move forward" is associated with. Additionally, since events are abstracted away from the actual key binding, multiple scripts can target the same event with different service calls without any knowledge that the other exists. All Scalu scripts that follow convention will automatically be compatible with each other.

Computation

The Scalu language explicitly separates concerns about key binding with manipulating aliases to produce logic. Services not only execute actual Source commands, but also expose a small programming language, complete with actual numeric variables, conditional statements, addition, subtraction, lookup tables, and several other features. Everything done in a service is sandboxed from other services to maintain consistency and compatibility.

Safety

The Scalu language is explicitly designed around the goal of runtime safety; specifically, all scripts must terminate. This makes accidentally creating a script that causes the environment to hang much more difficult than it would otherwise be.

Clone this wiki locally