MRPGI/kit/themes/README.md
type-two d0caf983a0 Initial commit: MRPGI — Apple-Silicon AGI adventure engine
A new-school reimagining of Sierra's 1980s AGI interpreter in Rust + macroquad:

- Dual-buffer (visual + priority) room model with hand-painted walkability
- In-engine room editor: brush/line/rect/fill/pick/erase/oval/image/spawn/object tools
- Sprite pipeline (PNG -> EGA quantize), multi-room worlds with edge exits
- Objects with look/use/needs/keys/win conditions (no code)
- Forgiving text parser + optional local-LLM lane (Ollama / OpenRouter)
- Branching NPC dialogue trees, chiptune SFX, per-room ambient music
- Content kit: 61 archetypes across fantasy/scifi/monsters/saucy/horror
- Full docs: README, EDITOR_GUIDE, MANUAL, art manifesto + Gemini prompts

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:26:55 +10:00

2.2 KiB

MRPGI theme packs

Drop-in archetypes across four genres. Each folder has:

  • objects.json — a catalog of ready-made objects (name / look / use text / needs / wins / synonyms all written). Copy any into a room.
  • locations/*.json — a sample room you can use as-is or as a template.
  • gemini_sprites.md — Nano Banana prompts to make the art when you have time.
theme vibe object highlights
scifi/ derelict-ship sci-fi console, blaster, alien, robot, keycard, airlock (win)
monsters/ a bestiary goblin, slime, troll, ghost, dragon, mimic, skeleton
saucy/ flirty nightlife comedy rose, wine, cocktail, jukebox, letter, velvet door (win)
horror/ gothic candlelit dread candle, skull, coffin, ouija, portrait, crypt door (win)

Use an object

Open a theme's objects.json, copy one { … } block, and paste it into the objects: [ … ] array of any rooms/roomN.json (tweak its x/y). Or place a sprite with the object tool (0) in the editor and copy the look/use/needs text into its fields.

Use a location

cp kit/themes/horror/locations/crypt.json rooms/room5.json

Launch, press > to walk to room 5, then re-wire its exits on the top strip to connect it to your world. (Sample locations ship sealed — you add the doorways.)

Make the art (later)

Each gemini_sprites.md has a shared STYLE line + a per-sprite table. The flow:

  1. Generate on a solid magenta background (image models don't do transparency well).
  2. Key the magenta to transparent in any editor (magic-wand / "remove background").
  3. Save as sprites/<filename>.png — the name must match the object's sprite field.
  4. Press R in the editor. Done.

Until then, objects whose sprite doesn't exist show as a small magenta square placeholder — totally fine for blocking out a game. Many sprites already exist from the fantasy kit (orc, chest, door, key, torch, potion, …) and are reused across themes.

Note on the EGA palette

Don't stress matching colours exactly — the engine snaps every loaded image to the 16-colour EGA palette automatically. Load palettes/mrpgi-ega.gpl in Aseprite if you want to paint in the exact colours from the start.