Are you the author? Sign in to claim
An experimental game engine for robots (and their humans), made by robots (and their humans)
A compact, experimental, and probably mostly useless game engine that tries to answer the question: what if a game engine was 100% agentically engineered, and structured specifically so agents can help you build your game?
[!WARNING] Do not expect this engine to be useful. In particular, do not try to make a game with it! It's a research project with no aims to be production-ready, stable, or even particularly usable. It is a playground for exploring agentic workflows and game engine design and not much else. You have been warned. (We still love you though!)
Scrapbot is maintained as an agent-first codebase. Before opening a PR, read CONTRIBUTING.md for contributor expectations and AGENTS.md for the rules coding agents must follow when changing this repository.
The high-level roadmap is below. Active follow-up work lives in docs/TODO.md, with architecture and feature decisions tracked in docs/adr/ and docs/fdr/. Project vocabulary lives in docs/GLOSSARY.md.
The documentation website includes a conceptual ECS overview plus exact references for engine components, Luau, native extensions, project files, and ECS UI.
Scrapbot is a small Odin CLI and runtime with an embedded Luau scripting layer, a native ECS, a GPU-driven WebGPU renderer, and a first-party editor — all operable through structured CLI output, so agents (and scripts) can build, run, inspect, and screenshot projects without a human at the keyboard.
scrapbot init [path] [name] safely creates a runnable text-first project without overwriting existing files. Authored data lives in assets/, native/, resources/, scenes/, and scripts/; generated types and caches live under ignored .scrapbot/ state; distributable packages live under build/.scrapbot check [path] [--json] builds declared native extensions, validates the manifest, default scene, and Luau component schemas, refreshes generated Luau LSP types, and runs Luau static analysis when luau-analyze is available.scrapbot build [path] [--target host] [--json] creates a host-native runnable package under build/<target> with the game executable, project data, and native extension artifacts.scrapbot run [path] [options] loads the scene into a native ECS world, executes scripts/main.luau, runs native and script systems, and renders through the selected backend. Ordinary development is simply scrapbot run <path> (windowed WGPU with hot reload). Options include --backend null|wgpu, --window|--headless, --hot-reload|--no-hot-reload, --editor, --frames n, --framegrab out.png, --scheduler-trace, --runtime-stats, --ui-script, --ui-dump, and --cpu-culling (deterministic CPU reference path for GPU culling).scrapbot help <command> prints command-specific options parsed by Odin's core:flags.--json output with stable diagnostic codes — the automation contract for agents. Headless WGPU runs create a device and offscreen target without SDL or an OS presentation surface, can execute without a pixel readback, and optionally support final-frame PNG framegrabs and semantic UI scripting. --ui-script targets reconciled controls by UUID, name, or text, replays interactions, and asserts state; --ui-dump exposes the full logical and screen-space UI tree as JSON.During development, use mise build to compile the optimized CLI and mise scrapbot -- [args...] to compile and run it. mise build-dev emits a fast -o:minimal binary; mise benchmark-profiles compares build profiles on a bounded run. Run mise setup once after cloning to install pinned tools, initialize source dependencies, download checksum-verified external fixtures, and configure the tracked Git hooks (mise setup-assets / mise check-assets manage only the fixtures).
mise luau-workspace-types rebuilds the tracked type aggregate for editor completion.null backend for simulation smoke tests, and a full wgpu backend with independent surface and offscreen execution.scrapbot.world_environment component, authored global height/distance fog with shadowed directional scattering, half-resolution thickness-aware visibility-bitmask ambient occlusion over indirect diffuse light, temporal antialiasing with reprojection, screen-space reflections, a compute bloom pyramid, and an ACES-style composite.scrapbot.camera; UI stays native-resolution, AO and SSR have bounded quality tiers, and disabled effects skip their GPU work.resources/**/*.resource.toml (materials, textures, glTF models, HDR environments, generated LOD chains) with hot reload, targeted reimport, and import diagnostics; scenes serialize stable UUID references that the runtime resolves to generational registry handles.Cmd/Ctrl+E, or --editor to start open) framing an aspect-correct live viewport with resizable scene and inspector panels, status bar, and scroll panes.Cmd/Ctrl+R, Cmd/Ctrl+T) with a non-destructive in-memory authoring baseline, stopped-mode Undo/Redo, explicit project-wide Save, and scene Revert.Example projects live in examples/:
minimal — Luau- and Odin-defined components and systems (mise scrapbot run examples/minimal).ecs-showcase — object fountain with spawned renderables, animated point lights, emissive bloom, and a procedural 30-second day/night cycle.ecs-stress — roughly 3,000 glowing renderables sustained through retained query plans, chunked storage, and SIMD integration.clustered-lights — 320 animated HDR point lights through GPU-computed view-frustum clusters in a bloom-soaked tunnel.gltf-showcase — the pinned Khronos Damaged Helmet through the real glTF importer, lit by a pinned CC0 HDR environment.pbr-materials — deterministic authored metallic/roughness reference grid for isolating material and lighting changes.sponza — the Khronos Sponza atrium as 103 ECS renderables with 25 PBR materials, directional shadows, and clustered point lights.Run the full local suite with mise test (includes a 2,000-frame lifecycle CPU/RAM growth gate). mise test-soak runs the extended 10,000-frame check; mise test-sanitize runs the Linux AddressSanitizer lane. CI covers macOS, Linux, and Windows, plus the ASan lane on Linux.
mise test-gpu-offscreen runs the bounded surface-free WGPU acceptance gate. It preserves
structured diagnostics, GPU timings/counters, and 1:1 PNGs under
$TMPDIR/scrapbot-gpu-offscreen by default. Metal CI uploads the complete bundle even when the
gate fails.
mise gpu-benchmarks profiles minimal, ecs-showcase, and sponza at 540p, 720p, and
1080p. The scheduled/manual Metal workflow retains each bundle and compares it with the previous
successful run only when the adapter and complete render dimensions match. These histories expose
trends; they are not portable performance thresholds.
Scrapbot is licensed under the Apache License 2.0. Vendored dependencies under third_party/ retain their own licenses.
⚠️ Experimentelle Skill-Sammlung für deutsches Recht (Arbeits-, Gesellschafts-, Insolvenz-, Datenschutz-, Prozessrecht u
Manage multiple Claude Code agents from TUI or Web with tmux and git worktrees
Project management using GitHub Issues + Git worktrees for parallel agent execution
Core skills library for Claude Code with 20+ battle-tested skills including TDD, debugging, and brainstorming