Tooling

Game Engines (code-first / minimal libraries)

raylib, SDL3, sokol, ggez, bracket-lib — when you want a library, not an engine.

These aren't engines, they're libraries — you keep your own main loop, file layout and asset pipeline. Pick one if you want to write the engine, or if you want a tiny dependency you fully understand. For full engines see 3D engines / 2D engines. For specialized engines (Ren'Py, RPG Maker, GB Studio) see specialized engines. For audio in this layer see game audio.

These tools are loved by the Pico-8 / handmade-network crowd — they value transparency, small binaries and no editor in your face.

C / C++ minimal

  • raylib — zlib-licensed C library, ~30 source files, draws sprites/3D/audio out of the box. The cult favorite for "just give me a library." Bindings for Rust, Go, Python, Zig, C#, Odin, you name it. Modules: raymath, raygui, raudio, rcamera.
  • SDL3 — zlib (post-SDL2), the cross-platform foundation under most code-first stacks. Window, input, audio, basic 2D. SDL3 (released 2024–25) modernizes the API. Pair with SDL_image, SDL_mixer, SDL_ttf.
  • sokol — single-header C libraries by Andre Weissflog (sokol_gfx, sokol_app, sokol_audio, sokol_gp). Ultra-minimal, ships to web via Emscripten.
  • GLFW + bgfx — windowing + cross-API rendering backend. More plumbing than raylib but full-power 3D.
  • OpenGL / Vulkan / WebGPU directly — the long road. Use Dawn or wgpu for portable WebGPU.
  • FNA — open XNA4 reimplementation in C#. Ships Celeste, Salt and Sanctuary.

Rust ecosystem

  • macroquad — beginner-friendly Rust 2D, ships to web easily.
  • ggez — "good game easily," 2D Rust framework inspired by LÖVE.
  • bracket-lib — Rust roguelike toolkit with terminal rendering, A*, dungeon gen, FOV. Author wrote Hands-On Rust.
  • Fyrox — Rust game engine with editor (closer to a full engine than a library, but worth listing here).
  • wgpu — cross-API GPU abstraction; the Rust standard for WebGPU/Vulkan/Metal/DX12.

Other languages

  • Odin + raylib bindings — the new minimalist combo darling.
  • Zig + raylib / SDL — same vibe, growing community.
  • Go + Ebitengine (formerly Ebiten) — Apache, simple 2D, ships Bitburner and many jam games.
  • Nim — bindings for raylib, SDL.
  • Crystal, Jai (closed beta) — niche but vocal communities.

Roguelike / terminal

  • libtcod — the classic C++ roguelike toolkit; Python bindings.
  • bracket-lib (Rust, above).
  • rot.js — JavaScript roguelike toolkit; pairs with HTML canvas or DOM.
  • BearLibTerminal — pseudoterminal renderer for non-roguelike-style games.

License notes

raylib, SDL3, sokol, GLFW, libtcod, ggez, macroquad, Ebitengine — all permissive (MIT/zlib/BSD/Apache). bgfx is BSD. Use freely; just attribute.

Pick this if…

  • C, single library: raylib.
  • C++, AAA-pipeline-shaped: SDL3 + bgfx + Dear ImGui.
  • Rust, beginner: macroquad.
  • Rust, ECS heavy: Bevy (see 3D engines).
  • Rust, roguelike: bracket-lib.
  • Go: Ebitengine.
  • Roguelike, Python: libtcod via tcod-py.
  • Web-first, JS roguelike: rot.js.
  • You hate editors: any of these.

On this page