Catspeak Reference


Welcome

Welcome to the Catspeak documentation, this page is extremely work-in-progress. See the "Library Reference" tab for the library documentation.

ยง Navigating the Book

ยง Features

If you run into any issues using this project, please create a GitHub issue or get in contact on Discord through the GameMaker Kitchen server.

๐Ÿ“ Minimal Setup Required

  • Self-contained and ready to use after installation.

  • No need to place a persistent God Object in the first room of your game!

โ˜ฏ Seamless GML-Catspeak Interoperability

  • Call GML code from Catspeak.

  • Call Catspeak code from GML.

  • Familiar syntax inspired by GML and JavaScript.

๐Ÿƒโ€โ™€๏ธ Performant Runtime

  • Optimising compiler generates performant code capable of competing with pure GML implementations.

  • At best, Catspeak code will be just as fast as GML.

  • On average, Catspeak code will be 5x slower than GML.

๐Ÿ‘ฝ Cross-platform

  • Implemented in pure GML.

  • No external dependencies or platform-specific DLLs.

  • Mods should work on any target platform. (Tested on VM, YYC, HTML5, and others)

๐Ÿ”จ Customisable, Sandboxed Runtime Environment

  • Modders cannot gain access to parts of your game you don't want them to.

  • Expose only the functions and resources you feel comfortable with.

  • Impossible for modders to execute malicious code by default.

  • Detects infinite loops and recursion so the sly while true { } doesn't freeze your game, whether intentionally or unintentionally.

๐Ÿ’ช Built for Power Users

  • Full compiler back-end documented and available for experimentation.

  • Pre-compile your scripts to JSON, and cache them for later. Skip straight to code generation.

  • Parse your own domain-specific language into Catspeak IR, then let the code generator turn that into a GML compatibile representation:

    • A custom UI language which supports running user-defined functions as button events.

    • A custom data-specification language where certain keywords act as calls to GML functions.

    • A simple shell-script language for a developer console.

    • A custom scripting language for a programming game.

๐Ÿ™€ Cute Name and Mascot

ยง Disclaimer

Catspeak is currently a solo project (by katsaii), and is being maintained in my free-time. However, if you want to make a suggestion or report a bug, please do report it on GitHub and I will try to review it as soon as possible!