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>
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:
- Generate on a solid magenta background (image models don't do transparency well).
- Key the magenta to transparent in any editor (magic-wand / "remove background").
- Save as
sprites/<filename>.png— the name must match the object'sspritefield. - Press
Rin 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.