---
title: "About Prosperon"
type: docs
---

# Prosperon

Prosperon is a 2D game programming environment built on [Pit](https://crumbpit.org), an actor-based language designed for safe, sandboxed scripting.

Games are written as small, focused modules in Pit — a simplified JavaScript with actor primitives. Prosperon handles rendering, input, audio, and asset management. No class hierarchies, no giant scene trees.

## Design Goals

- **Minimal API surface.** A handful of modules cover sprites, input, sound, and composition. Each does one thing.
- **Data-driven rendering.** You create sprites and set properties. The compositor handles batching, sorting, and GPU submission.
- **Composition over inheritance.** Entity behavior comes from modules, not class trees. An entity type is a script that returns a prototype object.
- **AI-friendly.** Many small files with simple dependencies. An LLM can read a module, understand it, and modify it.
- **Text-first.** Assets are referenced as string paths. Levels are JSON. Everything diffs cleanly in source control.

## Architecture

Prosperon is not a monolithic engine with a global state object. It is a collection of modules:

| Module | Purpose |
|--------|---------|
| `core` | Main loop, window, GPU init |
| `sprite` | Create and manage sprites |
| `compositor` | Build render plans from scene configs |
| `input` | Action mapping, device routing |
| `sound` | Audio playback |
| `world` | Entity management (add, query, update, levels) |
| `camera` | Viewport into the world |
| `draw2d` | Re-exports sprite, shape, text, tilemap, anim |
| `text2d` | Text rendering |
| `shape2d` | SDF shapes (rect, circle, ellipse, pill) |
| `anim2d` | Sprite animation playback (aseprite/gif) |
| `collision2d` | AABB + circle overlap queries |
| `tilemap2d` | Grid-based tile rendering |
| `tween` | Value interpolation |
| `resources` | Asset path resolution |

Import what you need with `use()`. If you don't use a module, it doesn't load.

## The Language

Pit is an actor-based language. Programs (`.ce` files) are actors that run top-to-bottom, can register message handlers, and spawn child actors. Modules (`.cm` files) return frozen values and are cached.

Actor primitives: `$start`, `$receiver`, `send`, `$delay`, `$clock`, `$stop`.

See [Quickstart](../quickstart/) for a hands-on introduction.
