corewars-js
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.5 • Public • Published

    MARSjs

    This is a JavaScript implementation of the game Core Wars. It consists of:

    1. A parser for the Redcode assembly language, written in Ohm.

    2. A MARS virtual machine, written in TypeScript and exposed as a JS module runnable either in the browser or on the server.

    In its current form, it implements the ICWS-88 standard, although optional support for ICWS-94 is on the roadmap.

    This is a work-in-progress. More documentation is coming soon.

    Some test scripts

    yarn test parses and runs validate.rs in a VM. validate.rs is a script (by another author) that validates whether a Redcode VM properly implements the ICWS-88 spec. If you run yarn test, it should loop infinitely (or until it reaches the cycle limit) which means this project is compliant with the spec! 🎉

    Parser

    As mentioned, the parser is written in Ohm. The grammar lives in redcode.ohm, and parser.ts contains a valid Ohm semantics expression (toMarsJSObject()) that targets the JSON format expected by the VM.

    parser.ts exposes very few objects/functions:

    • grammar: An Ohm Grammar object, generated using the aforementioned redcode.ohm

    • semantics: An Ohm Semantics object that operates on the previous grammar, defining a single toMarsJSObject expression

    • parse(text: string): Instruction[] takes in a string of valid Redcode, and outputs an array of Instruction objects readable by the VM.

    VM

    For now, you likely want to just look at mars.ts for documentation or main.ts as an example.

    Tl;dr, a VM object takes in an array of Instruction objects, and optionally a memory size and max number of cycles.

    tick() executes a single instruction, exiting early and returning false if a player has lost (and returning true otherwise (not currently returning any information, other than a console log, about the failure).

    print() is a helper function that outputs a pretty debug version of the current state of the game world.

    Keywords

    none

    Install

    npm i corewars-js

    DownloadsWeekly Downloads

    1

    Version

    0.0.5

    License

    MIT

    Unpacked Size

    41.4 kB

    Total Files

    20

    Last publish

    Collaborators

    • lazerwalker