Resident style guide & handoff
THE
RESIDENTS
Tiny procedural beings who keep the town running.
Monochrome by default. Color when selected, active, or interacting.
CORE PRINCIPLE
Color is attention. A resident lights up when you select it, when it speaks, or when something happens to it.
→
01The state systemmonochrome by default, color on attention.

Passive

Attention

Returns
Attention triggers
- ·Selected by the user
- ·Speaking, or being spoken to
- ·Performing an action
- ·Involved in an event
- ·Carrying new information
Return to passive
2–5 seconds after the trigger ends. Configurable in DEFAULT_ATTENTION_HOLD_MS. The world is calm by default — color is for moments, not background.
02The founding casttwenty residents · each one does one job.
Lifecycle & identityhow a thing begins, names itself, and is found again.5 residents
Init
01/20
__init__
opens the town.
passive
active
Repr
02/20
__repr__
describes what it sees.
passive
active
Iter
03/20
__iter__
walks the same loop.
passive
active
Hash
04/20
__hash__
identifies and files.
passive
active
Len
05/20
__len__
counts what's there.
passive
active
Containers & accesshow things are put away, fetched, and called for.5 residents
Getitem
06/20
__getitem__
fetches by name.
passive
active
Setitem
07/20
__setitem__
puts things in their place.
passive
active
Contains
08/20
__contains__
checks if it's here.
passive
active
Call
09/20
__call__
makes it happen.
passive
active
Bool
10/20
__bool__
yes or no — no maybe.
passive
active
Arithmeticthe math crew. They combine, separate, and scale.5 residents
Add
11/20
__add__
brings two together.
passive
active
Sub
12/20
__sub__
takes one from another.
passive
active
Mul
13/20
__mul__
scales things up.
passive
active
Div
14/20
__truediv__
splits things evenly.
passive
active
Mod
15/20
__mod__
keeps the leftover.
passive
active
Higher-orderthe bots who do the same thing to many things.5 residents
Prop
16/20
@property
looks after each property.
passive
active
Sort
17/20
sort()
arranges in order.
passive
active
Filter
18/20
filter()
keeps only what passes.
passive
active
Map
19/20
map()
touches each one the same way.
passive
active
Reduce
20/20
reduce()
folds many into one.
passive
active
03Implementationthe engine consumes art. it does not draw it.
Asset structure
assets/residents/
<id>/
passive/front.png (monochrome)
active/front.png (color)Every resident ships at minimum these two PNGs. Selecting the resident swaps the src.
Engine rules
- ·Renders PNG sprites only
- ·Never draws characters from primitives
- ·Selection swaps passive → active art
- ·Missing asset = placeholder, not substitute
- ·Pivot is feet-center
What lives in code
Placement on the world map. State (passive / active / selected / alert). Idle bob and prop sway. Route overlays. Speech bubble offsets.
art is fixed. behavior is alive.
04The approved guidessource of truth.
APPROVED · v3

resident-style-guide.png · 1024×1536if the asset and the guide disagree — the guide wins.
APPROVED · v3

world-style-guide.png · 1536×1024if the asset and the guide disagree — the guide wins.





































