The language that just runs

Simple.Sharp.Useful.

MAKO is a small programming language for scripts, tools, games, and engine-side experiments. It runs with mko and has a planned Modularity profile called ModuMAKO.

What MAKO is

Small language. Real runtime.

MAKO is not trying to be C++, Rust, Unity, or Unreal. It is trying to be easy to read, easy to type, and useful enough to make real things without fighting boilerplate.

No ceremony

Write a .mko file, run it with mko, and get moving. No project setup required.

Made for tools and games

MAKO has packages for 2D, 3D, input, audio, UI, HTTP, and engine experiments.

Built-in JSON

Encode and decode dicts, lists, strings, numbers, booleans, and none without imports.

Safe HTTP

using Net gives you requests, headers, JSON helpers, and clean failure handling.

Command-line ready

args() makes MAKO useful for scripts, tools, test runners, and automation.

Testable

mko test runs every .mko file under tests/ and catches regressions before they ship.

Example

It reads like a script.

MAKO keeps the surface simple: functions, loops, dicts, lists, packages, and clear names. The engine and tooling pieces stay behind the API.

game.mko

using Mako2D;
using Inputs;
using Audio;

main() {
    Mako2D.init(800, 600, "MAKO Demo");
    Mako2D.fps(60);

    beep = Audio.tone("square", 440, 0.1);
    x = 400;

    while Mako2D.running() {
        dt = Mako2D.delta();

        if Inputs.key_down("RIGHT") {
            x = x + 300 * dt;
        }

        if Inputs.key_pressed("SPACE") {
            Audio.play(beep);
        }

        Mako2D.begin();
        Mako2D.clear(Mako2D.BLACK);
        Mako2D.circle(x, 300, 24, Mako2D.SKYBLUE);
        Mako2D.end();
    }
}

Packages

Batteries included, but not bloated.

MAKO keeps the language core small and grows through packages. Use what you need, ignore what you do not.

Ma

using Mako2D;

Sprites, shapes, Camera2D, text, and 2D game loops.

Ma

using Mako3D;

Cameras, primitives, models, raycasts, and 3D demos.

In

using Inputs;

Keyboard, mouse, cursor, and gamepad helpers.

Au

using Audio;

Sound files, synth tones, music, and positional audio.

Ma

using MakoUI;

Dear ImGui-powered windows, panels, menus, tables, and tools.

Ne

using Net;

HTTP requests, JSON responses, headers, and URL helpers.

Modularity

MAKO has an engine path.

MAKO is the standalone language. Inside Modularity, the engine-focused version is planned as ModuMAKO — MAKO shaped around Modularity’s scripting rules, node metadata, and engine workflows.

The goal is not to replace ModuCPP. ModuCPP can grow into the lower-level compiled language, while ModuMAKO gives Modularity a simple scripting layer for gameplay, tools, editor panels, automation, and quick experiments.

Modularity

ModuMAKO

MAKO syntax, adapted for Modularity.

player_controller.mko

script "PlayerController";
Modu_CODETYPE = ModuNode;

using Modularity;

fn start() {
    log("Player ready");
}

fn update(dt) {
    if Input.key_down("W") {
        self.move(0, 0, -5 * dt);
    }
}
Node scripts
Gameplay logic
Editor tools
Runtime automation
UI panels
Engine experiments

MAKO

The standalone language and runtime for scripts, tools, games, JSON, Net, UI, audio, and graphics experiments.

ModuMAKO

The Modularity-focused MAKO profile with required script metadata and engine-side behavior.

ModuCPP

The deeper compiled Modularity language path, built closer to C/C++ and lower-level engine systems.

Try it while it is weird.

MAKO is alpha software. APIs will move. Names will change. Some things will break. That is the point right now: build fast, test hard, and make it better.