v1.2 — Rob walks: sprite-sheet ego (MRPCI v0.5 -sheet2x3 views)
rob.png → rob-sheet2x3.png: 2 walk frames x front/back/side loops (engine mirrors side for right-facing). gen_sprites.py grows a sheet() assembler with per-cel shape asserts. Golden replay still wins 60/60. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2650c8b024
commit
0976611f36
@ -3,7 +3,7 @@
|
|||||||
"start_room": 0,
|
"start_room": 0,
|
||||||
"intro_text": "Victoria, BC. 1979. You are Rob Wright, twenty-five, back from Calgary with a bass guitar and no plan. Your kid brother can really drum. The basement is free after laundry hours. (Right-click cycles verbs. Or just type.)",
|
"intro_text": "Victoria, BC. 1979. You are Rob Wright, twenty-five, back from Calgary with a bass guitar and no plan. Your kid brother can really drum. The basement is free after laundry hours. (Right-click cycles verbs. Or just type.)",
|
||||||
"max_score": 60,
|
"max_score": 60,
|
||||||
"ego_sprite": "rob",
|
"ego_sprite": "rob-sheet2x3",
|
||||||
"verbs": {
|
"verbs": {
|
||||||
"play": "jam riff shred strum drum",
|
"play": "jam riff shred strum drum",
|
||||||
"listen": "hear"
|
"listen": "hear"
|
||||||
|
|||||||
BIN
sprites/rob-sheet2x3.png
Normal file
BIN
sprites/rob-sheet2x3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 478 B |
BIN
sprites/rob.png
BIN
sprites/rob.png
Binary file not shown.
|
Before Width: | Height: | Size: 202 B |
@ -41,40 +41,116 @@ def write_png(path, rows, legend, scale=1):
|
|||||||
S = {} # name -> (rows, legend)
|
S = {} # name -> (rows, legend)
|
||||||
|
|
||||||
# --- people -------------------------------------------------------------
|
# --- people -------------------------------------------------------------
|
||||||
# Rob Wright — the ego. Tall, calm, bass slung low. (Feet = bottom center.)
|
# Rob Wright — the ego, as an MRPCI sprite sheet (`-sheet2x3`): 2 walk
|
||||||
S["rob"] = (
|
# frames x 3 direction loops (front, back, side; the engine mirrors side
|
||||||
[
|
# for right-facing). Every cel is exactly 12x20; feet = bottom center.
|
||||||
"....hhhh....",
|
ROB_LEGEND = {
|
||||||
"....hhhh....",
|
"h": (72, 52, 36), # hair
|
||||||
"....ffff....",
|
"f": (214, 178, 148),# face
|
||||||
"....f2f2....",
|
"2": (40, 40, 48), # eyes
|
||||||
"....ffff....",
|
"s": (52, 56, 64), # dark shirt
|
||||||
".....ff.....",
|
"p": (44, 48, 88), # jeans
|
||||||
"...ssssss...",
|
"o": (30, 30, 34), # boots / strap
|
||||||
"..ssssssss..",
|
"b": (150, 60, 40), # bass body
|
||||||
"..s.ssss.s..",
|
"r": (220, 200, 160),# bass neck
|
||||||
"..s.ssss.s..",
|
}
|
||||||
"..b.ssss....",
|
|
||||||
".bbbrssss...",
|
ROB_FRONT0 = [
|
||||||
".bb.ssss....",
|
"....hhhh....",
|
||||||
"..b.pppp....",
|
"....hhhh....",
|
||||||
"....pppp....",
|
"....ffff....",
|
||||||
"....p..p....",
|
"....f2f2....",
|
||||||
"....p..p....",
|
"....ffff....",
|
||||||
"....p..p....",
|
".....ff.....",
|
||||||
"....p..p....",
|
"...ssssss...",
|
||||||
"...oo..oo...",
|
"..ssssssss..",
|
||||||
],
|
"..s.ssss.s..",
|
||||||
{
|
"..s.ssss.s..",
|
||||||
"h": (72, 52, 36), # hair
|
"..b.ssss....",
|
||||||
"f": (214, 178, 148),# face
|
".bbbrssss...",
|
||||||
"2": (40, 40, 48), # eyes
|
".bb.ssss....",
|
||||||
"s": (52, 56, 64), # dark shirt
|
"..b.pppp....",
|
||||||
"p": (44, 48, 88), # jeans
|
"....pppp....",
|
||||||
"o": (30, 30, 34), # boots
|
"....p..p....",
|
||||||
"b": (150, 60, 40), # bass body
|
"....p..p....",
|
||||||
"r": (220, 200, 160),# bass neck
|
"....p..p....",
|
||||||
},
|
"....p..p....",
|
||||||
|
"...oo..oo...",
|
||||||
|
]
|
||||||
|
# Frame 2: the walk bob — boots swing in.
|
||||||
|
ROB_FRONT1 = ROB_FRONT0[:19] + ["....oo.oo..."]
|
||||||
|
|
||||||
|
ROB_BACK0 = [
|
||||||
|
"....hhhh....",
|
||||||
|
"....hhhh....",
|
||||||
|
"....hhhh....",
|
||||||
|
"....hhhh....",
|
||||||
|
".....ff.....",
|
||||||
|
"...ssssss...",
|
||||||
|
"..sossssss..",
|
||||||
|
"..s.osss.s..",
|
||||||
|
"..s.soss.s..",
|
||||||
|
"....ssos....",
|
||||||
|
"....ssso....",
|
||||||
|
"....sssso...",
|
||||||
|
"....ssss....",
|
||||||
|
"....pppp....",
|
||||||
|
"....pppp....",
|
||||||
|
"....p..p....",
|
||||||
|
"....p..p....",
|
||||||
|
"....p..p....",
|
||||||
|
"....p..p....",
|
||||||
|
"...oo..oo...",
|
||||||
|
]
|
||||||
|
ROB_BACK1 = ROB_BACK0[:19] + ["....oo.oo..."]
|
||||||
|
|
||||||
|
# Side faces LEFT (MRPCI mirrors it for right); bass rides the front hip.
|
||||||
|
ROB_SIDE0 = [
|
||||||
|
"....hhhh....",
|
||||||
|
"....hhhh....",
|
||||||
|
"....ffff....",
|
||||||
|
"....2fff....",
|
||||||
|
"....ffff....",
|
||||||
|
".....ff.....",
|
||||||
|
"....ssss....",
|
||||||
|
"...ssssss...",
|
||||||
|
"...ssssss...",
|
||||||
|
"...ssssss...",
|
||||||
|
"..brssss....",
|
||||||
|
".rbbssss....",
|
||||||
|
"..b.ssss....",
|
||||||
|
"....pppp....",
|
||||||
|
"....pppp....",
|
||||||
|
"....pp......",
|
||||||
|
"....pp......",
|
||||||
|
"....pp......",
|
||||||
|
"....pp......",
|
||||||
|
"...oooo.....",
|
||||||
|
]
|
||||||
|
ROB_SIDE1 = ROB_SIDE0[:15] + [
|
||||||
|
"...p..p.....",
|
||||||
|
"...p..p.....",
|
||||||
|
"..p....p....",
|
||||||
|
"..p....p....",
|
||||||
|
".oo....oo...",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def sheet(*loops):
|
||||||
|
"""Stack loops vertically, frames horizontally — the -sheetCxR layout."""
|
||||||
|
rows = []
|
||||||
|
for cels in loops:
|
||||||
|
for cel in cels:
|
||||||
|
assert len(cel) == len(cels[0]), "frames in a loop must share height"
|
||||||
|
assert all(len(r) == len(cel[0]) for r in cel), "cels must be rectangular"
|
||||||
|
for y in range(len(cels[0])):
|
||||||
|
rows.append("".join(c[y] for c in cels))
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
S["rob-sheet2x3"] = (
|
||||||
|
sheet([ROB_FRONT0, ROB_FRONT1], [ROB_BACK0, ROB_BACK1], [ROB_SIDE0, ROB_SIDE1]),
|
||||||
|
ROB_LEGEND,
|
||||||
)
|
)
|
||||||
|
|
||||||
# John Wright — behind the kit or beside it; sticks in hand.
|
# John Wright — behind the kit or beside it; sticks in hand.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user