A scene is an entry in the open registry LabScenes, shown on a plate: a flat lit disc, the package's own small sky with the sun at one hour, and a frame clock. Headless each camera (lab_shot, lab_shot_at) settles and is written as build/lab/<scene>/<shot>.png (a stored PNG, written here); in a window N and P step through them. tools/lab/run.sh and sheet.py make the contact sheet; tools/lab/plate_build.py makes plate/. ludic.render3d gains r3d_plate_mode (no terrain, grass or water is made) and r3d_sky_path. quit() in a program with no frame loop links. The example takes ~120 MB resident, 417 MiB peak footprint. Reseed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
packages
The Ludic packages that ship with the toolchain, found by import "ludic.<name>" from
$LUDIC_HOME/packages (or a project's ludic_modules). Each has a README of its own.
ludic test packages runs every package's tests, each test block in a process of its own.
The mechanic packages
A mechanic says module ludic_<name> uses ludic_base and so reaches nothing else; it asks the game
through ports (bind ClockWorld { ... }), reports through queues of facts, and saves its own
section. The rules are in ludic.base.
| ludic.base | the shared vocabulary: Tick and phases, Queue<T>, rng streams, the save tree, the system runner (Systems, an open registry) |
| ludic.clock | the hour, the day, the moon and a calendar of seasons |
| ludic.crafting | recipes: what goes in and out, where and how long, making, refunding, hold-to-make |
| ludic.effects | timed modifiers that run down in game time (a meal's warmth, a drink's legs) |
| ludic.fire | a camp fire: fuel, the rain on it, warmth at a distance, whether it will cook |
| ludic.fishing | a rod at the water: cast, bite, the reel's fight, the landing; species as an open registry |
| ludic.inventory | a pack: a count per kind, with room the game decides |
| ludic.needs | a body's warmth, food, water and energy, and the countdown to a collapse |
| ludic.settings | a game's settings as data: one store, a fact per change, ranges, a safe set |
| ludic.shop | vendors: prices by standing and weekly demand, stock, buying and selling |
| ludic.steps | chapters of steps (kind, param, need), progress, and a party's shares pooled |
| ludic.telemetry | events queued, batched to a PostHog-shaped endpoint, backed off when offline |
| ludic.things | the placed things of a world and their kinds (an open registry), queries, facts, a save |
| ludic.tracks | prints and sign animals leave, their age, and reading them |
| ludic.update | a Velopack-installed game updating itself a frame at a time |
| ludic.wallet | money carried: earned, spent, lost, every change a fact |
| ludic.weather | spells of weather described as data: odds, wetness, wind, storms, a forecast |
| ludic.wildlife | a valley's animals: ranges, their day, senses and alert, feeding, lures, spawning |
Engine and UI
| ludic.render3d | the physically based 3D renderer over OpenGL and Vulkan (named ludic_render3d under uses) |
| ludic.ui | components: templates, stylesheets, layout, input and focus (module ludic_ui) |
| ludic.lab | the visual lab: a scene on a lit plate, fixed cameras, PNG shots and a contact sheet |
| ludic.core | the canonical engine-ABI components |
| ludic.prefs | a small key=value store for preferences and records |
The builtin controllers
| ludic.gameplay | the shared foundation of the builtin gameplay controllers |
| ludic.platformer | the Platformer controller |
| ludic.shooter | the top-down Shooter controller |
| ludic.rpg | the RPG systems suite |
| ludic.dungeon | arena rooms for a room-to-room roguelite |
| ludic.npcai | NPC AI: perception, decision, action |