Documentation menu

Advanced Features

Native Packages

MAKO's rendering, physics, input, audio, networking, UI, ray, and system packages are built directly into the interpreter — no install step, just using PackageName;.

New to coding?

Copy the examples exactly first. Run them. Then change one number or word and run them again. You are not expected to memorize the command lists.

1

Mako2D — 2D games

Sprites, spritesheet animation, Camera2D, shapes, and text.

Try this code
using Mako2D;
Mako2D.init(800, 600, "My Game");
Mako2D.circle(400, 300, 24, Mako2D.SKYBLUE);
2

Mako3D — 3D games & the scene system

Camera3D with fly/orbit controls built in, primitives, models, and a full spawn/draw_scene object system (see below).

Try this code
using Mako3D;
Mako3D.init(800, 600, "3D");
cam = Mako3D.camera(10, 8, 10,  0, 0, 0);
Mako3D.update_camera(cam, 8);   // WASD fly, MMB orbit, wheel zoom
3

Physics2D & Physics3D

Rendering-independent simulation for 2D slimes and rigid bodies, plus readable 3D bodies and capsule characters. Each has a complete documentation section in this guide.

Try this code
using Physics2D;
using Physics3D;

slime = Physics2D.slime(world2d, 300, 200, 50);
crate = Physics3D.box(world3d, 0, 6, 0, 2, 2, 2);
4

Inputs — unified input

Keyboard, mouse, cursor lock, and basic gamepad — works alongside any window.

Try this code
using Inputs;
if Inputs.key_down("W") { ... }
if Inputs.mouse_pressed("left") { ... }
5

Audio — sound & synth

Load sound files, or synthesize tones/melodies from scratch. Positional 2D/3D playback built in.

Try this code
using Audio;
beep = Audio.tone("square", 440, 0.1);   // no file needed
Audio.play(beep);
Audio.play_3d(beep, sx,sy,sz, lx,ly,lz);  // positional
6

MakoUI — desktop UI, standalone or embedded

Dear ImGui-powered windows, menus, tables — as its own window, or embedded directly inside a Mako3D/Mako2D scene as a live toolbar.

Try this code
using Mako3D;
using MakoUI;
Mako3D.init(1000, 700, "Editor");
MakoUI.attach();   // embeds into the SAME window, no second window
7

Net — HTTP & JSON

Requests never throw — failures come back as a normal response you check with Net.ok().

Try this code
using Net;
res = Net.get("https://api.example.com/data");
if Net.ok(res) { data = Net.json(res); }
8

System, MakoRay & IMGUI

System provides directories, processes, and environment access. MakoRay exposes lower-level rendering compatibility, while IMGUI is an alias for MakoUI. Most games should start with Mako2D, Mako3D, and MakoUI.

Try this code
using System;
using MakoRay;
using IMGUI;