Documentation
Building a game
Theme packs
Updated 2026-11-03
Theme packs
A theme pack defines a universe without changing engine code.
Files
| File | Purpose |
|---|---|
theme.yaml |
Brand, nouns, gameplay groups, attributes, sex model, modules, labels, seeders |
pack.yaml |
Pack metadata and contract version |
labels/{en,it}.json |
Runtime label overrides |
| Content seeders | Catalog, trials, environments, packs, campaigns |
themes/neutral is the neutral starter. themes/animalia-demo is a demo pack. themes/_template is the starting point for a new game.
Create a theme
php artisan theme:new my-game
php artisan theme:validate --path=themes/my-game/theme.yaml
php artisan theme:preflight --path=themes/my-game/theme.yaml
theme:new is additive: it does not overwrite an existing pack. game:create scaffolds and validates a game pack and prints a provisioning checklist without touching the server or database.
Validate and seed
php artisan theme:validate
php artisan theme:preflight
php artisan theme:seed
theme:seed validates the theme, resolves the seeders declared in theme.yaml (groups first, then catalog, environments, trials, packs, campaigns) and runs them idempotently.
Publish labels
php artisan theme:labels:publish
This merges theme labels into the runtime lang/*.json files.
Rules
- Keep scientific or educational facts separate from competitive modifiers.
- Use neutral vocabulary in engine code:
collectible,instance,group. - Do not hardcode theme vocabulary, groups or content in the engine.
- Version content and rules.
- Every collectible, trial, environment, pack and campaign must be reproducible from the pack.
Admin scaffold
The admin Theme scaffold page runs the same scaffolder and shows the generated pack plus a key-derived provisioning checklist.