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 with one rule: if code is hard to type, it is probably hard to understand.

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.

Ships to the browser

mko build --target web compiles to WebAssembly. Language core and physics run for real, no install needed.

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.

Ph

using Physics2D;

Rigid bodies, springs, joints, contacts, and soft-body slimes.

Ph

using Physics3D;

Readable 3D rigid bodies, characters, collision, and adaptive substeps.

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.

my

using mylib from "github:User/Repo";

Pull reusable MAKO libraries directly from GitHub with using ... from.

Try it while it is young.

MAKO just hit its first official release. It's still small, still evolving, and still shaped by whoever's using it right now — which could be you.

MAKO

MAKO v0.1.0 · uses mko · not the Linux mako notification daemon