initial meeting draft
@@ -0,0 +1,27 @@
|
|||||||
|
# VNGame — Iron Hollow PoC
|
||||||
|
|
||||||
|
## Run
|
||||||
|
Open in Ren'Py launcher → Run.
|
||||||
|
|
||||||
|
## What to test
|
||||||
|
1. Play straight through (no checkpoint) — see all 3 base branches.
|
||||||
|
2. Create a checkpoint → pick "To find something worth doing" → **Rewind**.
|
||||||
|
Watch the teal wash and Luno's linger beat afterward.
|
||||||
|
3. Explore 3+ branches, then the 4th unlocked option appears.
|
||||||
|
|
||||||
|
## Missing assets (Ren'Py will warn but not crash)
|
||||||
|
- `game/images/bg training_yard.png`
|
||||||
|
- `game/images/sara neutral.png`, `sara pained.png`
|
||||||
|
- `game/images/luno curious.png`, `luno amused.png`, `luno neutral.png`,
|
||||||
|
`luno soft.png`, `luno tilted.png`, `luno still.png`, `luno laugh.png`,
|
||||||
|
`luno sharp.png`, `luno linger.png`
|
||||||
|
|
||||||
|
Any placeholder PNG renamed to match works fine for testing.
|
||||||
|
|
||||||
|
## Internal flags
|
||||||
|
| Variable | Meaning |
|
||||||
|
|---|---|
|
||||||
|
| `checkpoint_set` | Player placed a checkpoint this scene |
|
||||||
|
| `rewind_used` | Player rewound at least once |
|
||||||
|
| `branches_explored` | Choice screen visit count (unlocks 4th option at 3) |
|
||||||
|
| `luno_suspicion` | 0–4 internal tracker, ready to wire into future scenes |
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
@@ -1,33 +1,228 @@
|
|||||||
# The script of the game goes in this file.
|
# The Iron Hollow — Chapter 1 PoC
|
||||||
|
# Scene 2: Sara Arrives
|
||||||
|
|
||||||
# Declare characters used by this game. The color argument colorizes the
|
define sara = Character("Sara", color="#c8a882")
|
||||||
# name of the character.
|
define luno = Character("Luno", color="#82b4c8")
|
||||||
|
define narrator = Character(None, kind=nvl)
|
||||||
|
|
||||||
define s = Character("Sara")
|
# ── Persistent flags ──────────────────────────────────────────────────────────
|
||||||
|
default checkpoint_set = False
|
||||||
|
default rewind_used = False
|
||||||
# The game starts here.
|
default branches_explored = 0
|
||||||
|
default luno_suspicion = 0
|
||||||
|
|
||||||
|
# ── Entry point ───────────────────────────────────────────────────────────────
|
||||||
label start:
|
label start:
|
||||||
|
scene bg training_yard
|
||||||
|
with fade
|
||||||
|
|
||||||
# Show a background. This uses a placeholder by default, but you can
|
"The Iron Hollow training yard sits inside a converted warehouse district. Stone walls, packed dirt, the smell of old metal and new sweat."
|
||||||
# add a file (named either "bg room.png" or "bg room.jpg") to the
|
"Sara takes it all in before she steps through the gate."
|
||||||
# images directory to show it.
|
|
||||||
|
|
||||||
scene bg room
|
show sara neutral at left
|
||||||
|
with easeinright
|
||||||
|
|
||||||
# This shows a character sprite. A placeholder is used, but you can
|
"Two people are already here. A boy against the far wall, watching nothing. And a girl near the gate — moving like she already belongs."
|
||||||
# replace it by adding a file named "eileen happy.png" to the images
|
|
||||||
# directory.
|
|
||||||
|
|
||||||
show eileen happy
|
show luno curious at right
|
||||||
|
with easeinright
|
||||||
|
|
||||||
# These display lines of dialogue.
|
"The girl notices Sara first."
|
||||||
|
jump luno_greeting
|
||||||
|
|
||||||
s "You've created a new Ren'Py game."
|
label luno_greeting:
|
||||||
|
luno "You're here for the recruitment?"
|
||||||
|
sara "Yes. Where do I register?"
|
||||||
|
luno "The man over at that table takes your name. Then we wait."
|
||||||
|
luno "I'm Luno. Been here a few days already — helping with the wounded from last month's job. I know how things run here if you need anything."
|
||||||
|
"She doesn't say it like an offer. She says it like she's already taking notes."
|
||||||
|
luno "So. Money, glory, or are you just bored?"
|
||||||
|
jump choice_screen
|
||||||
|
|
||||||
s "Once you add a story, pictures, and music, you can release it to the world!"
|
label choice_screen:
|
||||||
|
$ branches_explored += 1
|
||||||
|
#show screen timer_bar(20)
|
||||||
|
|
||||||
# This ends the game.
|
menu:
|
||||||
|
"Why are you here?"
|
||||||
|
"\[ Create Checkpoint \]" if not checkpoint_set:
|
||||||
|
$ checkpoint_set = True
|
||||||
|
hide screen timer_bar
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
"A flash. Sara's hand, signing something. A contract. The ink is red."
|
||||||
|
"It could mean anything."
|
||||||
|
scene bg training_yard
|
||||||
|
with dissolve
|
||||||
|
show sara neutral at left
|
||||||
|
show luno curious at right
|
||||||
|
jump choice_screen
|
||||||
|
|
||||||
|
"For the money, like anyone.":
|
||||||
|
hide screen timer_bar
|
||||||
|
jump branch_money
|
||||||
|
|
||||||
|
"To find something worth doing.":
|
||||||
|
hide screen timer_bar
|
||||||
|
jump branch_purpose
|
||||||
|
|
||||||
|
"I'd rather not say.":
|
||||||
|
hide screen timer_bar
|
||||||
|
jump branch_silence
|
||||||
|
|
||||||
|
"[ You asked the others the same thing, didn't you. ]" if checkpoint_set and branches_explored >= 3:
|
||||||
|
hide screen timer_bar
|
||||||
|
jump branch_sharp
|
||||||
|
|
||||||
|
label branch_money:
|
||||||
|
$ luno_suspicion += 1
|
||||||
|
sara "Same reason as everyone else, I'd assume."
|
||||||
|
luno "Honest. I can work with that."
|
||||||
|
show luno amused at right
|
||||||
|
luno "Though if money's the goal, you don't look like you need it."
|
||||||
|
sara "Looks can be misleading."
|
||||||
|
show luno neutral at right
|
||||||
|
luno "Sure."
|
||||||
|
"A pause. Just a half-beat too long."
|
||||||
|
luno "They can be."
|
||||||
|
"She doesn't push. But her eyes stay on Sara a moment after the conversation moves on."
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label branch_purpose:
|
||||||
|
sara "I'm not looking for money exactly. More... something to point myself at."
|
||||||
|
"A beat. Something opens in Luno's expression — not warm, but something."
|
||||||
|
show luno curious at right
|
||||||
|
luno "Huh. That's not what I expected."
|
||||||
|
sara "What did you expect?"
|
||||||
|
luno "Something about honour. Or family legacy."
|
||||||
|
show luno tilted at right
|
||||||
|
luno "The clothes suggest a script."
|
||||||
|
show sara pained at left
|
||||||
|
sara "The script didn't survive."
|
||||||
|
"She doesn't mean to say it. Too true. Too fast. Too much."
|
||||||
|
"She can feel it land — can feel Luno actually {i}looking{/i} at her now, not just watching."
|
||||||
|
show luno soft at right
|
||||||
|
luno "...Yeah. I know that feeling."
|
||||||
|
"A real moment. Brief. Neither of them knows what to do with it."
|
||||||
|
|
||||||
|
if checkpoint_set:
|
||||||
|
show screen rewind_prompt
|
||||||
|
"The rewind option surfaces at the edge of the screen, glowing faintly."
|
||||||
|
"Sara can step back. Give the safer answer. Luno will never know what she almost said."
|
||||||
|
menu:
|
||||||
|
"[ ↺ Rewind ] (14 seconds remaining)":
|
||||||
|
hide screen rewind_prompt
|
||||||
|
$ rewind_used = True
|
||||||
|
$ luno_suspicion += 1
|
||||||
|
scene black
|
||||||
|
with dissolve
|
||||||
|
show screen teal_wash
|
||||||
|
"The world pulls back."
|
||||||
|
"Colour drains to teal. Sound slows to nothing."
|
||||||
|
hide screen teal_wash
|
||||||
|
scene bg training_yard
|
||||||
|
with dissolve
|
||||||
|
show sara neutral at left
|
||||||
|
show luno curious at right
|
||||||
|
"Sara is standing at the choice again. Luno's question still in the air."
|
||||||
|
jump choice_after_rewind
|
||||||
|
"[ Continue ]":
|
||||||
|
hide screen rewind_prompt
|
||||||
|
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label choice_after_rewind:
|
||||||
|
menu (caption="— Why are you here? —"):
|
||||||
|
"For the money, like anyone.":
|
||||||
|
jump branch_money_post_rewind
|
||||||
|
"I'd rather not say.":
|
||||||
|
jump branch_silence_post_rewind
|
||||||
|
|
||||||
|
label branch_money_post_rewind:
|
||||||
|
sara "Same reason as everyone else."
|
||||||
|
luno "Sure."
|
||||||
|
"Unremarkable. Fine."
|
||||||
|
"But when Sara finishes speaking, Luno's eyes linger — just a half-second longer than they should."
|
||||||
|
show luno linger at right
|
||||||
|
"Not suspicion. Not quite. More like the feeling of reaching for something that moved."
|
||||||
|
show luno neutral at right
|
||||||
|
"She shakes it off. Probably nothing."
|
||||||
|
"Sara knows it wasn't nothing."
|
||||||
|
$ luno_suspicion += 1
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label branch_silence_post_rewind:
|
||||||
|
sara "I'd rather not say."
|
||||||
|
luno "Fair enough."
|
||||||
|
"But when Sara finishes speaking, Luno's eyes linger — just a half-second longer than they should."
|
||||||
|
show luno linger at right
|
||||||
|
"Not suspicion. Not quite. More like the feeling of reaching for something that moved."
|
||||||
|
show luno neutral at right
|
||||||
|
"She shakes it off. Probably nothing."
|
||||||
|
"Sara knows it wasn't nothing."
|
||||||
|
$ luno_suspicion += 1
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label branch_silence:
|
||||||
|
sara "That's a fairly personal question for someone I've known thirty seconds."
|
||||||
|
luno "Fair. I ask everyone. You don't have to answer."
|
||||||
|
sara "...Then I won't."
|
||||||
|
luno "That's an answer too."
|
||||||
|
"She's not unfriendly. But Sara just became a question mark in Luno's mental ledger."
|
||||||
|
$ luno_suspicion += 1
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label branch_sharp:
|
||||||
|
sara "You asked him the same thing."
|
||||||
|
"She nods toward Eron."
|
||||||
|
sara "Before I arrived."
|
||||||
|
"Luno goes still. Not alarmed — but recalibrating."
|
||||||
|
show luno still at right
|
||||||
|
luno "...You were watching from outside the gate?"
|
||||||
|
sara "The wall has gaps."
|
||||||
|
luno "Most people don't bother to look."
|
||||||
|
sara "I bother."
|
||||||
|
"A pause. Luno is weighing something."
|
||||||
|
luno "That's either very smart or very paranoid."
|
||||||
|
sara "Both, usually."
|
||||||
|
"Luno laughs — a real one, short and surprised."
|
||||||
|
show luno laugh at right
|
||||||
|
"But her eyes are sharper now, not warmer."
|
||||||
|
show luno sharp at right
|
||||||
|
"This is not a win. It's a different kind of exposure."
|
||||||
|
$ luno_suspicion += 2
|
||||||
|
jump scene_continues
|
||||||
|
|
||||||
|
label scene_continues:
|
||||||
|
"Before the silence can settle, footsteps at the gate."
|
||||||
|
"Two more arrivals. The scene continues..."
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# ── Screens ───────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
screen timer_bar(duration):
|
||||||
|
zorder 10
|
||||||
|
timer duration action Hide("timer_bar")
|
||||||
|
vbox:
|
||||||
|
xalign 0.5
|
||||||
|
yalign 0.02
|
||||||
|
bar:
|
||||||
|
value AnimatedValue(duration, duration)
|
||||||
|
xsize 400
|
||||||
|
ysize 14
|
||||||
|
text "Respond within [duration]s":
|
||||||
|
xalign 0.5
|
||||||
|
color "#c8c8c8"
|
||||||
|
size 18
|
||||||
|
|
||||||
|
screen rewind_prompt():
|
||||||
|
zorder 10
|
||||||
|
text "[ ↺ Rewind available ]":
|
||||||
|
xalign 0.05
|
||||||
|
yalign 0.95
|
||||||
|
color "#4ab8b8"
|
||||||
|
size 22
|
||||||
|
|
||||||
|
screen teal_wash():
|
||||||
|
zorder 20
|
||||||
|
add Solid("#1a4a4a") alpha 0.7
|
||||||