Entropie git · main
Entropie festival game; first steps
C 88.5% Markdown 9.1% GLSL 2.3%git clone https://git.christianimmanuel.de/games/Entropie.gitwget https://git.christianimmanuel.de/games/Entropie/archive/Entropie.tar.gzEntropie – dev overview
Where the game stands: everything there is, and what is still open. Updated with every version (see the version line at the end).
The story (plan)
The game is the making of a small festival on a farm in Wriezen, from the first idea to driving home after the clean-up. What's fun: getting it built with people who have their own minds, and finding out why festivals today do things the way they do.
Chapters
- Kreuzberg, Grossbeerenstrasse 37, 3rd floor: the first meeting - "we do a
- The "Herberge" bar, several evenings: where (Wriezen), who leads what.
- The build-up on the ground (three months, played as weekends there): the
- The festival, Friday to Sunday. Saturday afternoon a bad storm: get
- The clean-up: whoever is still happy to help, and the supporters (a free
- The end: into the car and off home.
festival".
Between weekends on the ground, back to the Herberge for the next decisions. The base ideas are settled here, not on the ground.
floors, the snail rescue, the mowing, the wood, the shopping. Small decisions are made on the spot by whoever leads that task.
everybody out of harm's way (evacuate).
ticket for 2 x 6 h of work each, during the festival and after).
The floors
- Hofbuehne (the yard): bands, poetry slam, breakdance, rock, punk. Pascal:
- Obstwiese (the orchard): psytrance. Kilian builds it.
- Kartoffelacker (the potato field): world music, small talks. Behind the
- Right of the Kartoffelacker a strip of wood (about 10 m through): a way
- The hidden floor behind the main building: techno.
the light, and a proper floor for the stage.
road to the chicken farm, well past the orchard and the barn. The grass is cut with a scythe (the ground is too uneven for a mower: Toni). The group from Darmstadt brings a geo-dome. Seats to build, a chill-out platform up a tree (about 1.8 m), hammocks to hang.
cut through it one day (axe and spade); beyond it, above the chicken farm, the guests' camping.
The crew (who leads what is settled in the Herberge; it can change)
- Volkram: leads the festival organisation; the web things with you.
- You: the web things; you support or take over any task someone drops.
- Toni: artist organisation with Rouven; builds along; the scythe.
- Rouven: artist organisation.
- Stella and Doro: art and decoration; they lead the snail rescue.
- Pascal: the light, the floor of the main stage.
- Kilian: builds the Obstwiese (psytrance) stage.
- Kerry: wood art with the chainsaw (needs logs and the chainsaw).
- Julia: quick at every job, very good at building.
- Enrico (Go-Darmstadt, the geo-dome crew): fells the big old tree with the
- The ES-Bar collective: the food stand. The Darmstadt group: the geo-dome.
- Jana: one of the crew (her task not settled yet).
- Kurti (the farm is his) and his sons Martin and Jonas: the hosts.
chainsaw. Not from Berlin: never at the meetings, stays on the ground.
How it plays
- Leads decide the small things of their task. Mood and commitment change
- Projects: each floor and side job has stages (ground ready, frame, roof,
- Side jobs: mow the Kartoffelacker (scythe); pick up the vineyard snails
- Injuries: something heavy on top of somebody, a bad fall from high up - a
- The "why" questions (an awareness team, Urinellas, "no shirt, no
- Dev tools: an overview of everybody - role, lead of what, where, doing
with what happens (good or bad turns, how they're treated); someone fed up may refuse or quit - then the task needs a new lead (you, or someone else), and the best person for a task may not end up doing it. The festival is as good as what got done.
floor, paint, decoration, light and sound). Materials: wood from the forest cut to beams and boards; nails, screws and paint bought at the hardware store (by car, from the crew's cash box).
(protected) before the regulatory office comes; Kerry's chainsaw art; the big old tree between the Obstwiese and the Kartoffelacker felled away from the phone line (Enrico: the chainsaw; a rope thrown up high, the others pulling).
broken arm or leg, the ambulance, back days later with a cast (slower).
service", ...): found out through what happens on the way; each answer opens an option for the festival.
what, mood and commitment.
Roadmap (one release each, every one playable)
- The crew: one cast table with roles, the new people arriving over the
- Projects and leads: the floors and side jobs as projects with stages, a
- Materials and money: the cash box, the hardware store, boards and beams,
- The side jobs: the scythe on the Kartoffelacker, the snail rescue, Kerry's
- Berlin: Grossbeerenstrasse and the Herberge as places, the meetings, going
- The "why" questions and their options. (2.45)
- The festival (guests, the floors running, the storm and the evacuation)
first days, the crew overview (dev). (2.39)
lead and helpers; leads decide; mood and commitment; quitting and taking over.
nails, screws, paint. (2.41)
chainsaw art. (2.43)
back and forth between weekends. (2.44)
(2.46), the clean-up with the supporters, the drive home (2.50). In between: the big old tree and injuries (2.47).
People
| You | Volkram | Jana | Toni | Kurti | Martin | Jonas | |
|---|---|---|---|---|---|---|---|
| Who | – | your friend, Jana's boyfriend | your friend | your friend, first time | the house is his, 74 | his eldest, ~30 | his youngest, ~25 |
| Weight | 75 kg | 88 kg | 60 kg | 70 kg | 72 kg | 92 kg | 76 kg |
| Bearing (pride / energy / nerves) | 0 / .2 / .1 | .5 / .1 / 0 | .1 / .7 / .3 | -.3 / .4 / .6 | .3 / -.6 / 0 | .8 / .3 / .1 | -.1 / .6 / .2 |
| Sporty (0..1) | .5 | .55 | .7 | .8 | .12 (old legs: x.52 speed) | .6 | .85 |
| Holds drink | 1.0 | 1.2 | 0.8 | 0.9 | 1.4 | 1.3 | 1.0 |
| Likes: firewood / trees / trash / fire | – | .8 / .3 / 0 / .6 | 0 / -.5 / .6 / .9 | .4 / .6 / -.4 / .3 | .6 / .7 / .2 / .8 | .4 / .9 / -.6 / .3 | .6 / .4 / .3 / .5 |
| Willing | – | .7 | .8 | .5 | .4 | .5 | .85 |
| Skills: firewood / trees / trash / fire | .3 each | .6 / .4 / .3 / .6 | .3 / .2 / .5 / .6 | .4 / .4 / .2 / .3 | .8 / .9 / .4 / .8 | .7 / .8 / .2 / .4 | .4 / .4 / .4 / .4 |
| Tempo / thinks first (s) | 1 / 0 | 1 / .8 | 1.1 / .5 | 1.2 / .3 | .7 / 2.2 | 1.2 / .2 | 1.15 / .4 |
| Break | – | coffee | a chat | a little walk | sits down | none | a chat |
| Main hand | right | right | left | right | right | right | left |
| Pees | standing | standing | standing (Urinella) | standing | standing | standing | standing |
| Lighter | yes | yes | – | yes | yes | yes | – |
| Smokes (craving speed) | .3 | .6 | .2 | .7 | .8 | .4 | – |
| Pockets: cigarettes / tobacco / papers / filters | 0 / 75 / 50 / 120 | 0 / 40 / 20 / 60 | 0 / 10 / 5 / 0 | 0 / 25 / 0 / 15 | 0 / 60 / 30 / never | 12 / – / – / – | – |
| Keys | car | – | – | – | house | – | – |
| Wits | .6 | .7 | .65 | .5 | .75 | .55 | .45 |
| Afraid of heights | .2 | .15 | .5 | .1 | .7 | .05 | .2 |
| Worn from the days before (start) | .15 | .2 | .1 | .35 | .4 | .2 | .1 |
Everybody is one entry of world/cast.c (CastMember: look, bearing, skills, pockets, and their part: role, the Project they leads / helps, commitment, when they arrives); the table above is the first seven. The crew turning up later (hours on the ground): Kilian and Julia (2 h), Stella and Doro (5 h), Kerry (20 h), Rouven and Pascal (26 h) - roles as in "The story (plan)". Hats: Toni a red cap, Kurti a green one, Jonas and Kerry beanies, Pascal a black cap.
Alice the dog: follows, can be petted and called.
What each trait does
- Bearing (pride, energy, nerves): posture, chin, hands, gaze, how wide they stand, top speed and jump a little
- Sporty: top speed (±12%), jump, how quick and sure over obstacles, fewer trips and scrapes, a smooth running wave instead of bouncing and nodding
- Holds drink (with body weight): how fast drink hits
- Likes / willing: which jobs they take, offer, start on their own or refuse; likes make the work quicker
- Skills: grow with every job (Tab, second page); quicker work
- Tempo / thinks first / break: how they work
- Clumsiness, asymmetry (per person): trips, which arm swings more, which shoulder sits higher
- Bladder size: from build and energy
Needs and stats (Tab)
Energy, hunger, thirst, bladder, sleepy, drunk, dirty, sporty; skills on page two. Worn out: "worn out" shows until energy is back above 30%; no running until then.
Behaviours (people on their own)
Taking care: the practised cut even pieces (0.6 m), the unpractised by eye, up to 0.2 m off (firewood skill; ai_work.c ai_taskFor). Done with a tool (idle, wandering), careful people (ai_stackCare 0.5 and up) take it back to where it was at the start (has_home, the tool room, up to 80 m), the others put it down where they are (ai_help.c ai_putAway).
Tools they shouldn't use (ai_work.c, Ai_shouldntUse): the chainsaw with tree skill under 0.4, the axe or chainsaw drunk over 0.6. They use them anyway: a remark when they start, a close call (a stagger, "it kicked back") about every 8 s of work with it. Talking to a worker on a wood job: "Leave the <tool in hand, else chainsaw> alone" / "You can use the ... again". Told, they put it down and take another tool; they ignore it with a chance of 0.1 + 0.45 pride + 0.5 (0.5 - willing) + 0.4 drunk ("Pfft. I know what I'm doing").
| Mode | What they do |
|---|---|
| Idle / wander | stand about (fidgets, gestures), stroll near home |
| Drink | fetch a bottle, a few sips; empty: onto a table or crate in reach, with other empties, into the container, down at the feet, or tossed (careless, drunk, wild) |
| Supply | eat or drink at the apple crate / water barrel; out of Urinellas (bladder under 0.6): fill the pocket at the box by the toilet |
| Pee | hands free first (Hands_setAside: down beside them, taken up again after if still there); the toilet if free and within 40 m (waits a while, less when urgent); else a hidden spot within 40 m: behind a bush, tree, wall, building or car, away from the others; used spots welcome; not where someone else is going; standing: face it, aim at it; squatting: back to it |
| Wake | shake someone asleep or passed out awake |
| Help (G) | push or lift along with you, copy what you do |
| Work (an order) | firewood (fetch tools, fell, delimb, cut, split, stack), trees, trash (bag it, empty bags), fire (feed, light at dusk, sit by it; no working lighter: borrow one from somebody within 30 m - walk over, "Lend me your lighter"; nobody has one: ask out loud every 45 s) |
| Follow | being shown how, or where the woodpile goes |
| Approach | come to you with an offer, a question, a suggestion; left without an answer they ask again, then give up (patience: 12 s x (1 - .35 energy) x (1 - .3 pride), 5..25 s: Jonas, Mila ~8 s, Ida, Ben ~15 s) and are annoyed (+0.4, fades in 3 min: frown, less willing, no approaching while > 0.3) |
| Tidy up | tidy ones pick up trash on the way |
Pockets (src/people/pockets.c): Urinellas (POCKET_URINELLAS 4, one-time use), a lighter (lighter, lighter_uses, LIGHTER_USES 60 full; lighter_of = whose it is when borrowed). Lighter manners (ai.c lighterManners, every 3-7 s): a borrower near the owner (2.5 m, not lighting the fire) gives it back with a chance (0.45 to people, 0.12 to you; less drunk, more careful); an owner near the borrower (4 m) asks for it - another person gives it back (drunk over 0.6: "What lighter?" half the time), you get asked. Talk (hello, choice 3 instead of "Who are you?"): "Can I have my lighter back?" / "Here's your lighter back" / "Can I borrow your lighter?" (annoyed over 0.6: "Get your own").
Smoking: craving grows smoker / 300 s (world.c smoke), falls 1/90 s while smoking. NPCs (ai.c smokeBreak, quiet moment = idle, wander, sitting, a work break, fire duty; 0.98: anywhere): craving 0.75+, something in the pocket (tobacco first when both hands are free, else a ready one), a light (own lighter, or somebody within 4 m: "Got a light?") -> Body_smoke. None: bum one off somebody within 6 m (refused under 3 left, annoyed, or not willing: "Buy your own"); the player is asked. Cooldowns 20-80 s. Body (body.c updateSmoking): roll 7 s (both hands at the lap, licked at the end; waits while the hands are needed), light 1.8 s (in the lips, lighter hand and the cupping hand at the face), burns 200 s (x4 during a drag), a drag every 8-20 s (nervous: sooner) of 1.4 s, then 1.4 s breathing out (puffs every 0.14 s; a thread off the tip every 0.35 s). Hand needed: into the mouth; back to a free hand after a drag. Standing still the hand is held up in front (cig_hold). Drawn in the figure shader (cigA, cigTip, cigGlow: filter, paper, ash, ember). Butt (OBJ_TRASH made with size.x < 0, "Cigarette butt"): flicked or dropped; within 3 m of a burning fire it goes in. Down (a fall): dropped. Player K (game_actions.c smokeOrStop); talk choice 3: "Can I have a cigarette?" / "Want a cigarette?" (lighter topics first).
Smoke puffs (chips.c Chips_puff): small blocks drifting up, growing, drawn without the ink outline (Renderer_drawSmoke: no normal/depth write).
Shadows: 3x3 PCF with each tap blended bilinearly between its 4 texels (common.glsl shadowVisibility, 16 lookups): no stair steps at the edges.
Making room (ai_help.c makeRoom, every frame in AI_HELP): the leader wants to go (movement 0.2+ m/s) and the helper stands in the load's way (inLoadsWay: in front of it along that direction, within its width + 0.35 m). After 0.8 s + 2.5 x (1 - wits) the load's progress is checked (from jam_from): holding on and it goes 35 %+ of the speed: fine; else (or not holding on: shoved along) wits under 0.35 (minus 0.6 x drunk): "Why won't it move?" and nothing; else let go, "Wait - I'm in the way", and for 6 s (clear_time, clear_dir) spots in the load's way are no good spots. wits (object.h, 0.5 by default; table in scene.c; dev menu row).
Bystanders (hands.c inTheWay, in Hands_solveGrabs): people not holding a pushed load that it would go into (moved a step ahead) count against it with their weight (BYSTANDER_HOLD 1.0) and get shoved (the way it goes, shove_load its middle; cleared every frame). ai.c stepAside (not helpers, not sitting): after 0.25 + 1.5 x (1 - wits) s a quick side step to the side they're already off to (0.8 s at 1.6 m/s, no turning first); wits under 0.2: "Hey! Watch it!" and 4 s not minding it. While shoved, a standing leg against something doesn't hold the body back (physics.c steppingOver: their feet stalled against the load before, they got bulldozed along).
Onto, not over (physics.c, the player only - NPCs still step over and round): standsOn (static or STAND_HOLDS 4 kg+, a side facing straight up - boxes, planks, logs and fallen trees lying; not bottles, furniture, bins, supplies, ladders, branches, bags, trash, tools, the fire). Lower than STAND_LOWEST 0.18: not stepped over (Physics_stepsOver false), you walk onto it (tryStepUp with that most, also for loose things). Higher (up to STEP_UP_MOST, STAND_ROOM 0.2 m on top, 0.12 m across): one step up (startStepOver up, STAND_UP_TIME 0.4 s + 0.9 s/m), landing in its middle. Standing on something (feet within STOOD_ON 0.08 of its top) it is never stepped over (it holds you); standing_on (set when landing on something, every step); the object you stand on is skipped by steppingOver / startStepOver / pastTheEnd, and no leg-wait up there. A lying tree (toppled, topple 1) is no longer neverOver. pastTheEnd (player): something you can't step over or onto (neverOver, or neither a low obstacle nor standable up to STEP_UP_MOST; bottom under 1.2 m, top over 0.1 m, not light loose things) that you'd catch with up to END_CLIP 0.7 m of you (END_BODY 0.4: half width and legs), within 1.6 m: you drift past it sideways (veer_side, up to 0.45 of the speed, eased 2.5/s). Wider: you walk round it yourself.
Smooth lines (ink.frag): edgeAt looked at in 4 spots inside the pixel (rotated grid) and averaged (smoothEdge); the fill averaged over 4 taps where their luminance differs 0.04-0.14+ (smoothFill). 4x the edge texture reads: watch it on slow graphics.
NPCs onto things (1.88): the onto-step (up to STEP_OVER_HEIGHT x 1.15) and walking onto flat things work for OBJ_HUMAN too; ai.c longToStepOnto: standable loose things 1.5 m+ long and up to ONTO_HIGH 0.55 m are not in the way for steering (Physics_standsOn), so people step onto a log across their way instead of walking round; a step off says "Whoa!" sometimes. Edges (physics.c middleOverAny): a character lands on something only with its middle over one of its colliders (OVER_EDGE 0.12 m past an edge at most); else it slides off away from it (the body box's corner used to hold it in the air). world.c clutterQuery: a tilted collider (no axis within 0.98 of upright) counts with its surface at the foot (rays down there and towards it), not its highest corner (invisible steps on roofs and tilted boxes).
Buildings made of parts (1.90, world/manor.c): OBJ_STRUCTURE (one static mesh, no collision: Shapes_structure = boxes + windows / panes / doors / door frames + gable roofs, the roof split out of addBuilding as addRoof) and OBJ_WALL (static invisible boxes: the solid parts; variant 1 a locked door, clicked says its name; 2 an outer wall under eaves, for the ladder; 3 a roof slab). Not drawn when there's no mesh. The main building (Manor_build at MANOR_A/B, yaw across; local x along it, +z to the yard): left half x -18..0, z -5..5; right half x 0..18, z -4.2..5.8; ground floor FL 0.7 (4 steps of 0.175), ceiling 3.4, eaves 6.2. Left: front door x -7.6; entrance on the ground (x -9.6..-5.75, z 1.4..4.7), steps up on its left (x -9.6..-8.4, from z 2.6 to 1.4), rail along the edge, the stairs down to the basement on its right; corridor z -0.75..0.75 to the opening into the right half; toilet x -5.6..-3.75 and kitchen -3.6..0 on the yard side (bowl, counter, stove, table); a locked room and the living room on the back side; a closed store room behind your garages. Right: the big room with the 4.2 m table and 8 chairs; its door from the porch landing. Porch z 5.8..7.3: way in at x 18, ground floor, four steps up going left, landing to the door (where: see 1.91 below). The old OBJ_HOUSE main building and its wing are gone.
Main building (1.91): the porch covers the right part of the front only (x 9.5..18, door to the big room at x 11, steps at x 12.6..13.8); the right half's roof ridge runs front to back (ShapeRoof.across, its slabs tilted about z; eaves wall at its right end). Furniture faces where it should: math/linalg.h yaw_facing (fronts +Z: furniture, doors, windows), yaw_along (lengths +X), yaw_front; manor.c gives facings as vectors (FACE_PX ...). The bug was two conventions mixed (openings turned the other way round than objects). Kitchen: counter along the front wall, stove against the big room's wall, a shelf, table with two chairs. Basement (BASE_Y -2.3): stairs down on the right of the entrance (13 steps of 0.177 x 0.25, from the landing at z 4.2 going back, a rail along the well), under the corridor and the back rooms (x -9.6..-0.15, z -4.7..1.4) and under the stairs, toilet and kitchen (z 1.4..4.7); old brick walls round it (ShapeSlab.brick: mortar courses, finer than outside), loose brick walls inside with openings, no doors, loose bricks on the walls and the floor, 8 shelves. The ground goes down there: Terrain_addPit (up to TERRAIN_PITS 4 turned rectangles, kept through Terrain_init): Terrain_height is the pit floor, scene.frag doesn't draw the ground inside (holes, Renderer_setHoles). The unfinished building's walls are brick (courses) too.
Camera (1.91, game.c followPlayer): the third-person boom is pulled in by what's between the head and where it would be (5 rays: middle and 0.15 m round it, World_rayCast with static things wider than 0.35 m; the ground along it), CAMERA_CLEAR 0.25 m off it; in at once, out again at 2.5 m/s (camera_reach). Pulled in closer than 0.6 m your own body isn't drawn.
Chairs (1.91, object.c): sitting down on one pulls it out CHAIR_PULL 0.38 m (CHAIR_SPEED 0.9 m/s, a free hand on its backrest within 0.9 m), from where it stands (tucked); clear of it again it's pushed back in, once nobody stands within 0.6 m of that spot (world.c chairWaits). Sitting down is a set move: no physics meanwhile (the table pushed you off the spot before), and no carrying over (crossing) while sitting.
Ground contact (1.91, physics.c): loose things lifted to their lowest corner's ground (all 8 corners), and once at rest (SETTLE_AFTER 0.3 s) turned to lie on the ground's slope (settleOnGround, up to SETTLE_STEEPEST 0.5); logs and lying round things are stood on at their round top (world.c roundLying). On a slope they slide down (slideDown: round things grip GRIP_ROUND 0.12, flat ones GRIP_FLAT 0.5). Edges higher than SNAP_UP_MOST 0.22 m (a ramp's side, a crate) are one step up (beginStepOver, the onto-move landing STEP_PROBE ahead), not a jolt; stairs are still just walked up.
Walking (1.91, body_pose.c): the hips rise over the standing leg mid-step and drop as the other foot lands (WALK_BOB 0.022 m, more for the unfit and the bouncy), until jogging takes over; side steps: the hips stay near the middle (SWAY_MOST 0.045). The springs that follow a moving goal (hips over the character, swinging feet, hands) lagged behind it as far as they were allowed (the hips 8 cm: sideways when strafing): springStep now moves the goal on during the step.
Trees and stumps (1.91): a tree's foot flares out (FOOT_FLARE 0.12 up to 0.45 m) into roots, and its stump is that same foot (shapes_addTrunkFoot, seed Shapes_treeSeed of the spot, as wide as the trunk): nothing pops when it's felled. A felled trunk shows its sawn end (trunk_cut), it isn't hollow.
Shared code (1.91): one box ray (Collider_ray, Object_rayToCollider; the ladder's copy is gone, world.c's down ray uses it), World_rayCast, Object_reach. ARCHITECTURE.md (modules, the frame, conventions) and RULES.md (do's and don'ts), kept current.
Unfinished building (Shell_build, at SHELL_AT in the frame's frame): brick shell 6.4 x 4.7, walls 2.9, open front (2 m) to the frame (now only the front half: pillars at z -13.8 / -9.2), window holes, bare floor, tiled roof with slabs. Barn: brick courses on BUILDING_BRICK walls (addBrickCourses: mortar a shade lighter, so the ink doesn't trace it), ivy (Shapes_ivy, OBJ_STRUCTUREs) on both long sides; the woodpile (OBJ_WOODPILE "Woodpile", WOODPILE_A/B) left of the toilet, everybody's woodpile from the start (scene.c Scene_finish). Fireplace tripod: wooden poles, feet TRIPOD_OUT 0.9 m outside the stones, TRIPOD_PAST 0.4 m past the top, a lashing; each pole an OBJ_WALL along it ("Tripod pole"). Gates (FURN_GATE, green boards): in your garages' doorways (GATES: hinge, end), gate_open / gate_t, hinge, gate_shut / gate_out; Object_swingGate (1.2 s), driven by showProps; a click within 1.2 m opens / shuts both leaves.
Props that show (1.89, world.c showProps every frame): the tin's mesh is built again when its butts change (Shapes_ashtray: up to 12 show, the ash rises, a heap from 14; shown = what's built).
The ramp (scene.c addRamp via Scene_finish, after the terrain): a static plank 1.2 x 0.15 x 3.2 m, 20 degrees up, its foot on the ground, its top on a block (the loose tilted test box hung in the air at one end: loose things never turn in the physics). Tilted things in the physics (1.89): tryStepUp takes the surface just ahead of you (STEP_PROBE 0.3 m, rayDownInto), not the highest corner; the footprints (middleOver, clutterQuery) use the whole box's outline seen from above (a tilted plank's thickness had counted as narrow).
Tiredness (object.c Object_tiredness: sleepiness from 0.25 up x (1 - 0.35 energy) x (1.2 - 0.4 fitness) + 0.4 drunk): the stamina ceiling TIRED_CAP 0.55 lower, effort TIRED_EFFORT 0.6 harder, rest (awake) TIRED_REST 0.5 slower (condition.c), Object_vigor 0.25 lower (speed, jumps, work).
Balancing (world.c -> body.balance_goal from Physics_footing: 1 at a top 0.3 m wide or less, 0 from 0.75 m; body.c updateBalance): teeter is a sprung wobble (3.2 rad/s, damping 0.35) kicked at random (TEETER_KICK 40 x (0.25 + 0.6 clumsy + 1.6 drunk + 0.35 speed + 0.4 nerves) x (1.25 - 0.75 fitness)); past 1: Body_stagger sideways (stepped_off -> "Whoa - you lose your balance and step off"). Pose: arms out to the sides (the one on the tipping side lower), the hips with the wobble, the upper body against it; walking BALANCE_SLOW 0.55 slower.
Chainsaw: collider and pivot fit the mesh (the motor's underside on the ground), the bar lower on the motor (it floated).
Ladders and things in the way (ladder.c): aiming with the view also tries 0.05 / 0.1 rad above and below (thin beams); hitting a beam from below takes the side towards you. Falling over (fallOver, now with the world: Ladder_update(world, l, dt)) it stops against anything solid it goes into (caught: leaning there, CAUGHT_STEADY 0.45, lean_top if its top is over the thing; just_caught -> the game says so). Carried held up (world.c dipLadder): running into something -> dipped (raise goal RAISE_DIP 0.12, nearly flat) if flat gets it out, else steep; down and clear, up again once it would stand up at 1.36 without going into anything.
Climbing for anybody (people/climb.c, moved out of the game): Climb_ledgeAhead, Climb_start (says why not: hands, strength, drunk), Climb_update (the pull up, its feet and hands), Climb_overLadderTop; the move lives in the person (climb_move). Helpers (ai_help.c ai_followByLadder): the leader 1.2 m higher (standing, not climbing): a leaning ladder within 25 m from their level to the leader's (top within 1.3 m) - to its foot, up (ai_climbing: on a ladder or pulling over its top this runs first, whatever the mode), over the edge; none, and the leader within reach (CLIMB_REACH): walk at it and pull up where the edge ahead is at the leader's level ("Hup!"). The leader 1.2 m lower: to the top of a ladder from up there and down it; none: they just walk off (the landing does the rest). A ladder leading nowhere (no top to get off at): down again after 8 s. Ai_useWorld gives the AI the world for this.
Walking styles (Body.style[4], -1..1 per person, made from the quirks - no extra dice, so nothing else changes): feet apart x (1 + 0.15 style0), toes out + 0.04 rad x style1, the bob x (1 + 0.35 style2 + 0.25 lively), the hips swaying over the standing foot x (1 + 0.35 style3). (The audit swings both ways with it - it changes where everybody goes; overall the player's numbers are lower.)
Ashtray (FURN_ASHTRAY, an old tin on the cool box by the fire - on the ground it was in everybody's way, stored = butts): a finished cigarette within 4 m of it goes in if it's yours or the smoker is tidy (likes trash over 0.2 or pride over 0.4, under 0.6 drunk). Emptying it (ai_help.c ai_tidyUp, ASHTRAY_FULL 12 butts): somebody tidy (likes trash 0.35+), idle or wandering, a hand free, not smoking, within 50 m walks over (gives up after 45 s: skipped a while); ai.empty_tray -> world.c emptyTray: the butts into a scrap of paper ("Butts in paper", OBJ_TRASH) in the hand, stored 0; then to the bin like other trash. Trash just out of reach is skipped instead of reached for again and again (Ida stood still for minutes). Standing to pee, one hand holds it (the Urinella to the body; the side by quirk[1]), the other stays at the belt (body_pose.c). The Urinella is drawn while it's used (skeleton uri, a funnel from the body to the spout; the stream starts at its end); standing with one, a skirt or dress is lifted higher in front. You take up again what you put down to pee (ai.set_aside, within 1.8 m). The others slip off wobbly ladders like you (ai_climbing: wobble, then the ladder falls sideways).
Smoother: walking up to something (goTo) slows down as they get there (no full speed then stop, then on again); on a chat break they stay "close" until 1.6 x the chatting distance (was: one frame walking, one standing, after somebody walking slowly - the whole body shook). Arms: when the elbow's pole lies nearly along the arm (a hand going up past the shoulder) the bend leans on "out to the side" or "down and back", blended (twoBone, arms only), and an elbow moves at most 5.5 m/s (JOINT_TOP_ELBOW): no elbow flipping over (worst arm jump in the audit 58 -> 40 cm).
Night clothes (world.c dressForNight): chill 0..1 grows 1/60 s at night (21:00-7:00) away from a burning fire (drunk: slower), falls by a fire (1/60 s) or in the day (2/60 s); over 0.6 the jacket (look.top TOP_JACKET, colour per person: Figure_wardrobe) goes on, under 0.15 off. Drawn a bit bulkier, long sleeves, a zip and a darker collar. The sun logic only takes off / puts on the shirt, never the jacket. You too (game.c sunShirt: working = a stroke in the last 3 s).
Urinella, trying: a woman who never had one (urinella_tried 0), bladder 0.35-0.65, chance 0.1 + 0.2 energy per think: fetches some from the box (30 m). The first one used decides: like = 0.6 - 0.3 shyness - 0.2 (pride over 0.5) + 0.2 energy; not liked: back to squatting ("not for me"). Craving: dying for a smoke (0.8-1) adds up to 0.5 x smoker to the nerves shown. A wobble rocks the ladder (shake, 1.2 s). A heavy piece to drag and nobody to call: the player is asked ("grab it with F").
Shirt off (ai_work.c ai_sunShirt): sun_heat grows 11:00-17:30 while felling or making firewood (or helping with a tool), faster when tired; at 90 s the shirt comes off (look.top: TOP_BARE men, TOP_CROP women; not the shy, pride under -0.3), under 40 it goes back on (cools fast after 17:30). Policy "no shirt no problem" for now; maybe "no shirt no service" later.
Getting about: straight at it, round things in the way (local look-ahead); leads into a corner: a way round from the walking map (src/world/nav.c, 0.4 m grid of fixed things, A*). When fixed things change (cheap signature over all of them) only the cells round what moved, turned, came or went are done again (a table of each fixed thing as last built, by pointer; more than 32 changes at once: the whole map): a felled tree 0.3 ms instead of 10 ms, the same cells as a whole rebuild. They remember 4 things they couldn't get at.
Watchdog (every behaviour except waiting ones: idle, help, follow, drink, breaks, talking, sitting): nothing happening for 25 s (150 s while working on something): let go of the target and look again; again: give the job up ("I'm stuck here").
Jobs with tools: fell, take branches off, cut a log, split, chop out a stump (axe, chainsaw, shears, hands). Talk topics: offer, ask, suggest, where (new woodpile spot), ask for a hand, ask for the tool. Shout menu: everybody, by name, the dog.
Body
- Poses: up, falling, lying down to sleep, down, getting up; sitting on a seat or cross-legged on the ground. Lying down (or falling) before ever having faced anywhere (asleep or passed out right where they stood): back, as usual (it collapsed into a heap "sitting over the floor")
- Fidgets (standing about): shake a leg, rock on the toes, stretch, roll shoulders, stretch the neck, fold arms, tap a foot; two-handed: rubbing the hands (nervous), hands behind the head (at ease, proud, lively), both hands on the hips (proud)
- Gestures (one hand, idle;
body.cpicks,body_pose.cgesturePalm): hip, scratching the head, chin, pocket, rubbing the neck, rubbing the nose, earlobe, back through the hair, thumb in the belt, hand on the chest, shading the eyes. Weighted by mood: proud (hip, hair, thumb), shy (pocket, neck, ear, chest), nervous (head, chin, nose, ear), tired (neck), lively (hair, shading). Everyone has two habits of their own (habit, x3 and x2) - Clothes (
FigureLook.garment, drawn infigure.frag): trousers, shorts (bare shins), a skirt (pants colour) or a dress (shirt colour): a cone from the waist to just below the knees, wider as the knees part; under it bare legs. Squatting to pee (Skeleton.undress, from the pee and the crouch): trousers down to the knees (hips and thighs bare, the trousers bunched round the shins), a skirt or dress gathered up to the hips. Cast: You and Ben trousers, Jonas shorts, Ida a skirt, Mila a dress Under a skirt or dress the thighs are cloth too (a leg pressing out shows as cloth, not leg through it), the cone 0.165 m round at the top. - Urinella (
world.cusedUrinella, when she's done): a pack of 3 (urinellas; none left: she squats). Mishap now and then (4 % + 25 % drunk + 12 % clumsy: on the shoes, dirtier). Then tidy (into the bag: 75 % - 60 % drunk - 25 % clumsy + 10 % pride), else dropped at her feet or flung (more often the drunker) as trash ("Used Urinella") - Face: mouth, eyelids, brows, smile, gaze; drunk, tired, shy, proud show in it
- Falls: straight over, knees first, twisting, diving forward; reeling back first; stumbles over the foot that caught
- Where a fall lands: the way it was going if there's room, else turned aside or shorter (crumpling at the foot of a wall); lies across things up to 0.5 m high, never into or over higher ones; no part of the body goes into what it comes down on (lifted onto it, limbs refitted); sitting, the legs rest on what lies in front; the lift eases in and out (5 m/s), no jumps
- Pushing and pulling (F): look left / right past 12 deg and it turns that way about its middle (you and helpers walk round with it), as fast as strength against weight and size allow, never into walls or heavy things; Ctrl: free look, no turning
- Moving: walk, jog, sprint (a wave up and down with each stride; everyone's own stride, longer and fewer or shorter and quicker), jumps off one foot, steps up and down, slopes, carrying, pushing, pulling, lifting together
- One end up: a log (1.4 m and longer) too heavy for one person but not for half its weight: held within 0.8 m of an end, that end comes up to the hip (hands slide to it), the other drags on the ground and pivots there; you go at 75 %; a second person takes all of it (
hands.c, endLift). Whoever can carry the whole weight lifts it all - Arms out of things: standing, an arm that would be in something solid (fixed or 40 kg and more; not ladders) moves back and out (eases at 2 m/s) and is fitted again; a hand holding an edge stays, the elbow swings back over the edge
- Speed limit: no joint moves faster than it can (hands 14, feet 12, knees and elbows 9, trunk 5 m/s); bones keep their length; a limb folded right up (foot by the hip, cross-legged) keeps its bend instead of being fitted again (that flipped the knee); between folded and stretched (30-42 % of its reach) the two blend, so an arm folding up on an edge no longer jumps (elbows popped 31 cm); an elbow swung up over an edge stays solved that way
- Any frame rate: springs are solved exactly per frame, people pushing each other ease apart gently, helpers stay put once there (or blocked close by): no flicker at low, high or uneven frame rates
- Approaching obstacles: the sporty fit their steps to a good take-off spot; jogging or faster (2.9 m/s+, some energy, not very drunk) low things (15 cm up to about knee high, up to 0.7 m deep) are jumped on their own (
physics.churdle / jumpOver): no slowing down before them (the run-up counts), off when the top of the jump comes over its middle, as high as it takes to clear it by 14 cm (feet tucked 18 cm) and long enough to land 25 cm past it, at most a full jump (else stepped over, slower); course test (jog / sprint): legs in obstacles about a third of before, joint jumps -30 %; running into something: trip or headlong over it if low, stagger back or fall to the side if high (speed, fitness, energy, clumsiness) - Walking over knee-high things (20 cm up to about the knee, walking, the landing free): a set move instead of the feet on their own (
physics.cstartStepOver / stepOverMove,world.coverFeet): 0.9 s + 1.6 s per m of height (less sporty: slower); the foot further back goes first (up, over, down 16 cm past it), the hips go to between the feet, then the other foot (swung out for higher things, the body up on the toes), then the body on past it. Always finishes. Course (walk): legs in obstacles from 60/15/1 frames (thigh/shin/foot, worst 25 cm) to 8/16/1 (10 cm), joint jumps 27 -> 16 - Stepping up (the player, walking): a block above knee high up to 0.75 m (scaled) with 45 cm of room on top (fixed or 40 kg+, not furniture, bins or supplies): the same set move up onto it, the first foot 20 cm in from its edge, the body rising onto it from 30 to 78 % of the move. Course (walk, the static lane): legs in obstacles from 55/47 frames (thigh/shin) to 19/13, joint jumps 63 -> 37. Set moves, jumps and step-ups only for things standing on the ground in front of you (one up on something else: no)
- Up onto things at a run (jogging or faster): a block up to 0.95 m high with 40 cm of room on top (fixed, or 40 kg and more) is jumped onto, timed to come down on it; higher (up to 2.05 m, sober, some energy) running into it you catch it (no bouncing off) and the climb starts
- Over obstacles: lean into it, the leg swings out a little and back in; lift the foot first, then over; the body waits for the back leg; knee turns out, or the foot comes up; sprinting, leaps; careless people just step on small things; trips and scrapes by speed, height, condition
- Bushes: trying to get over one ends in it, twigs snap
- Half way over something: from when a foot is well into a step over something (lifted 12 cm+, 15 % into the step) until the body is over there (6 cm behind where that foot came down, at most 20 cm past it), you're crossing (
body.ccrossOver): stopping (or slower than 0.3 m/s) the body carries on over it at 0.6 m/s (physics.ccarryOver); the foot over there stays down, the other comes after. Walking back takes you back; the body 0.75 m or more back from it (walked off the other way) ends it too - that was missing: a person could walk on with one foot stepping again and again and the other left planted behind (NPC audit: foot slides 3414 -> 346). Standing still half over costs energy (2.5 %/s, a leg held up 6 %/s; less sporty, more); worn out, held longer than 1-6 s (fitness, energy) or legs over 0.95 m apart: you're made to go over; still stuck 1.5 s later: you fall (world.chalfOver) - Sure-footedness: one factor (
world.c, unsure: ~0.2 sporty and careful .. ~1 average .. ~2.7 clumsy and unfit) scales every trip, slip, scrape and run-into, and how bad it gets; clumsy and unfit, you also stumble over your own feet jogging or running - Climbing: hand on it (up to 1.35 m), hang and pull up (higher, both hands free), jump for the edge; ladder up and down, over the edge at the top. Walking up to something 0.7–2 m high, the hands go onto its edge first; pulling up, the feet push against the face below the edge, then the right knee and foot come over onto it, then the left (scripted in
game_actions.c, climbFeet); knees bend up. A foot below the edge goes back until its (forward bent) knee is 8 cm clear of the face (game_actions.c, kneeClear); onto something low (under 1 m) the body rises quickly first, so the knee comes up above the edge. Walking up to anything higher than 0.5 m, the feet stay 0.35 m back from it (room for the knee;body.c, footSpot). Climb test: 0.8-1.5 m, walking or jumping, legs at most 5 cm into it (was 19 cm at 0.8 m). High pull-ups: pulled up till the arms press down (hips near the edge), then the knee comes up and you rise; the hands go on ahead onto the top and stay there, the back bends over the edge as far as it takes to keep them on it (body_pose.c, reach_bend). Jumping: holding Space (or W) grabs an edge the hands reach (about 2.4 m); up to 0.35 m higher, the fingertips touch it ("Just out of reach"); hands go up wide, then onto the edge. Smooth pull-ups (audit walk: joint jumps 161 -> 58, the worst 22 -> 10 cm): the climb ends at the highest point under the body's footprint (where the physics stands you: no hop), each foot lands on what's under it, no replanting at the end (the feet are there already; body velocity zeroed: no stride ahead); feet over the edge over longer windows (lead 0.56-0.86, trail 0.74-1.0 of a high climb); kneeClear eases the foot back in 1 cm steps and lets go gradually as the knee comes over the top; the knee pole for pulling up eases in and out (pull_knees); an elbow swinging up over an edge blends between the two solves (no flip at half way); a hand taking hold eases out of the arm's "move out" (arm_hold). Every climb starts from where the feet are (noteFeet, eased in over the first 15 %); each foot's height on top is taken under where it ends up (clamped to 0.3 under / 0.15 over the top: roofs slope); below the edge the knee room (kneeClear) blends out as the foot gets over the face or above the top. Ladder: getting on, the body eases over onto it (ladder_shift, 1.6 m/s) and hands and feet go onto the rungs from where they are; over the edge at the top is a pull-up (1.6 s,climb_facewhere the top rests; the body ends at its stand height on the roof,standHeight); stepping off at the bottom is a 0.6 s step back, one foot down after the other, the hands let go half way (ladder_off); taking a leaning ladder down, the hand reaches for its rail at chest height (not its middle up the wall) and it stays held as steep as it leaned. Audit ladder: joint jumps 163 -> 45; climb test 458 -> 180 (the easy 1 m climb no longer drops you off again) - Drink and the rest: sips, burps, sways, veers, sick, passes out, sleeps it off; pees (stream lands on the real ground, soaks in or puddles)
- Throwing: underhand lob, overhand when wound up long enough
- Carrying one-handed: hangs at the side by its top (a bag by its neck), wide things with the arm a little out; only long things (ladder, logs, axe) stop you at walls, bags and bottles squeeze by
Things
Ladder steadiness (ladder.c): set when it's leaned (stability): 1 - 0.7 x (degrees off 75: flatter / 15, steeper / 9), x (1 - 0.6 mud at the foot), x (1 - 0.6 x feet off level / 12 cm), a bush x 0.2, something loose and light x weight / 60 kg, only against a face x 0.85; step ladder 1. Ladder_steadiness: 1 while somebody holds it (held_by, standing within 0.5 m of the hold spot 0.6 m out from the foot), else stability. Climbing (game_actions.c ladderSlips): risk a second while moving 0.9 x (1 - steady)^1.5 x (0.3 + height / 3 m) x (1 + drunk); first a wobble (remembered 30 s), then Ladder_topple: sideways, or back off the wall when steeper than 80 deg; you come off (a fall above 0.6 m; the landing does the rest). Placed: under 0.5 "very wobbly", under 0.85 "a bit wobbly".
Sporty is quicker: pull-ups x 1 / (0.6 + 0.9 fitness) (hard ones; easy ones the square root of that), the climb over the top of a ladder too, up and down a ladder x (0.7 + 0.6 fitness) (hands and feet to the rungs as quick). Stepping over stays as it was (quicker made the legs jumpy in the audit).
Toppling (ladder.c fallOver): about its foot like a rod (theta'' = 1.5 g / length x sin theta), then it lies flat, loose. Stood up with nothing to lean on (standFree, a held-up ladder clicked at nothing): 0.6 m in front, tilted a little away, falls over once it's up. Carried slid out: nearly upright (1.36 rad, 1.15-1.52 with the view).
Holding (ai_help.c ai_holdLadder): helpers (G) hold the ladder their leader climbs; idle / wandering people with willing over 0.6 come within 12 m when somebody is on a ladder under 0.85 steady. They put things down, stand 0.6 m out from the foot facing it, both hands on the rails at 1.15 m along, the right foot on the bottom rung (Ladder_poseHands / Ladder_poseFeet), and let go 3 s after nobody is on it ("There you go.").
The work place (ai_work.c prepareSpot, before splitting or cutting a piece, once per piece, last 4 remembered): loose things up to 25 kg (not wood, tools, the woodpile) within 0.9 m of where they'd stand = messy; something fixed or 60 kg+ (not wood, trees) within 0.35 m of it = cramped. Tidy (likes trash over 0.5, or stacking care 0.65+) and only messy: they clear it ("Let me clear this away first"): each thing carried 2.2 m to the side. Cramped (or messy and not tidy) and an open spot 2.5-4.9 m away (fixed things 1.3 m off, loose 0.9 m): the piece goes there - carried (the carried piece doesn't go to the pile meanwhile), else grabbed and dragged; over 30 kg somebody idle and willing within 20 m is called ("X, give me a hand moving this?", they help like a G helper). Gives up after 45 s.
Ladder kicks (physics.c push / noteBump): a lying ladder is stepped over (only a leaning one is never), walked into it moves 0.15 of what a loose thing would, at most 0.25 m/s; walking into it counts as a bump: "Ow..." / "Ouch! My toe!" (drunk: a stagger).
One-handed ladder (game_actions.c oneHandSlip): climbing with something up to 5 kg in the other hand. Slip risk a second while moving: 0.16 x (1.3 - fitness) x (0.6 + clumsy) x (1 + 3 drunk) x (1.5 - energy) x (1 - 0.9 practice); ladder_skill grows 0.01 a second of it. First slip a wobble (3 s), the next one a fall (on the bottom rung: you just slip off).
Landing from high up (world.c landFromHigh, body.c Body_land): the fastest fall speed in the air (air_fall) at touchdown. In the air, falling over 2 m/s with the ground 0.5 m+ below: feet pulled up (knees to the belly), 0.12-0.28 s before touchdown the legs reach down. Landing: under 5 m/s nothing extra; over it always into the knees first (land_squat); going along (1.2 m/s+) from 6.5 m/s up to 8 (+1 the very sporty) a roll for the sure; up to 8.2 the knees alone (the sure); else a crash (Body_fall, -0.25 energy, dirt). How bad it was: a twisted ankle or a broken bone (see Round 2.48). The player now spawns 1 m up (was 4: that would be a crash).
Ladder: one click at a wall slides it out to fit (top on the edge, 0.9 m over it; up to its 6 m) and leans it; slid out by hand, it keeps that length. Putting it up is a 1.1 s animation (ladder.c, putUp): stood upright, slid out, tipped onto the wall; you stand still with both hands on it (game.c, puttingUp); it can only be climbed or taken once it leans.
Drink on the fire (camp.c Camp_pourOnFire, C right at a burning fire with a bottle): 0.1 l a sip left goes on as water (beer, water); enough for the fire (Camp_waterNeeded: 0.2 l + 0.25 l per kg) puts it out, else it hisses; vodka flares (the water on it is gone). Hint shows when you stand there with a drink.
Hose and fire (hose.c): each node of the rope has melt (0..1), heat and taped. Near a burning fireplace (within its flames: (0.25 diameter + 0.1) x flame size + 0.15 m, below about 1 m over it) it heats up and melts (15 s right in the flames to burn through); melted past 0.35 it leaks (12 % + more the worse it is; up to 90 % lost; it squirts onto the ground there); at 1 it's burned through: the rope comes apart there (no constraint, not drawn), nothing comes out at the nozzle, the water runs out at the break, and the end you hold is loose (no reach limit). Drawn darker the more melted, glowing while hot. Duct tape (OBJ_TAPE, on the workbench) clicked at a melted bit tapes it (grey band; no leak); burned through it won't hold. Shears clicked there cut out the run of melted bits and join the ends: the rope is laid out again along what's left (length shorter, at least 3 m). Too hot: "pull it out of the fire first". world.c water: flow scales the water and the arc.
Folding ladder (variant LADDER_FOLDING, 9.8 kg so it carries one-handed): two 2.5 m sections on a hinge (shapes_props.c, Shapes_foldLadder: the upper section swings round the hinge by extend). It is either folded (2.5 m) or open (5 m, 18 rungs); leaning at a wall it always opens fully, the putUp animation swings the upper half up. ladder.c lengthFor / rung / rungCount pick per type.
Step ladder (LADDER_STEP, 7 kg): a 1.95 m front leg with 5 treads plus a platform, the back leg hinged at the top (Shapes_stepLadder, extend = how far open, 30 degrees between the legs, each 15 off upright, so the treads are set level). Two colliders, one per leg (ladder.c fitColliders). standStep: stood up 0.45 m in front of you; a wall within 0.6 m past its back feet: back to the wall, 8 cm off; lean_top = its length when the wall top is between 0.6 under and 0.9 over its top, so the usual "over the edge" works. Feet only on the treads (top tread 1.39 m along), hands on the platform. Taking it folds it up again. NOTE: mat4_rotate_x(a) turns +Y towards -Z.
Raised ladder: slid out (extend goal > 0.5) and in hand, it's held 0.45 m up from its foot, the hand in front, the other hand higher up the rail, tipped up 60 deg in front (43-83 deg with the view pitch, eased 1.6 rad/s; ladder.c Ladder_placeHeld). A click leans it where you look (view ray, ladder length + 1.5 m; else a ray along the ladder, length + 0.8 m; a top face: the side towards you under that edge). Aimed within 0.45 m of the top it rests on the edge; lower, against the face at that height, flatter (no flatter than 55 deg: "aim at least X m up"); its foot at most 1.8 m from you. Looking down (view y < -0.6) a click slides it together; nothing aimed at: says so.
Carrying long things (ladder, logs: 0.62 m and longer): they stop at people and the dog like at walls (unless you carry it together), push them out of the way (up to 25 cm a frame), knock light loose things aside; NPCs treat a long thing someone carries as in the way and walk round it (world.c pushOffCarried, ai.c ai_blockedBy).
Clicking with a tool in hand: if there's something it could work on within its reach + 0.6 m and not behind you, the click is for the tool (or "Step up to it"), never a pick-up into the free hand (Tools_jobNearby).
Felling: a started notch is hit again by anyone whose axe reaches its height; a stroke elsewhere starts a new notch from zero (the tree is never felled at a spot hit only once, so the stump is as high as the notch you saw).
Work shows: axe strokes throw wood chips (they lie 7-10 s), the chainsaw sprays sawdust (gone in about a second), a pale band of cut wood grows round the bark where a tree, log or stump is being cut (src/world/chips.c, Object_markCut).
Piling styles: how neatly someone stacks (ai_stackCare: firewood skill and liking, clumsiness, tempo, drink, nerves, pride, energy) sets how far each piece lands off its place (pushed in, to the side, askew). Below 0.55 care a pile 3+ layers high may come down as it grows (more often the looser and higher): the top pieces slide off and are loose again ("Oops..."); they get restacked. Care 0.7 and up (object.c Object_stackFirewood): sorted by length - pieces 4 cm and more under 0.6 m take the last free place of the lowest layer with room, the others the first - and pushed in so every front end lines up (+Z side of the pile). Care 0.6 and up (ai_work.c tidyBranches, after the firewood is stacked): branches and twigs up to 3 kg lying about the work area go onto a heap 0.8 m off the end of the woodpile, two at a time (stored = on the heap). Chips are left: they're gone in 10 s anyway.
Woodpile: firewood is stacked into the lowest free place (gaps left by pieces taken off are filled first); it counts what really lies on it; a piece that fell off is loose again (gets restacked).
Bottles (beer, vodka, water), apples, bread, sausages (grill: done, dark, burnt), crates and boxes, logs, branches, firewood, stumps, woodpiles, fireplace, trash and garbage bags, the waste container, tables and garage furniture, stones, garden hose (a rope: falls, lies, drapes round things), watering can, duct tape, telescopic, folding and step ladder, axe, shears, chainsaw, trees (fruit trees too), bushes, cars, buildings.
World
The site (farm, courtyard, garages, orchard, houses, pond, field, forest), day and night, fire light. Tiled roofs have an underside under the eaves and under the overhang past the gables (seen from below it is closed). Ground: meadow wears into paths; tar, concrete, gravel and tracks are part of the ground; water soaks in by soil, runs downhill, puddles, mud.
Testing switches
- Backspace: call off showing someone how / where (they say "never mind" and go back to what they did)
- Esc: menu (the game waits): Resume, Keys (show / hide), Quit; mouse or Up / Down + Enter
- Dev menu (F1), second line: teleport you to the parkour (Right) or the yard (Left). Then pick anyone (Left / Right on the first line) and change: female, Urinella, sporty, drunk, energy, bladder, hunger, thirst, sleepy, strength, annoyed, pride, lively, nerves, clumsy, willing, likes and skill for each job (Up / Down: line, the list scrolls; Left / Right: value)
START_AT_COURSEinsrc/game/game.c: start at the obstacle course (1) or in the courtyard (0, default); the course is there either wayARRIVE_BY_CARinsrc/game/game.c: 1 (default) the start in the car; 0: standing in the yard, the car on the road with everything in it
Speed
A cell grid of the site (2 m cells, src/world/grid.c, built once a frame) answers "what's near here" for the ground, legs, arms, physics and steering. World update per frame (no drawing): 5 people 0.5 ms, 150 people 3.2 ms, 300 people 7.8 ms (was 3.4 / 108 / ~215 ms). For the festival (750 people, -O2, crowded round the yard): 22.3 -> 14.2 ms - a per-frame index of the people, fireplaces and stink (object.c Object_indexKinds / Object_kind: valid for that objects array and count, else everything is looked at) for the scans everybody does (fire near, stink, sleepers, who's watching, scorching, grilling), who's around for the mood from the cell grid (Condition_useGrid), and people more than 30 m from the player (25 m to come back) don't keep their feet and hands out of things (far_off: no clutter / push-out questions, which were a third of the update). Memory: 383 MB with 5 people, 408 MB with 750. Drawing (software GL here, so only relative): 5 people 216 ms, 300 people 867 ms a frame - each figure is a card whose fragment shader draws the body, so it costs by how much of the screen they cover.
Playing it (in detail)
Everything the player sees and does, area by area (the README only lists it briefly).
Look
Painted in the rotoscope style of Waking Life (2001):
- Wobbly geometry and boiling ink outlines, animated at 12 fps; diagonal
- Flat paint tones with hand-drawn shadow shapes (soft, smooth edges)
- Color moods that change through the day, under a calm painted sky
- People are painted figures with faces, hair and real arm and leg movement
- Feet are planted on the ground: real steps, side steps, slopes, roofs
- Hand-lettered ink text (Gochi Hand, SIL Open Font License) that boils with the pictures,
- Stats on a painted sheet of paper (Tab)
lines and edges are smoothed (no pixel stairs)
with only a faint paper edge
Berlin and the weekends
- A new game starts in Kreuzberg, Grossbeerenstrasse 37, 3rd floor: you,
- Then the Herberge bar a week later, the whole crew on two benches at the
- Friday: the drive in (Arriving, below). Those who come later wait in
- Sunday afternoon Volkram calls it: at six everybody goes back to Berlin.
- Backspace skips a meeting (the first answer to everything). No saving
Volkram, Jana and Toni at the kitchen table on a Wednesday evening. They talk (speech bubbles); when it's your turn, answer with 1 - 5: are you in (keen lifts everybody a little), the festival's name (Entropie, Kartoffelrave or Wriezen Calling)
long table: who does what is said (artists, decoration, light, the food stand, the geo-dome), then each floor is asked about - the one keen on it says so, you pick who leads it (or yourself, or nobody yet). Picked, they're into it; passed over, a bit less. Then the cash box: 50, 80 or 30 each
Berlin till they're due
The Herberge again: each floor's lead says how far it got, Toni the mowing and the snails, Jana the cash box and the mood; a floor nobody leads is asked about (the three most into it, you, nobody); what next weekend is for - the floors (they go to work on them more often), the side jobs, or a party (everybody happier, less work); the cash box nearly empty: another 20 each? Then Friday at five on the ground, everybody at the fire, fresh from home
during a meeting
The why questions (J: your notebook)
- Things festivals do today, found out on the way: free Urinellas, an
- Your notebook (J) says what made you wonder and who could tell you. Ask
- The next Herberge decides: do we do it, or not this year. Yes: those who
- The notebook also has who leads the floors, the cash box and what the
awareness team, "no shirt, no service". Each comes up when you see the reason - a woman peeing standing up with a Urinella, somebody down drunk that nobody noticed, a guy working shirtless (within 25 m) - or, if it hasn't by then, somebody asks it at the Herberge (one a meeting)
them (X, 4, then 5 - "Why do festivals ...?"): who knows explains it (and likes being asked), who doesn't sends you to someone who does. Understood, the notebook has the whole reason
told you are happier (the Urinellas cost 60 EUR); no: a bit less
weekend is for
The big old tree (Enrico)
- Between the Obstwiese and the Kartoffelacker, just south of the gravel
- Enrico from Go-Darmstadt (the geo-dome crew) turns up Saturday morning of
loop, stands a big old tree (about 21 m, a metre through). It leans towards the road - and along the road's other side runs the phone line on wooden poles, the tall mast nearest the tree
the first weekend and takes it on in working hours, like the side jobs (F2, the projects page; your notebook has a line on it):
- He looks at it and puts the throw line (a little bag on a long cord)
- You throw it: pick it up, look up at the crown, T (hold to wind up -
- The notch: with the chainsaw (he fetches it), on the side it should
- "Everybody on the rope!": the nearest crew (four at most; not Kurti,
- Three or more on it, nobody standing where it could come down: the back
down at its foot: "A rope up high, then we pull it the other way"
longer: harder), let go. Where it touches the crown it catches over a branch: the height is said (from about 5 to 16 m). Low? Left click at the rope's end at the foot: pulled down, throw again. Nobody throws it for an hour and a half of his time: he does it himself (6 - 7.5 m)
fall to (about 40 minutes of his time)
nobody hurt or drunk) go out to the rope's end, 28 m out in the meadow, and take hold. You can too: left click near the end (walk off: let go)
cut. People in the way get shouted at; after 45 s he cuts anyway. "It's going - PULL!" - they lean back into it
- Which way it goes: the pull (how many, how fit, how high the rope) and the
- It's old and half dead (gaps in the crown, brown dead layers, the top
- You can fell it yourself with the chainsaw - without the rope it goes the
- Lying down it's a big tree to delimb and cut up like any other (big logs)
- The Herberge hears how it went
notch against the lean and a gust. Plenty of pull: right where it should. Not quite: off to the side. Not enough: round towards the road - across it and through the phone line: the wires torn down, the phone company's bill (1500 EUR from the cash box), Kurti cross, everybody a bit down. Enrico jumps out of the way to the side it's not turning to
snapped off): it has to come down before it falls by itself. Left standing, a storm (wind over 11 m/s) can bring it down - the way it leans
way it leans (the road, the phone line)
Felling any tree
- You can fell any tree. The ones that aren't to be felled cost: one of
Kurti's apple trees 300 EUR from the cash box (and Kurti is furious), a protected tree (the ones round the camping meadow) a fine of 1000 EUR. With an axe or the chainsaw at one, the hint says so first. The others never fell those
Injuries
- A falling tree that knocks somebody down breaks an arm or a leg about one
- Hurt, they go down and stay down. The nearest of the crew calls 112; out
- At the hospital (out of sight) for a day and a half - or till the next
- You: the ambulance takes you; six hours later you're back with the cast
- A guest: that's their festival over
- F1 dev menu, "Hurt": what the picked person has; Left / Right heals it
time in three (the big tree: nearly always). Landing hard from high up twists an ankle or breaks a leg or an arm (see Moving)
here the ambulance takes about 20 minutes (game time). It comes in along the way in by car - white, a red band, blue lights, the two-tone horn - stops by the yard, the paramedics carry them in on a stretcher, off it goes. No saving while it's on its way
weekend, whichever is first - then back with a cast (white, on the forearm or the shin). An arm in plaster: weaker (lifting), slower at work; a leg: slow on their feet, hardly a jump. The cast comes off two weekends later
all (the sprain, the cast, a break, the hospital, scrapes)
Holding on, and people
- E / Q with nothing right in front: that hand reaches out where you look
- Somebody: you hold them where your hand got them - hand, arm, shoulder,
- Holding somebody, 1 - 5: pull closer, push away, come with me (by the
- Who sees it: kind touches raise the place's awareness and how people see
- The place's awareness drifts with everybody's mood and, at the festival,
- At the festival a very drunk party guest now and then goes for somebody
- Love and anything sexual stay off screen
and stays out till something comes in reach. A loose thing is taken (or held on to, if heavy); a fixed thing (post, tree, railing) is held - you can't walk off further than your arm. E / Q again: let go
back, head, waist, leg, chest, bottom, crotch. How they take it goes with how they feel about you: friendship (like) and love. A shoulder is fine for most; a hand needs friends or a bit of love; the waist real closeness; the intimate places only real love. Unwelcome: they pull away and say so. On the intimate places it's harassment
hand: hand in hand; again: stop here), calm them, let go
you. Harassment sinks both, annoys everyone near, and somebody may step in - likelier the more aware the place is, the braver they are, and with the awareness team on shift
how good the floors are (F1: shown on the like row)
dancing; she leaves the floor, the people round may step in. The review says how often it happened and how often somebody stepped in
The festival (the sixth weekend)
- Weekend 6 is the festival. The Herberge before weekend 4 says two more
- Six o'clock Friday the gates open. 36 guests come on foot from the
- A floor plays only if its stage has its deck at least (the deck 45%,
- Guests dance in front of a playing stage (the better floors and their
- Talk to a guest (X, then 4): how they like it
- The awareness team (if the Herberge said yes): the crew see to anybody
- What else the Herberge said yes to: the women get free Urinellas; with
- Saturday at two the storm warning: a heavy thunderstorm at three. The
- Rain from twenty to three, the storm at three (pouring, gale, thunder).
- Sunday from ten the guests pack up (the tent goes with them) and leave
- F1 dev menu, "The festival": Right before the festival weekend jumps to
to go, the one before weekend 6 says it's next - no "what first" then: what's built by Friday is what you've got. Everybody's on the ground Friday at ten; there's no Herberge after it
chicken farm's yard, two by two: 24 on Friday evening, 12 more Saturday late morning. They go to the camping right of the strip of wood (between the chicken halls, three rows of six), get their tent up together, then head for the music. Their tents are all colours
the roof 65%, paint 85%, done 100% good). Each has its own music (Hofbuehne: a rock band, Obstwiese: psytrance, Kartoffelacker: hand drums, hidden floor: techno; far off only the bass and kick carry) and its times: Hofbuehne Fri 19-01, Sat 12:30-14 and 17:30-01; Obstwiese Fri 22 - Sat 08 and Sat 21 - Sun 10; Kartoffelacker Sat 10-14 and 17:30-20:30; hidden floor Sat 00:30-07 and Sun 01-08
favourite style pull more), to its beat, each their own way (bouncing, swaying, both hands up now and then, a fist in the air), a few minutes at a go, then a break. Dancing raises their fun; nothing playing by day lowers it a little. They bring their own food and drink; in the evening the party people drink, a few until they pass out. Sleepy, they go back to their tent. The crew dance too, evenings and nights. Nothing gets built any more once the gates are open
lying about drunk (water, sat up, back on their feet); Stella, Doro, Julia and Volkram stay up till four on shift
"no shirt, no service" the men keep their shirts on (the women like it)
music stops. The crew know; a floor with a roof (65% and up) announces it from its stage to those near. Everybody else has to be told: you (X with nobody in front, then 1: "Storm! Everybody inside!" - 35 m) and the crew on their way in (25 m; the awareness team goes round everywhere and gets people out of their tents). Told, people go to the nearest door - the main building, the barn (its yard side, left of the Hofbuehne), your garages' kitchen - and stay in. Not told, they shelter as from any rain: their tent, the pavilions - not safe
At a quarter past it's at its worst: everybody still out is counted (guests lose fun, the crew a little heart; some get knocked over). Half past four it's over, everybody comes out; the music's back at half past five
at the gate, two by two, the last by half past two. At four, at the fire: how it went - the floors, the storm, the awareness team, what the guests say, a result in %. The notebook (J) has a festival part: guests here, what's playing, floors that don't play, the storm, the result
the last Herberge; on the weekend, each Right jumps to the next moment (the gates, the warning, the storm at its worst, the storm over, Sunday leaving, the review, Monday's clean-up)
The clean-up and the drive home
- The guests drop litter all weekend: cups, cans, paper (more when drunk,
- Supporters: one guest pair in four has a free ticket for two 6 h shifts.
- Monday at ten: the clean-up. The crew still happy to help (Volkram, Jana
- Clean (a tenth left) or four o'clock: Kurti has a look. Clean: you're
- Then everybody goes home. Walk up to Volkram's car (the marker) to get
- The end: Grossbeerenstrasse, Monday night. The four of you go through how
less the more aware the place is). The ones who didn't enjoy it leave some at their tent
Sunday 10 - 16: they pick up round the camping and the floors while the others leave. Who had no fun doesn't turn up (and goes home)
and Toni always), the supporters' second shift. Each gets a bag and goes where the most litter is: the camping, the floors that played, the yard. The rest of the crew goes home in the morning. You can pick up too (a bag from the box by the container)
welcome back. A bit left: his sons do the rest. A mess: 300 EUR from the cash box for the waste removal
in; once all four are in, it drives off the way you came
it went, next year? - then "The end". You can still walk round the kitchen
Arriving
- The game starts in Volkram's car (he drives, Jana beside him, you and Toni
- Out of the car everybody has a good stretch, then you walk over together
- Kurti and his sons sit at the fire. First say hello: go over, they welcome
- Three fit on a bench by the fire: those on it move up for one more (the
- Then the work: the boot opens, the others unload. Crates go into the
- Kurti's chat waits till everybody sits (or stands with the others) at the
- A golden diamond floats over who or what to go to next: Kurti (say hello,
- In the boot: 2 crates of beer, 2 of water, one of soda (cola and orange),
- A crate is heavy: carrying it tires you (the weaker sooner). Worn out, you
- Crates: left click takes a bottle out (the others help themselves too),
- The hint line says what's to do next
- Nobody asks you for other jobs (wood and so on) until the tents stand and
in the back): off the street onto the gravel road beside the main building, into the yard (look around with the mouse)
you. Then sit down with them (C) for a little chat with Kurti
nice ones on their own, the others when asked: "Move up a bit?"). No room anywhere: they stand by the fire with the others
kitchen in your garages, the camping things up to the meadow behind them. Help: left click at the boot takes out the next thing (crates: both hands)
fire - the last one in isn't left out
the chat), the car ("get your things from the car - then come to me"), Kurti again (with something of yours in your hands, or all of it out: he calls everybody along to the end of your garages by the barn, waiting when you fall behind; the others gather round; he points up the path and says the rest), then your tent's spot till it stands
one of Mate, everybody's sleeping bag and mat, the big tent (Volkram and Jana) and two small ones (Toni, you)
put it down for a moment; or two carry it (F to hold on, E to lift together). The others put theirs down for a breather too
E / Q carries the whole crate. A bottle in your hand (empty or not) put down next to a crate (right click, E / Q, or a left click at it) goes into it: its own crate if one is there, else any with room. Each crate shows what's in it, and a bottle of another kind stays a wrong one: right click at the crate with empty hands takes it out. The tidy (Jana) sort wrong bottles into their own crates on their own (the crates go back to the shop sorted)
everything is unloaded
Weather
- Dry spells of hours, then showers now and then (the first few hours stay dry)
- Clouds come over before the rain and the sky greys (no sun, moon or
- A hood to your jacket (the parka, the hoodie, the red rain jacket): out in
- Two umbrellas (by the main building's door, in your garages' kitchen):
- A strong gust may blow an open umbrella inside out (no use for a moment,
- The crew turns up over the first day on the ground (Kilian and Julia, then
- The four floors' stages stand marked out from the start: the Hofbuehne
- The shopping: ask whoever has the car keys (Volkram: X, 4, "We need some
- A stage waiting for material that lies in the store: one of those at it
- The side jobs, in working hours like the floors:
- Mowing the Kartoffelacker (Toni): its grass stands knee high. The
- The vineyard snails (Doro, Stella): about 30 in the Kartoffelacker, 10
- Kerry's wood art: a log lying in the yard by the pavilions (bring one),
- F2, the projects page: how far each has got
- Talk to anybody about the festival (X, then 4): how their part goes and
- How into it everybody is goes with what happens: a step finished lifts
- F2 (dev): the crew overview - who's who and what they're there for, what
- Some wear a hat: Toni a red cap, Kurti an old green one, Jonas a beanie.
- No umbrella of their own: somebody near under one gets asked ("Room under
- People get out of it: Kurti and his sons into the house, the others into
- A beer bench (C): walking up to it you step over it and sit at the table,
- Out in the rain your clothes get wet (darker; Tab: Wet) and you get cold.
- Hard rain brings thunderstorms: lightning, then the thunder
- Wind: calm or windy spells, gusts on top (windier with rain). The rain
- A tent not pegged down (under half its pegs) blows about in strong wind
- Trees and bushes sway; paper, plastic and a pullover lying about get blown along
- A strong gust can tear paper or a pullover out of a hand (hold it with two
stars behind them). Rain falls round you, against the sky too; everything looks wetter; the ground gets real water (puddles, mud) where you are and wherever anybody walks - long hard rain turns trodden paths and bare ground to mud (slower, dirty shoes, slipping at a run); a fire burns down faster
the rain the jacket goes on and the hood up
carried, one opens in the rain and keeps you dry. The others fetch one when it starts to rain (if they're not busy working) and stay out under it; the careful put it back after. Open, it's held up in front of the shoulder, the shaft leaning in over the head; folded, carried by the middle, tip down
then pushed back right); the third time, or in a storm, the ribs bend and it's broken (the others drop theirs and get in out of the rain)
Stella and Doro, the next morning Kerry, then Rouven and Pascal): in from the gravel road, over to the fire to say hello, then on with the day
in the yard (its back to the barn), the Obstwiese at the far end of the orchard, the Kartoffelacker behind the road to the chicken farm (a strip of wood right of it), the hidden floor behind the main building. Each is built in steps, each step needing its material lying by it - the ground cleared, the frame (three logs), the deck (two bundles of boards, a box of nails; stand on it), the back wall and the roof (two bundles of boards, a box of screws), paint and banners in the floor's colour (a bucket of paint). The lead and the helpers go to it in working hours (8:30-19:30) for goes of two hours; you build too: a hand free, hold left click at it
shopping done"). Pick what to get (each number again: one more; past the most, none): bundles of boards 25 EUR, nails and screws 20, paint 35, food and drinks for the crew 90 (a food crate of 40 portions, a cool box of 24 sausages, a crate of water, one of beer). The cash box starts at 1200 EUR (F2, the projects page). They walk to the car, back out, turn and drive off; an hour later (game time) they're back, the boot full: they and a couple of idle people unload it - material to the store in front of the car room of your garages, food into the kitchen. Food runs out now ("The food's all gone. Somebody has to go shopping.")
fetches it over (logs are yours to bring)
scythe is in the tool room; with it in your hand, hold left click in the field and walk along as you swing. A careful lead waits till the snails are out of the field; a careless one mows over them (dead)
round the Obstwiese stage. Left click: into your bucket (8 at most); walk to the long grass by the wood left of the Kartoffelacker and they go free. The regulatory office comes 44 hours after you arrive (told the day before and three hours before): every snail still out there costs 40 EUR, every dead one 80 - none, and the snail crew is proud
the chainsaw - he carves it into a figure (an owl, a bear, a mushroom man); without either he says what he needs
how they feel about it; "Great work - thanks!" (once an hour) lifts them; ask them to lead a floor nobody leads (if they're up for it); take over what they lead (the proud may refuse), or have them help with yours
those at it; no logs for the frame, working worn out, nobody leading, being annoyed wear it down; evenings at the fire bring some back. Too low, a lead gives it up ("somebody else can lead it") and stays to help; lower still, they're just there for the party
each is doing now (into it / annoyed / energy), the projects with who leads and who helps (Left / Right)
A gust can take a cap off (a beanie hardly ever, none under a hood): it bowls along the ground, they run after it and put it back on - pulled down tighter each time
there for me?") and they walk along side by side under it (yours too); it leans over the two of them
their tent (at night, or when it's nearer), your garages' kitchen or the two party pavilions in the yard (in a row in front of the main building's right half, left of its porch; a beer table set under each) - the nearest with a seat free. Raining hard, they sit it out there (else on the floor); out again when it stops
facing it; turned away from it, you sit down with your back to the table. The others always sit at the table. Benches have their places evenly along them (three on the fire's benches and the beer benches): the third always fits
They dry by a fire quickest, in the day slower, at night slowest. Wet through, the others go and sit by a burning fire
slants, the fire's smoke and flames go with it
until it snags on something or somebody works on it; its owner comes running
hands to be safe); the others run after theirs
Tents
- On the meadow behind your garages (1.5 m up, the little path left of them),
- Left click on a packed tent spreads it out (the door towards you). Then
- Several working on one: quicker. The others come over and give you a hand
- Put your sleeping bag and mat down at the door: they go in
- Z at your tent's door: crawl in and sleep (better with your sleeping bag
- Sleepy, the others go to bed in their tents
- Taking one down: hold left click right at a standing tent. After a moment
- A tent packed on purpose stays packed (nobody puts it up again on their own)
- Moving one: pull its pegs out (hold left click), then hold F and walk; let
where the camping things were put down: everybody pitches their own (Volkram and Jana share the big one)
hold left click: the poles in and up, the cover over it, the pegs in (a stone in the other hand: quicker)
in it: warm, and you're rested sooner). Z again: you crawl out
the pegs come out, then the cover, the poles, and it's folded into its bag. Sleeping bags and mats come out at the door; the owner helps
go to set it down, hold left click to peg it again
The site
The map is Homburgshöhe at Geflügelhof Oderland, traced from the real map and satellite pictures (about 340 x 340 m).
- The courtyard is clear for the real game: the fire with its benches,
- Behind your garages the ground is 1.5 m higher (a steep bank right behind
- Right of the main building a small meadow 0.6 m up, bushes behind it and
- An obstacle course in the chicken farm yard: three lanes of logs, crates,
- You start in the courtyard, a three-sided farmyard open to a gravel road:
- The main building has two halves side by side under one roof (the left
- Left door, by your garages: four steps up on the left, stairs down to the
- The basement: old loose brick walls, open rooms, shelves
- Or in at the porch's far end, up its steps and right through the door
- Your unfinished building: a bare brick shell under a roof (later: drinks),
- Your garages' doorways have green wooden gates: click to open or shut; open
- Your garages have three rooms: tools next to the main building (workbench,
- The woodpile by the barn: everybody stacks firewood
- The fireplace is a ring of field stones (its ground slab no wider than the ring); its tripod of long wooden poles
- Alice the dachshund lives here (painted like the people): she trots after you, sniffs around, begs
- A little path leads out between the garages and the barn
- Across the gravel road: the orchard (two apple trees, bushes all round),
- Family houses stand along the loop road, a bit away from the courtyard
- The L33 is a four-lane country road with painted lines and a bus stop
- Homburgshöhe runs through the poultry farm: long halls, several with solar roofs
- Pine forest all around, a pond, a field in the south-west
- Roads and paths are part of the ground, not laid on top: people and
- Tar lies a little raised on its gravel bed and ends in a gravel shoulder
- Concrete slabs, same; where tar meets concrete it joins directly
- The gravel loop is stones on the soil: wheel ruts, grass in the middle
- Tracks are bare soil worn into the ground, deeper in the ruts
- Paved ground doesn't wear into a trodden path
- Gravel in front of your garages; stones lie along the roads, in the yard
- The layout lives in
src/world/site.c
some firewood, branches, a little litter, a tree
them): a small meadow with bushes and trees round it - they stay, nobody may cut them. The way up: the little path left of the garages
on its right; the tap is on the main building's right end
benches, walls and blocks, spaced and close together. Beside it the things
to try out: crates to carry, heavy rollers to push together, a plank ramp
to walk up. (Testing: set START_AT_COURSE in src/game/game.c to 1 to
start there)
the main building, your garages (you can walk in) joined to it, the long brick barn opposite (ivy climbing high) and your unfinished building at the barn's right end
ridge runs into the right half's, which runs front to back), the right one a little further out at the front, with a porch along the right part of its front. The ground floor sits four steps up. Walk in:
basement on the right. Along the corridor: the toilet and the kitchen on the right, two locked rooms on the left (the second the living room), and at its end the big room of the right half with the meeting table
its door on the side towards the woodpile, and in front of it the frame of tree trunks where the bar will be built
they swing right round and lie flat against the wall (the car room's door sits nearer its middle: open, its gates don't block the little path)
tool wall, shelf, axe, shears, chainsaw and a ladder), a kitchen (counter, stove, table and chairs; hold food over the stove to cook it) and a car repair place with an old car behind the wide door
there unless you show them another place
(3.9 m up, the grill on a long chain) stands well away from the fire; you walk round them
for sausages, comes when called (R), lies by the fire and loves being petted (click). She runs after what you throw and brings it back (sometimes catching it in the air); a sausage on the ground she eats, an apple she keeps and chews somewhere. She has a ball and a rope toy: now and then she brings you one to throw. After a run (or in the midday sun) she pants for a while, heard close by. Held up by something in the way (the car), she goes round it
then a small path and a row of other garages, some closed, some full of junk
things stand on them like on any ground
and in the meadow (pick them up, throw them)
Campfire
- The fireplace is near the main building and your garages, with log benches
- Click on it with firewood or a branch in hand to put it in, click again to light it
- Click on it with food in hand to put it on the grill. Looking at the fire
- Food darkens as it cooks: done after a while, then too dark, then burnt
- The wood chars, glows and shrinks as it burns down, and the fire lights up the yard at night
- More wood makes a bigger fire, and a bigger fire takes more water to put out
- Right at a burning fire with a drink in hand, C pours it on: a small fire
- Walk into the fire and you catch fire: C to drop and roll (down fast,
- Hold food close to the fire to grill it: sausages are
- People come over to a burning fire, sit down round it and look into the flames
- Now and then they sit down at a table (the meeting table, the kitchens) for
- C: sit down yourself (and rest faster): on a bench or chair (right on
round it and some wood beside it. Three long iron rods meet over it; a grill hangs from them on a chain and swings a little
(with the lighter in your pocket; none, or empty: ask somebody for theirs)
shows how far it is (raw, % done, done, getting black, burnt). Click the fire with a free hand to take the most done piece off
(charcoal: hardly worth eating)
goes out, a big one just hisses, vodka flares up
stretched out, rolling side to side), or pour a drink over yourself (left click). Others run, then drop and roll; a drink, water or pee puts them out too
only really good grilled; apples and bread get better too
a while and have a word; food they pick up they mostly eat there, a beer sometimes too. They find their way in: up the steps, through the doors, down the stairs to the basement
the seat; a chair is pulled out first, shuffled in to the table once you sit, and pushed back in after you leave) if one is next to you, else on a log lying there, else cross-legged on the ground; walking gets you up
Cleaning up
- The garden hose is connected left of the main door: pick up the nozzle
- The hose is a real rope: dropped it falls and lies on the ground, and it
- Keep it out of the fire: there it gets hot, melts (it leaks, less comes
- Further away: the watering can (next to the tap). Click the tap with it
- Pee puts out fires too: a small one, or a burning person
and hold the left button to spray. It washes sick and pee (and their smell) away, cleans people, puts out fires and burning people, and soaks the ground (see below). It reaches 25 m from the tap
drapes over and round things instead of going through them
out) and burns through (nothing comes out). Duct tape (on the workbench) mends a melted bit; a burnt-through bit is cut out with the shears and the ends joined, so the hose gets shorter. Click the bit with either
to fill it (8 l), hold the left button: the arm comes up and the can tips forward to pour
Water and mud
- Hose, watering can and pee put real liters onto the ground; a stream
- Water runs downhill, gathers in hollows and trampled paths, and soaks in
- The soil decides: asphalt and concrete take nothing (water runs off),
- The more water, the wetter: damp soil darkens, standing water mirrors
- Soaked bare ground turns to mud; walking on it makes it worse (grass
- Pee leaves a yellowish stain and a smell until it fades or is washed out
- It all dries again over hours of game time
comes down on the real ground (a slope, a hollow), never through it
as fast as the soil takes it
gravel swallows it, meadow and field take a lot, the yard and dirt tracks only slowly
the sky
holds out until it's trampled). Mud dirties your shoes, slows you down, and running through it you may slip
- A little litter lies in the yard and in the open garages
- By hand: pick up two pieces, click on the green waste container to throw them in
- Faster with a garbage bag (box by the container): bag in hand, click on
- Apple trees: click on one to pick an apple
trash (or hold the button) to bag it, piece by piece; broken glass too. A full bag (24 pieces) goes into the container
World
- Uneven meadow with real grass blades near you, earth patches, level around
- Walking tramples the grass: the blades lie down, then it turns into a bare path
- Untrampled grass grows back over about two game days
- Houses have tiled roofs with overhanging eaves, framed windows with sills
- Roofs are walkable; colliders are built from the same sizes as the meshes
- Bottles: water and beer (five sips) come from the crates you brought
- Click a bottle: take it, click again to drink (hold to keep drinking).
- Bump into a bottle and it tips over. Glass only breaks on something hard:
- Low things in the way (logs, branches, firewood, crates, a bench, a cool
- Legs keep clear of what they pass: walking, a foot lifts first and goes
- Stepping over, you lean into it and the leg swings round a little, out to
- Something solid that holds you (a plank, a log, a fallen tree, a crate) you
- On something narrow (a log) you balance: arms out, a wobble (bigger when
- Something you can't step over or onto (a tree, a post, a high crate, a
- The others do it too: a long log or block across the way they step onto and
- Off the edge of something you go once your middle is past it - no standing
- The sporty fit their steps to what's coming, so a foot lands at a good
- Jogging or faster, low things (up to about the knee) are jumped on their
- Walking over something knee high is one smooth move: the first leg goes
- Walking at a block a bit higher than that (up to about the hip) with
- Dropping from high up: the knees come up to the belly, the legs reach
- Everyone moves at their own size: taller people step higher and run a
- Bottles, cigarettes and the like sit in the fist, the wrist kept straight
- The sporty pull up and climb ladders much quicker
- Everyone walks their own way: feet wider or narrower, toes out a bit more
- Running into something sober: low, you trip or go headlong over it; high,
- Stop half way over something and the body carries on over it; you never
- Stepping over is a risk: you may stumble or fall, more so sprinting,
- Pressed against a low box at a corner you still climb it
- Walking only shoves light things (under 15 kg) aside; heavier ones stop
- Step on things and you may trip (more so drunk, clumsy or running);
- Walk into a bush to get over it and you end up in it; twigs snap off
- Nobody ever ends up on the other side of a wall
- What you carry bumps into walls, trees, furniture and heavy things: you
- Long things you carry (a ladder, a log) don't go through people or Alice
- Clumsy and unsporty people trip and fall much more easily than sporty,
- Trees can be cut down and turned into building wood (see below)
buildings and in the yard
and front doors with a step
Dropped, a bottle nearly always falls over; things on a slope slide or roll down it when it's steep enough, and once going they keep going easier Empty, a click puts it away: into the container in front, onto a table or crate in reach, with other empties, down at your feet, or (drunk or wild) tossed away. Others do the same their way
thrown against a wall, a stone, onto a road or gravel; on grass it just lands
box: up to about knee high and narrow enough to stride across) are stepped over: walking, you slow down and lift your feet over them; sprinting, you take them in your stride with quick steps and leaps
over after, and the body waits for the back leg; a knee turns out (like stepping over a fence) or the foot comes up; sprinting, you leap
the side and back in to land, while the momentum carries you on
never straddle: flat ones you just walk onto, higher ones are one step up, then you stand up there and walk on
clumsy, drunk or hurrying), slower steps - and now and then a step off
wall's corner) that you'd only just catch: your body drifts past it to the side
walk on (and wobble), shorter things they walk round. How high they step up is their own: the sporty and fresh up to about hip height, the unfit, worn out or drunk only knee high - higher than that they go round
on air beside it; slopes (a roof, the ramp) no longer show invisible steps
take-off spot
own: no slowing down before them, the take-off timed so the top of the jump is over them, as high as it takes. Blocks up to about hip high with room on top: you jump up onto them. Higher (up to where your hands reach): you catch the edge instead of bouncing off, and climb on
over, the body follows, the other leg comes after (higher things: up on the toes, that leg swung out). Once started it always finishes
room on top: you step up onto it the same way, one leg after the other
down just before the ground. Landing, you always go into the knees first and bounce it off (over about 1.3 m: deep). Going somewhere (moving along) from about 2.5 m, the sure-footed roll over a shoulder the way they were going - up to about 3.3 m, the very sporty about 4 m. Higher, or standing still: deep in the knees (the sure, up to about 3.4 m) or a crash (energy, dirt). How hard it was decides what gives: a twisted ankle (limping for some hours: slower, hardly a jump) or, worse, a broken leg (a crash: now and then an arm). Roughly: 3 m now and then a twisted ankle; 4 m always a crash, often an ankle; 5 m half the time something broken; 7 m nearly always
little faster; each has a stride of their own (long steps or quick ones)
or less, bouncier or flatter (livelier when lively), hips swaying more or less
you stagger back or go down to the side you came in from. How badly depends on speed, fitness, energy and clumsiness
hang in a half-over pose. Holding still half over costs energy; worn out (or legs too far apart) you go over, and if that's not possible you fall
over high things, tired, drunk or clumsy. Rushing or clumsy, a leg that can't keep clear scrapes ("Ouch!"), and at a run it may trip you
you (push them with F, or climb up if you can reach the top)
dry branches snap, a bottle on hard ground may crack. Drunk, worn out, clumsy or in a hurry, people don't bother stepping round small things
can't turn or walk it through them (the view stops turning too)
either: they get nudged out of the way, light things get knocked aside, and people walk round a carried ladder
sure-footed ones (they even stumble over their own feet at a run)
People
- They wander around, walk around obstacles (keeping to a way round once
- Nobody likes stepping on things: people walk round what lies about, and
- Walking straight leads into a corner: they find a way round walls,
- Something they can't get at: they leave it and take another (they
- Stuck anyway: after a while they let go of what they were after; still
- Backs bend: a waist between hips and chest, the upper body lags a little
- Climb anything your hands reach: walk against it (W) and you put a hand
- Walking up to something you can climb, your hands go onto its edge; pulling
- Hip high, the less sporty and the old take the careful way: back to it, a
- Chest high, the less sporty (or drunk) go belly first: push up, lie over
- Jumps take off from one foot (rarely both at once); at a run, the rear foot
- Drunk, walking into a wall or a person easily ends on the ground
- Now and then they grab a beer, take a sip or two and put it down
- Tidy people (Jana) pick up trash they pass and take it to the container
- Press G and the nearest one helps: walks beside you, finds a free spot
- A helper standing where the load wants to go notices it, lets go and comes
- Anybody else in the way leans against the load (it goes slower) and side-steps
- Not sure what you're up to, helpers copy you: they take something like what
- Everyone has a temperament you can see: the proud stand tall, chin up,
- Heads look around, blink and lead turns; arms swing with a bit of follow-through
- Everyone has a main hand, a top speed and a jump of their own (light and
- Some are sporty, whatever their build: quicker, surer over things, fewer
- Running for real: each foot stays down a moment, the leg bending like a
- Worn out, you can't run until you got your breath back a bit
- The more tired the day makes you, the less energy you have: less to give,
- Bottles are held low in the main hand, now and then by the neck
- Nobody is quite symmetric: one arm swings more, one shoulder sits higher,
- Standing about, nobody is quite still: weight goes from leg to leg, the
- Out of breath (after running, hard work), standing still: they catch it -
- Talking, a hand goes with it now and then: waving hello or goodnight, a
- One hand now and then: on the hip, scratching the head, at the chin, in the
- Arms keep out of walls, tables and what you climb (they move back and out of the way)
- Movement is smooth and anatomically sound: feet lift off and set down
- No part of the body moves faster than it can (hands and feet fastest, the
- Smooth at any frame rate: low, high or uneven frame rates give the same
- Sitting down on a bench or a log, people step in front of it, turn round
- Walking past something low (a bench) you don't get lifted onto it; you
- People walk round obstacles in smooth curves, no zigzag
- Arms move around the body, never through it; carried things stay off the body
- Steps get shorter uphill and longer downhill
- Walking up a steep bank (the one behind the garages) you bend forward and
- Falls differ: straight over, knees first, twisting, or reeling back a few
- A fall lands where there's room: a little to the side, or shorter at the
- After a fall, walking on (W) gets you up sooner; drunk or clumsy, you may
- How fast drink hits depends on body weight and how well someone holds it
- Drunk people sway, veer off, burp, stumble, fall over and get sick
- Drinking makes you drunk too: the view sways, blurs, stretches and doubles; it wears off over a few game hours
- Too much and you pass out until you've slept it off, or someone comes and wakes you
they picked one) and look at you when you're near
everyone's feet take a longer step or a high step over it
buildings, trees and bushes (a walking map of the site)
remember a few, so they don't go back and forth between two)
stuck, they give the job up and say so
behind starting, stopping and turning, shoulders counter-turn to the hips
on it and climb up; higher up (about 2 m) you grab the edge with both hands, hang on and pull yourself up. Jump at it (W + Space, or just Space held) to reach higher still (about 2.4 m); a bit higher, your fingertips touch the edge. Pulling up needs both hands free and costs some energy; worn out or very drunk you can't
up, the feet push against its face, then one knee and foot come over the edge, then the other (never through it). The hands stay pressed on top and the back bends over the edge. One hand gets there first (its shoulder turned ahead), the other follows
hop up to sit on the edge, legs swung up onto it, then stand up
the edge, a knee up, then stand up. Quite drunk: no knee up - down flat on the top along the edge, rolled over once onto the back, and up
pushes off and the front one lands first
at what you push and pushes along. Press again for more helpers, H sends them off
round to another side (the quick-witted soon, the slow never)
out of it; the slowest just say "Hey! Watch it!"
you carry, walk along at your side and do the same with it (put it down next to yours, into the fire, into the bin)
hands behind the back; the shy look down, toes in, hands together
lively people are quicker); tired or drunk, less of both
trips and scrapes. Running, the body rises and falls with each stride: the sporty glide, the others bounce and nod (Tab shows how sporty you are)
spring under the body, then pushing off into a flight with both feet up; off the toes the heel folds up under the seat, the knee drives through in front and the foot reaches out to come down; the arms pump, bent about square; the body leans into it. Walking: longer steps, the arms swing more. The knees point ahead (no bow legs), the feet run nearly on one line
used up quicker, back slower, everything a bit weaker. Lively and sporty people hold up better; drink makes it worse
and now and then a hand goes to the hip, the head, the chin or a pocket
feet settle into another stance, the body sways a little and breathes. Now and then someone shakes a leg loose, rocks on the toes, stretches, rolls the shoulders, stretches the neck, folds the arms, taps a foot, rubs the hands, clasps them behind the head or puts both on the hips
the unfit bent over with the hands on the knees, the sporty with the hands on top of the head or a light stretch, anyone hands on the hips. Breathing is calm and slow, and quicker the more out of breath
shrug saying no, pointing over there
pocket, rubbing the neck or the nose, at the ear, back through the hair, thumb in the belt, on the chest, shading the eyes. How someone feels picks it (proud, shy, nervous, tired, lively), and everyone has two of their own they make most
gently (heel first, then the toes), hips and hands move on springs, knees and elbows never flip or bend the wrong way, limbs keep their length, shoulders turn with two-handed work
trunk slowest): whatever the pose wants, nothing jumps
calm movement; helpers who arrived (or are blocked close by) stand still
and sit back; getting up they step forward off it
only step up when you walk into it
put a hand down on the slope ahead, again and again (anybody with a hand free)
steps first; a stumble takes you over the foot that caught
foot of a wall; across low things (a log, a crate) the body lies over them, never inside; sitting, the legs rest on what lies in front
stumble or go down again
Wood
An axe, pruning shears and a chainsaw are in the tool room of your garages; the forest is all around.
| Job | Axe | Chainsaw | Shears | Hands |
|---|---|---|---|---|
| Fell a tree | 12 | 4 | – | – |
| Take a branch off (8 per tree) | 1.5 | 1.5 | 1.5 | 3 |
| Cut a log in two | 8 | 4 | – | – |
| Split a short log or half | 3 | – | – | – |
| Chop out a stump | 14 | 7 | – | – |
A tree is cut at about hip height: look down at the trunk to cut right there, look up the trunk (above your head) to cut higher, up to the chest; where you started its notch; strokes elsewhere start a new notch from scratch. It falls beside its stump and lies on the ground.
Numbers are strokes for someone fresh. Tired or drunk takes more strokes; people who like the job need fewer, and practice makes everyone better at it (skills grow with every job; Tab shows yours). Work wears you out fast: take breaks. Hold the left button to keep working.
- The axe is carried in one hand near the head. To work, the hands slide to
- Trunks get a horizontal swing at the height you look at; the edge bites in
- Wood on the ground is chopped from above: logs into shorter pieces, pieces
- A tool in hand at the work (a step away or a little to the side is enough):
- You see where you cut: wood chips fly off the axe and lie around a while,
- The chainsaw bar goes into the wood; it cuts low and fast but can't split
- A falling tree knocks people down, shoves light things aside and rests on anything big
- Crashing down, a few branches snap off; falling into another tree, more
- Stumps can be chopped out with the axe or the chainsaw: roots stay in the
- The chainsaw is carried relaxed in one hand; sawing takes both. Nobody
- Strokes keep hitting a cut that was started, whoever swings
- Everyone works their own way: Martin is quick, gets right to it and takes
- Called away from a job to help you, they go back to it after; the
- Helpers (G) understand what the wood is for: they fell along, take the
- Felling, they look where the tree will come down first: never onto a house,
- You felling: the hint line says where it comes down and what's in the way
- Using or taking something shows a short line about it
the end of the handle
and stops there, and the tree comes apart where you hit it
up to 0.75 m split into halves, halves into quarters (firewood)
a click works with it, it doesn't pick things up into the other hand
the chainsaw sprays sawdust, and a pale band of cut wood grows on the bark
do, and that tree loses some too
ground and you get a round of wood for the fire
sprints flat out with it
no breaks; Kurti is old and slow, ponders and sits down a lot; Jana and Jonas stop for a chat; Toni takes a little walk; Volkram has a coffee. Now and then they take another kind of break (a coffee at the stove, a walk, a chat, a sit), short or long, and put the tool down first
forgetful wait to be reminded ("Back to the firewood, please")
branches off, cut and split, fetching fitting tools. Without an axe they say so
wall, car, tent, table or the fire (no room anywhere: they leave it). Nearly through, anybody in the way hears "Timber!" and steps aside; they wait for you
there; nearly through, the others step out of the way
Logs weigh what their wood weighs. Click one to hold on, call helpers and lift it together (E or click). Each person lifts about 40 kg, less when worn out. Helpers take the other end of long things, and the load is lifted evenly. Too heavy alone but not for half its weight: hold a log at one end and you lift that end, the other drags along on the ground (slower). A hand that can't reach its grip lets go and takes hold again.
A felled tree lying on the ground can be pushed or pulled (grab it, call helpers). Its branches make it heavy and snag on things in the way: pull on and they snap off. Without branches it moves much more easily.
Ladder
- A telescopic ladder (6 m out, 1.5 m together) lies in the tool room of
- Beside it lies a folding ladder (two 2.5 m halves on a hinge, 5 m open).
- In front of them lies a step ladder. A click stands it up in front of you
- Ladder in hand: click at a wall and it slides out just as far as it takes
- Slid out, you hold it near its foot, nearly upright (any flatter is too
- A thin beam counts even if you look just past it
- Held up, it runs into a beam or a doorway: you tip it down flat, carry it
- It leans on whatever is there. How steady it stands depends on the angle
- An unsteady ladder may slip when you climb it: a wobble first (it rocks), then it
- Somebody holding it (beside its foot, hands on a rail, a foot on the bottom
- The others can slip off a wobbly ladder too
- Helpers follow you up a leaning ladder onto a roof or wall and down again;
- Click a leaning ladder to climb: W / S up and down, at the top W gets you
- One hand free is enough (something up to 5 kg in the other), but you may
- A ladder lying on the ground is stepped over. Kicked, it hardly moves,
- E / Q (or right click, hands empty) at its foot takes it down again; a
your garages, on the floor along the end wall
A click at a wall unfolds it and leans it there; elsewhere a click unfolds or folds it
and opens it; with a wall just ahead it stands with its back to it, and from its top you climb onto the wall if that's not much higher. E / Q folds it up again
(about 0.9 m over the edge) and leans there in one go: you stand it up, slide it out and tip it onto the wall (about a second); slid out by hand first, it keeps its length. Elsewhere a click slides it out or together. Too close to something beside it, it says so instead of going through it
heavy to carry). A click leans it where you look: at the top of a wall it rests on the edge, lower down it leans against the face there. Walked into a wall it is stood up straight (under a beam or doorway it tips down flat). Carried at the side it slides back in your hand instead of into a wall Look down and click to slide it together. Nothing to lean on: you stand it up on its own - and it falls over, or against something (a beam): there it rests
under and it goes up again once there's room
(about 75 degrees is best), soft or muddy ground, its feet not level and what holds it (a bush, something light). The message says when it's wobbly
falls over and you with it (the higher, the harder you land)
rung: out of the climber's way) keeps it steady: helpers (G) hold it when you climb, helpful people come over on their own when it looks wobbly
without a ladder they pull themselves up after you (if they reach) and jump down when you're down. Kurti stays off ladders these days. Up there they go slowly and carefully, arms out; drunk, the sharp ones are extra careful, the dim ones stroll about and stumble
over the edge, Space jumps off. From up there, click its top to climb down
slip: a wobble first, then off you go. Fitness, practice, clumsiness, energy and drink decide
but your toe hurts
hint shows when you stand there
Talking
X talks to someone in front of you; answer with 1-5, X, right click or walk off to end it. With nobody in front, X opens the shout menu: call everybody, someone by name (the nearest three) or Alice. A shout carries about 35 m, less over a running chainsaw, less to someone drunk; sleepers don't hear it. Who hears comes over, or says why not.
Nobody waits forever for an answer: the lively and the proud ask again after a few seconds and give up soon, the shy and the slow wait longer. Left waiting, they're annoyed for a while: it shows in the face, they say no more often and don't come to you for a bit.
- "Could you do something for me?": make firewood, cut trees, collect the
- Everyone is their own person ("Who are you?"). With you came Volkram (calm,
- Kurti and his sons own the land and lend it to you for the festival: they
- On a break people put their tools down: the orderly side by side, square,
- They may say no: to jobs they don't like, when tired or drunk, or when it
- They come to you with jobs that need doing and that they like: low on
- R calls the one you look at over (quick shout); busy and unwilling ones
- "The firewood goes somewhere else now": show them a new place; the old
- Asked where the firewood goes: show them, let them find a good place (an
- The work place: things lying where they'd stand to split or cut, the tidy
- Firewood: they fetch tools, cut, split and stack it on a woodpile (gaps
- The practised cut even pieces, the others by eye. Careful people take
- Tools they shouldn't use (the chainsaw without practice, the axe or saw
- Showing where the woodpile goes: they follow you, a glowing frame on the
- Trash: they take a garbage bag, bag piece after piece and empty full bags
- The fire: they keep wood in it, light it when it gets dark and sit by it.
- Pockets: most have a lighter. It runs empty over time. A borrowed one
- Working hard in the midday sun the shirt comes off (women keep a top on;
- Cold nights: away from the fire the pullover goes on (each their own colour),
- Your pullover (B, your pockets): put it on, take it off (round your hips) or
- Ask them what they're doing, send them back to helping you, or give them a break
trash, or look after the fire
splits wood to clear his head), his girlfriend Jana (the fire and the people, likes it tidy) and Toni (first time out here, keen). The house is Kurti's: an old man (74, a belly, never takes his shirt off) who has felled more trees than anyone, with his sons Martin (about 30, chainsaw, no brooms) and Jonas (about 25, talks a lot)
don't do your jobs or help with them. Now and then they go into the house for a while (call them and they come out); the others keep out of the house unless they need it (the toilet)
a step back; the others just drop them. An axe put down lies on its side
isn't needed ("We've got plenty of firewood")
firewood, trash lying around, getting dark and no fire. Jobs they love they just start on their own ("I can't stand this mess. I'll clean up.")
may answer "In a minute!"
stack gets carried over to the new woodpile
existing pile nearby, else a clear, level spot off the roads, by a wall), or leave it lying
clear away first; no room to swing (a wall, the car), they take the piece somewhere with room - carried, or dragged with somebody called to help
first, where pieces were taken off; it shows how many really lie on it). Not everyone knows how: "Can you show me?" They watch you until they get it. Skilled, careful and sober people stack neat, stable piles; clumsy, hurried or drunk ones just throw it on, and a high loose pile comes down now and then. The most careful sort the pieces by length (long at one end, short at the other) with the front even, and put the branches lying about onto a heap at the end of the woodpile If you keep the axe, the bold ones ask for it, the others wait until you put it down
the tools back to the tool room when they're done; the others leave them lying where they stopped
drunk) they use anyway, with a remark and now and then a close call. Talk to them: "Leave the chainsaw alone" - proud, unwilling or drunk ones may not listen
ground shows the spot, and a left click puts the woodpile there
in the container; a bag is carried by its neck, the arm a little out
No lighter (Jana, Jonas): they borrow one from somebody near, maybe you
goes back when they think of it; owners ask for theirs
the shy keep it all on), yours too; it goes back on when cooled down
by the fire or in the day it comes off and gets tied round the waist
put it down where you look: over a chair's back, a railing or a bench, on a table, or spread on the ground. Sitting on the ground: spread it out and sit on it. Click it to take it back. Others hang theirs over their chair or sit on it, take it along when they get up, and fetch it when it gets cold. The tidy ones, warm with it round the waist, hang it over a railing, a bench or a free chair near by
Smoking
- Most roll their own: tobacco (a pouch rolls about 75), papers (a packet
- Short of something, they ask: "Got a paper for me?", a filter, a bit of
- B: your pockets - what's in which (work trousers: 8 pockets, normal ones
- Smokers get a craving over time (dying for one: restless). In a quiet moment (idle, a break, by
- A drag now and then (the tip glows), smoke breathed out, the hand up in
- Done: into the fire when close, else the tin on the end of a bench by the
- Your pocket ashtray: B, Enter at the tin, a bin or the fire empties it
- A full ashtray gets emptied by somebody tidy (into a scrap of paper, off
- K: light one (yours, or somebody next to you gives you a light), K again
- Packs and tobacco run out; Tab (skills page) shows your pockets
of 50), filter tips (a bag of 120; Kurti never uses one). Martin smokes a pack, Jana only now and then, Jonas doesn't smoke
tobacco - from whoever is near, you too. Toni forgot his papers, Jana is out of filters. No filter to be had: they roll one without
4, a skirt 2). Up / Down picks, Enter takes it out: looking at someone you give it (a cigarette, a pinch of tobacco, 3 papers, 5 filters, lend the lighter), else you roll one and light it
the fire) they light up: rolling first if it's tobacco (both hands), then the lighter to it - theirs, or "Got a light?" from somebody near
front between drags. Hands needed: it goes into the mouth
fire or the bin when near (you see the tin fill up). You and Jana carry a pocket ashtray: the butt goes in there. The tidy walk to the tin, a bin or the fire with it; none near, they ask for a pocket ashtray ("got your pocket ashtray?" - B, look at them, Enter: hold it out) or keep it in a scrap of paper till they pass a bin. The others flick it away or drop it
to the bin)
puts it out. Talk: ask somebody for a cigarette, or offer one
Day and needs
- Hunger, thirst, a full bladder and sleepiness build up over the day
- Work, carrying and running wear you out; resting, food and drink bring you back
- Worn out, hungry or thirsty: slower, weaker, slumped
- Eat apples and bread, drink water (beer counts a little). (The apple
- Everyone's bladder is their own size (bigger people hold more, worn out
- Pee with P (or it happens anyway): you see the stream; being sick, too.
- Women squat to pee, unless they have a Urinella: one-time use, up to 4
- Women who never tried a Urinella may try one from the box: some like it,
- Before peeing, what's in the hands is put down beside you, and taken up
- Clothes: trousers, shorts (Toni, Jonas) or a skirt (Jana)
- The others use the toilet when it's free and not too far; busy (they wait
- Peeing outdoors splashes you a bit, lying on the ground gets you dirty;
- Sick lies on the ground and soaks away over hours; pee goes into the
- Fresh ones stink: stink lines rise, faces scrunch up, people remark on it
- Sleep with Z, hold Space to sleep faster
- Tab shows your stats: energy, hunger, thirst, bladder, sleepiness, how worn
- The others live the same day: they eat, drink, pee and sleep at night
crate, the water barrel and the cool box are gone: food and drink come with the car later)
it presses sooner); drinks fill it, and a full one takes a while to empty
Aim with the mouse, hold Shift to push harder (further, quicker done). Next to the toilet (in the main house, off the corridor) P takes you in; the others use it too when it's not too far, and wait if it's occupied
in the pocket. Out of them, they fetch more from the box in the toilet (you too: click it). Squatting, trousers come down to the knees, a skirt or dress is gathered up; standing, the fly is open or the skirt lifted
some say "not for me" and squat again
again after (you too). The Urinella shows while it's used. Standing, one hand holds it (or him), the other stays at the belt A used Urinella goes into the bag (tidy), is dropped (careless) or flung away (drunk); now and then it ends up on the shoes
a while, less when it's urgent) or far: a decently hidden spot behind a bush, tree, wall or car, away from the others; spots others used are fine too. Standing they face it, squatting they turn their back to it
it shows on your clothes, people say so, Tab shows it. Wash at the kitchen sink (click), or get hosed down
ground (see Water and mud)
and walk off
out you are from the days' work (only sleep takes it off; a hard day leaves some for the next), drink, dirt, how fast you sprint and how high you jump; the arrow keys turn to your skills. Only pressing needs show otherwise
Sound
- Everything is made up on the fly (no sound files): steps by what's
- Further away is quieter and duller, and comes from its side
- M: sound off / on; the menus pause it
underfoot (grass, gravel, tar, earth, mud, puddles, wood), wind (gustier the stronger), rain (drumming and dull in your tent), thunder after the lightning, the fire crackling, axe strokes, the chainsaw, the car coming in, bottles clinking, glass breaking, somebody hitting the ground, a tree coming down, twigs snapping, the hose, birds by day, crickets at night; people talking (a murmur, deeper or higher by who it is, the words are on screen), Alice barking, crunching and panting, sips and bites, the toilet, the gates creaking, car doors and the boot, pushing through a bush
Saving
- At the start: continue (the autosave), a new game, or load a save
- Esc: save as (type a name), quick save, load a save
- F5 quick save, F9 load it
- Autosave every 5 minutes and on quit
- Saves live in your data folder (on Linux:
~/.local/share/entropie/entropie/saves) - Old saves keep working with newer versions
- Saved up a ladder, you load back on it; carrying something together, you
load holding it together still
Changes by round
What each version since 1.92 added (older ones are folded into the sections above).
Round 1.92:
- Feet on the course (
physics.cbeginStepOver): the landing spots of a step over / onto are the surface plus the ankle's own height (BODY_ANKLE_Y), not the ankle as it was (up on the toes: it stood 12-22 cm over a log). Planted feet over 3 cm off the surface now at most 5-9 cm, rarely (all three lanes).tryStepUptakes whichever collider axis points up (firewood lies on its side: you were bulldozing a half log 2.5 m down the course instead of walking onto it). - Holding a ladder (
ladder.c): from the side (HOLD_OUT 0.3 out, HOLD_BESIDE 0.48 aside,hold_side: the side they came from), both hands on that rail (one higher), the near foot on the end of the bottom rung; the climber gets on and off in front.ai_help.cai_holdLadder: the last 0.7 m straight to the spot, there within 0.1 m, walks back once 0.2 m off (hold_there). - Up high (
Object_upHigh: on a roof slab, or 1.6 m+ over the ground):Object_caution= 0.35 + 0.5 height_fear - 0.15 fitness + drunk x (wits - 0.45) x 0.8. NPCs walk at most HIGH_PACE 1.5 m/s x (1 - 0.5 caution), arms out (balance 0.5 x caution); careful ones say "Don't look down...", drunk and careless "Woo! Look at me up here!" and stumble (HIGH_STUMBLE 0.12/s x drunk).height_fear(dev menu row): over 0.6 (less when drunk) they don't follow up a ladder ("No way - I'm not going up there"). - Breaks (
ai_work.ctakeBreak): each break their own kind (BREAK_OWN 0.6) or another (sit, walk, chat, BREAK_COFFEE: to the nearest stove within 70 m, sips, back); 30 % long (x1.8), else short (x0.7), longer and sooner when worn; the tool goes down first (Hands_setAside, taken again after). A walk back early: the rest sitting. - Called away (
Ai_helpkeepspaused_order/paused_area):Ai_stopHelpingsends them back to it when 0.6 wits + 0.4 willing - 0.3 drunk > 0.42; the others forget it, and "Back to the <job>, please" (talk, first choice) reminds them (Ai_resumePaused). - Worn from the days before (
worn, condition.c): + WORN_PER_EFFORT 0.012 per stamina used, - WORN_SLEEP_HOUR 0.075 per game hour asleep; adds up to WORN_FEEL 0.6 toObject_tiredness. Tab shows it ("Worn (days)"). - Woodpile: "Find a good place for it" (instead of "Just pile it up here"): a woodpile within 40 m of the work, else the best spot 3-9 m round it (clear of things, level, off roads, by something big and fixed); they think it over first.
Round 1.93:
- Chairs: sat down (body.sit 0.85+), the chair shuffles in towards the table (
world.cscootTo: a ray from just over the seat; the table's edge SEAT_TO_TABLE 0.3 m from the hips, at most 0.15 m past where it stood) and takes the sitter along (slideChair moves whoever has it asseat); getting up it goes out to CHAIR_PULL first (seat_scooted), then you step off. - Putting down (E / Q,
hands.cplaceOnSurface): onto the highest level top 0.3-1.5 m over the feet, under the hand or 0.45-0.85 m ahead (static, or loose things 20 kg+; it must fit), upright (tools lie flat). Not on such a top: a bottle getsdrop_tipand falls over when it lands (DROP_TIPS 0.85). - Slopes: loose things slide down the ground too (resolveTerrain, terrain normal from 4 heights); round only when lying (
rolls: bottles, logs on their side; apples always); moving, they grip GRIP_MOVING 0.6 as much (a nudge sets them going). Not ladders, nor leaning things. - Felling (
tools.c): the cut at the tool's height (axe 0.95 m: hip) unless you look lower. The trunk falls about the cut and, as it comes down, its butt slides off the stump (fall_slide: the stump's and its own radius) to the ground there (fall_ground_y, set inforestry.cfell); the old double drop in Forestry_update is gone. - Swinging two-handed (
body_pose.c): shoulders SWING_CHEST 0.8, hips SWING_HIPS 0.3, head SWING_HEAD 0.3 with the swing; the back arches winding up and bends into the hit (SWING_ARCH 0.15). - Gates (
object.cObject_swingGate): open right round (to 177 deg, GATE_SWING_TIME 1.8 s), hung on the outside of the wall (GATE_HINGE_X 18.94), lying flat against it. - Climbing (
climb.c): a ledge only if nothing fixed is between, from 0.5 m over it at the body down to 0.05 m over it at the hands (onlyWalls): no more climbing through a wall onto what's behind it. - Main building: one roof (the left one runs on into the right one:
ShapeRoof.valley, two valley triangles and the ridge cap, no eaves there; both dark); the right half's back in line with the left (RIGHT_Z0 -5). The ground isn't drawn under any floor (pits for both halves and the porch at -0.06, after the basement's: TERRAIN_PITS 8). Basement: floor at -2.45, 14 steps of 0.175 x 0.23 from a landing 0.8 m deep (WELL_TOP_Z 3.9), the side opening up to the ceiling (no lintel). - Roofs (
shapes.c): the whole underside of a tiled slope, and the gables from inside: no looking through a roof from below. - The shell (
manor.cShell_build): 6.4 x 6.7 m (2 m longer towards the frame, which moved out 2 m), the ridge front to back, the door (1.6 m) on its -x side towards the woodpile, windows; the front closed but for a window. - Alice is a painted figure (
figure.fragspecies 1, buildDog: body, neck, skull, snout, nose, floppy ears, legs with paws, tail; her eyes painted;dog.cDog_draw sets her joints: legs trot in diagonal pairs, lying stretched, nose down sniffing, tail wagging); her shadow the same way. Shapes_dogLeg / dogTail are gone.
Round 1.94:
- Alice fetches (
dog.cDOG_FETCH / DOG_BRING / DOG_KEEP): something thrown or dropped up to FETCH_KG 2 kg within FETCH_SEES 20 m (food: FOOD_SMELLS 10 m) -> she runs to it with her mouth; caught in the air below CATCH_HIGH 0.75 m (CATCH_CHANCE 0.55); carried at her mouth (carry), brought to whoever threw it (from) and dropped at their feet ("Woof! Woof!"). A sausage is eaten on the spot ("gulp"), an apple kept: she walks off, lies down and chews it (CHEW_TIME 18 s, "crunch crunch"). - Fallen trees (
forestry.c): once down (not stopped by something) loose (is_staticfalse), weightObject_treeWeight(wood + TREE_BRANCH_KG 18 per branch). Grabbing usesObject_dragWeight: lying on the ground TREE_DRAG 0.5 x weight + TREE_SNAG_KG 25 per branch. Only the trunk collider meets the ground. Dragged with the crown against something static:snagadds up (fades 0.5/s when free), the tree is held; at SNAG_HOLD 1 s (or SNAG_SPEED 0.9 m/s) a branch snaps (dropBranch, chips). - Carried ladders and walls (
world.c): a raised ladder running into something tips down flat (dipped) only if that gets it out (a beam, a doorway); else it is stood up straight (steep, RAISE_HIGH) until it would stand at 1.36 clear again. Carried at the side, a ladder in a wall slides along in the hand (grip_shift, SLIDE_STEP 0.1 m, at least SLIDE_KEEP 0.35 m from its end; back to the middle once clear) before the walk is stopped: taken off a wall, walked into one.
Round 1.95:
- At a table (
ai.cAI_TABLE): a free chair standing at a table (chairAtTable: within 0.8 m of its edge, facing it, same floor; not anyone'sseator target) within TABLE_WALK 35 m. Food picked up goes there TABLE_EAT 0.75 of the time, a beer TABLE_BEER 0.3; idle with no fire TABLE_SIT 0.06 a decision. Walk there (ai_steer), within TABLE_SEAT 0.5 mObject_sit; sitting TABLE_STAY 25-70 s: a bite or sip every 3-5 s (table_pause), done: on the table (Camp_doneWithBottle); a word with someone sitting within 2.6 m every ~14 s, they answer; looks at them. Up when done and the time is over, or bladder 0.8 / sleepy 0.85 / hungry or thirsty 0.6 with nothing in hand. Chair taken on the way: another one, else eat standing. - Walking map (
nav.c): per cellg_floor, where one stands: the ground, or the top of a building's level box (OBJ_WALL, not a roof, at least 0.2 m across, up to WALK_ON_MOST 1.2 m overTerrain_naturalHeight, the ground without pits). Blocking is measured from there (floors over pits were blocked: no way into any building). A* and the straightening don't go up or down more than NAV_RISE 0.38 m a cell (x1.42 diagonal): stairs yes, floor edges no. - Steering (
ai.cai_blockedBy): a building's floor or step up to STAIR_FIRST 0.3 + STAIR_SLOPE 0.65 x distance over the feet is walked up, not round; a standing tree blocks with its trunk only (the crown boxed people in under small trees). Squeezed (their own spot within clearance of something): out the way that's free 2/3 and 1 x the look ahead (ai_steerPast). - Sitting: no half-over-something falls (
world.chalfOver clearscrossingwhile sitting; feet under the table started a step over). - Felling cut (
tools.c): looking lower than hip height, right where you look; between that and AIM_UP_FROM 0.3 m over the eyes, hip height; higher, the cut goes up as much (clamped to the tool's range: axe 0.45-1.35 m).
Round 1.96:
- Walking map in two levels (
nav.c): level 0 where one stands (the ground or the top floor / step), level 1 under it where there's BELOW_ROOM 2 m or more (a basement: the pit floor, its stairs' lower steps). Nodes are level x N2 + cell; A* steps to whichever level of the next cell is within NAV_RISE (stepTo): the stairs join them. Start and goal take the level nearest their height (levelFor); waypoints carry the floor height. Diagonals only blocked between two blocked corners (a turned stair runs diagonally). NAV_MARGIN 0.25 -> 0.18 (an 0.8 m landing or doorway keeps a row of free cells). - Steering (
ai.cai_blockedBy): a building's walls kept WALL_RADIUS 0.24 m off (BODY_RADIUS 0.35 left no way through a 0.9 m doorway); a building part over the head (bottom 0.3 m+ over the feet) more than 0.6 m off doesn't block (a floor over a stair going down). Wandering counts progress along the way round (stillToGo), not straight to the goal. - Sitting at a table (
body_pose.ckeepBodyOut): the legs aren't lifted onto anything higher than the hips (they lay on the table top).
Round 1.97:
- Jacket off and with them (
jacket_hungfalse, top not TOP_JACKET):FigureLook.jacket_tied(set inworld.cdressForNight) ->jacketTiedin figure.frag: a band over the hips, a knot in front with the two sleeve ends hanging (over a skirt's top), the rest hanging flat down the back. MAX_PARTS 31 -> 35 (and addPart stops at it). - Back on the rack (
ai.changJacket): idle or wandering, warm (chill under 0.05), the rack within RACK_WALK 60 m: RACK_CHANCE 0.004/s x tidiness (0.5 + liking for clearing up - 0.4 drunk); there (goTo0.6 m) a hand to it,jacket_hung. Gives up after JACKET_GIVE_UP or when getting cold again.
Round 1.98:
- NPCs step up onto higher things (
object.cObject_stepUpMost: (0.38 + 0.37 fitness) x (0.75 + 0.25 vigor) - 0.25 drunk, 0.25-0.75 m scaled; the player 0.75).ai.clongToStepOnto: static things too (not a building's parts), 1.5 m long or more; up to ONTO_HIGH 0.55 anything, higher up to their own most if at least ONTO_DEEP 0.5 m deep.physics.cstartStepOver: the "higher" step up for NPCs as high as Object_stepUpMost (it was the player only). - Step over / onto: where the way meets the thing's near and far face from a ray (
Collider_ray) instead of its projected radius - at a slant a long thing's corner made the step start 1 m early and land in the air before it.
Round 1.99:
- Breathing (
body_pose.csolveStanding):breath_phaseruns at the breathing rate (1.5 + 0.6 nerves + 3 exertion rad/s); it was sin(clock x rate), which raced through whole breaths whenever the rate changed (recovering after running: the shoulders twitched fast). - Catching breath (
body.cfidgets):puffed= smoothstep(0.35, 0.75, exertion); fidgets come up to 4x sooner. New FIDGET_KNEES (bent over,bentDown= max(being sick, 0.85 x catchingBreath, eased 0.9 s), hands on the thighs above the knees; weight 4 puffed x (1.15 - fitness) - proud) and FIDGET_ON_HEAD (fingers laced on top of the head, elbows up, chest open; 3.5 puffed x (0.2 + fitness)); hands on the hips +2 puffed, a stretch +1.2 puffed x fitness.
Round 2.0:
- Cigarette machine (FURN_SMOKES,
shapes_props.c: red box on the wall, packs behind glass, knobs, coin slot, tray): on the main building's front SMOKES_FROM_TAP 2.65 m along the wall from the tap, past the door (site.c). Player: click within 0.9 m -> SMOKES_PACKS 20 cigarettes (game_actions.csmokesMachine). NPCs (ai.c): out of smokes, nobody near or refused ("Buy your own"), or the player asked once already without anything coming (asked_you) ->want_smokesif idle / wandering / at a table and the machine within SMOKES_WALK 150 m ("Right, I'll get a pack from the machine.");buySmokes: there (goTo 0.6 m) a hand to it, +20, lights one soon; gives up after 120 s. Free for now.
Round 2.1:
- Cast (
scene.c): you; Volkram, Jana, Toni (your friends); Kurti (74, the house is his) and his sons Martin (~30) and Jonas (~25). Their own clothes (LOOKS, the wardrobe for anyone extra), AGE (past 45 slower: top and jump speed x (1 - (age - 45) / 60), at least 0.5). - Rolling kit (
pockets.c):tobacco(roll-ups' worth, a pouch POUCH_ROLLUPS 75),papers(PAPERS_PACK 50),filters(FILTERS_BAG 120),filter_habit; a roll-up takes tobacco, a paper and a filter if there is one.Pockets_need: papers, tobacco, or (filter habit) a filter missing.ai.csmokeBreak: asks whoever near has it to spare (6 m): NPCs give (3 papers, 5 filters, a pinch for 2) or say no; the player is asked (asking_you, a hint line until given, or they walk off). A filter is asked for once a smoke (filter_asked), then they roll without. - Your pockets (B,
game_actions.cgame_pockets / Game_pocketLines, drawn on the right inmain.c): what's in them, how many pockets are used (Pockets_slots: work trousers 8 - you -, trousers and shorts 4, a skirt 2, a dress 1). Up / Down picks, Enter: looking at someone you give it (cigarette, pinch, papers, filters, lend the lighter, a Urinella; what they asked for: "Thanks, you're a star!"), else you roll one and light it.keys("Car keys", Kurti's "House keys").
Round 2.2:
- The courtyard cleared for the real game (
scene.c): the carry crates, the heavy rollers (1200 / 100 kg), the 2 x 1 x 2 box and the plank ramp are beside the obstacle course now (TESTING,testCorner: 9.5 m left of the middle lane, 6 m down). Gone: the static box (and what stood on it), the apple crate, the water barrel, the cool box by the fire, the portable toilet and the Urinella carton by the barn, the cigarette machine (FURN_SMOKES stays in the code, placed nowhere: NPCs then don't go for one), the coat rack (jackets start with everybody; NPCs without a rack never go to one). - A toilet in the house (
manor.cfurnish: FURN_TOILET 0.42 x 0.8 x 0.8, cistern against the front wall;shapes_props.c: under 1.2 m high it's a bowl and cistern, not a cabin); the Urinella carton on its floor. - The fire: a ring of 15 field stones (
shapes_addRock, shared from shapes.c), not blocks. Tripod GRILL_TOP 3.9 (was 1.95), TRIPOD_OUT 1.3, TRIPOD_PAST 0.6; the grill hangs GRILL_DROP 3.3 below (the grate stays 0.6 m over the fire; it swings slower, as far). The ashtray tin stands on the end of a bench. - Alice's toys (OBJ_TOY, weight 0: a ball - rolls -, 1: a rope with knots): by her at the start. Thrown, she fetches them like anything; and wandering with you within PLAY_NEAR 20 m, PLAY_CHANCE 0.015/s she fetches one (TOY_SEES 15 m) and brings it to your feet.
Round 2.3:
- Hands (
body_pose.creachArm,hands.c): the wrist bends at most WRIST_BEND 0.3 off the forearm (two passes), so the hand no longer hangs down; a held bottle, cigarette or anything one-handed sits in the fist (fistOf, FIST_AT 0.6 between wrist and fingertips), not floating in front of the fingers. - Shoulder roll (
body.cBody_land LAND_ROLL -> Body_shoulderRoll;body_pose.csolveShoulderRoll, TUCK pose): over about 2.5 m the sporty roll over the left or right shoulder the way they were going (sideways momentum, else their own side,quirk[0]), SHOULDER_ROLL_TIME 1.05 s, carried on at ROLL_ON 3 m/s (world.c), tucked about a 0.42 m ball, feet carried along, a fresh step after. The others still go into the knees or crash. - Sprint: everyone's own stride (
Body.stride, from their quirks: longer steps and fewer, or shorter and quicker; fitter: longer at a run), step length up to 1.8 m, the foot reaching further ahead at a run (MAX_LEAD x (1 + 0.45 run)). Arms swing against the other foot (they stayed forward when both feet were behind the hips), bent more (1.2 + 0.45 run), the forearm eased less. - Size (
object.cObject_setHeight, called inscene.c): the body box, its middle, the step height are from each person's own height (1.66 .. 1.86 m; it was 1.75 for all), top and jump speed x sqrt(height / 1.75). Audit NPCs: joint jumps 4516 -> 2418, knees back 76 -> 8; sprint 338 -> 225.
Round 2.4:
- The coat rack is gone from the code (FURN_COATRACK, Shapes_coatRack,
jacket_hung, hangJacket). The jacket is called a pullover in the game. - Pullovers as things (
clothes.c, OBJ_CLOTHES: one each, made the first time it's put down, no mesh and no collision while with them again;pullover,pullover_down,pullover_sat;cloth_of,cloth_host,cloth_where). Clothes_spot: sitting on a chair: over its back; sitting on the ground: under you; a chair within 1 m in front: over its back (CHAIR_GAP 0.05, it goes along when the chair slides); else what you look at within LOOK_REACH 1.9 m: a top 0.35-1.5 m over the feet that drops 0.25 m within EDGE_THICK 0.42 m past the edge: hung over it (a railing up to 0.12 m thick, a wall top, a bench; the drape as wide as the edge), else folded on top (a table, a bench, a chair); else spread on the ground in front (up to 0.6 m). MeshesShapes_pullover(spread with the sleeves out, hung over an edge, folded). - You (B, pocket rows "Pullover", "Put your pullover down"): put on / take off (round your hips), put it down where the verb line says; click it (within 1.3 m,
takePullover) to take it back; somebody else's: "That's Jana's pullover". C at your spread pullover: you sit on it. Cold: put on for you once a cold spell (jacket_told), after that it's up to you; put down: told where it is. - People (
Clothes_update): sitting down (settled), warm, theirs with them: over the chair's back (0.8 x tidiness) or under them on the ground (tidiness: 0.35 + 0.35 liking for clearing up + 0.2 pride - 0.3 drunk), "Not sitting in the dirt."; getting up, it comes along. Cold with it put down:ai.cfetchPullover (idle, wander, at a table; on their own chair or under them: just take it; else goTo it, on with it; gives up after 90 s, 80 m off or warm).
Round 2.5:
- Cigarette butts (
world.csmoke, at the end of one): a burning fire within 3 m: in; the tin or a bin within BUTT_REACH 4 m: in (the tidy and you; the others 40 %); a pocket ashtray (pocket_tray: you and Jana):Pockets_keepButt(pocket_butts); the tidy (likes clearing up over 0.2 or pride over 0.4, under 0.6 drunk):butt_held; the rest: dropped or flicked (as before). ai.cbinButt (idle, wander, at a table): withbutt_held, the tin, a bin or a burning fire within BUTT_WALK 30 m: there (gives up after 40 s: skipped) and in; none: asks somebody within 6 m with a pocket ashtray (NPCs: "Sure, put it in." - into theirs; you:asking_youPOCKET_ASHTRAY, the hint line, B Enter "hold it out"); nothing after BUTT_WAIT 25 s or held BUTT_KEEP 90 s: wrapped up into the pocket ("I'll keep it till I find a bin."). Pocket butts are emptied passing within BUTT_PASS 2 m of the tin, a bin or the fire; a pocket ashtray with TRAY_FULL 8 is taken there on purpose.- Your pockets: row "Pocket ashtray - n butts": Enter looking at somebody holding a butt: it goes into yours ("Thanks - much better than on the ground."); else at the tin, a bin or the fire (within 1 m): emptied.
Round 2.6:
- Arrival (
game_arrival.c,ARRIVE_BY_CAR): your car (OBJ_CAR,car.c, an estate:Shapes_car, from the seatShapes_carInside- the body round the eye hid everything) onSite_arrivalPath(gravel road, into the yard, parked at court 24 / 19 facing the garages; Catmull-Rom, ARRIVAL_SAMPLES 160), DRIVE_TOP 5.5 m/s, braking 1.4 m/s^2, about 12 s. You (driver), Volkram, Jana, Toniriding(hidden, no physics, no AI, moved with it; first person from the seat, nothing to do but look). Parked: out one after the other (0.6-2.6 s, a line each), Kurti "There you are!", the boot open at 3.2 s, the three friendsai.unload. - The boot (
CarLoad, last in first out): sleeping bags, mats, tents (big: Volkram and Jana; small: Toni, you), then 2 crates of beer, 2 of water.Car_takeOut: set down behind it. Unloading (ai.cunloadCar, idle / wander): to the boot (side by side,ai.side),ai.take_from= the car ->Car_serveputs the next thing there for them (ai.target), picked up (crates and the big tent with both hands), carried toCar_dropSpot(crates:Site_drinksSpotby the fire, 0.5 m apart; the camping things:Site_campSpotin the orchard - yours, Volkram and Jana's, Toni's - side by side by kind), put down there; gives up a trip after 70 s. All 15 things out in about 110 s. You: left click at the boot (game_unloadCar, 1.1 m): the next thing into your hands; hint lines at the boot and carrying. - Crates (OBJ_CRATE: beer 20 bottles, water 12; 19 / 16 kg;
Shapes_crateshows what's left; set down standing). Left click: a bottle (Crate_takeBottle); E / Q: the crate. NPCs wanting a beer or a drink count crates like bottles (findConsumable), at itai.take_from-> a bottle on top for them. - Camping gear (OBJ_GEAR: sleeping bag, mat, small and big tent bag;
owner; colours by owner,Shapes_gear). - The fireplace's ground slab is 0.6 of the ring wide (its corners at the stones): people beside the fire stepped on and off its corners (Kurti's joint jumps in the NPC audit 1465 -> 421).
Round 2.7:
- Tents (OBJ_TENT,
tent.c: small 1.4 x 2.1 x 1.0, big 2.2 x 2.4 x 1.3;Shapes_tentby stage: the ground sheet, the inner tent - a dome - rising with the poles, two poles corner to corner, the cover going over from the back, pegs with guy lines, the door; built again in 12 steps a stage).Tent_unpack: a tent bag where it lies, the door facing the given way (NPCs:Car_campDoor, towards the yard; you: towards you). Stages (Tent_work, one average person: x (0.75 + 0.5 wits), drunk slower): spread out 4 s, poles 16 / 24 s, cover 10 / 14 s, pegs 2.5 s each (a stone in hand: half), 6 / 10 pegs. Its box grows with it (nobody stands on a tent:World_groundHeightand step-over leave it out). - People (
ai.cpitchTents): after unloading, their own bag spread out and the tent pitched (atTent_workSpot, the hands atTent_handsAt: the edge, the poles, the cover, the next peg - hammering); somebody at work on one within TENT_HELP 25 m (you too): HELP_CHANCE 0.12/s x (0.5 + willing) they come over ("I'll give you a hand"), for up to 150 s; their tent up: their sleeping bag and mat carried to its door.goToBed: sleepiness 0.8+, their tent up within 70 m: to its door,Tent_crawlIn(lying back into it, the feet by the door,in_tent: no collisions with it), up again: out at the door (Tent_update). Far walks look for the way round first (goToPoint:findWayover 6 m - Toni stood behind the orchard's hedge bumping his shins). - Beds: a sleeping bag or mat put down within 0.8 m of the door of its owner's tent (cover on) goes in (
tent_beds). Asleep in a tent: sleep goes 1.15x, with their sleeping bag 1.4x, and they warm up (no chill). - Unloading puts each tent bag on its camp spot and the sleeping bags and mats CAMP_BEDS_OUT 2.8 m out in front of where its door will be.
- You: left click on a packed tent (
tentClick) - spread out; held at a tent going up (CLICK_TENT, 1.2 m): work on it; a hint line says what's next; Z at your tent's door: crawl in. - Test (all three tents): up about 2 min after unloading, the beds in; to bed at night: in their tents, hidden by them.
Round 2.8:
- The car from inside (
Shapes_carInside): doors up to the windows, the pillars, the roof, the floor, the seats, the back seat, the boot full, the hatch - from the driver's seat you looked through the car. The others ride sitting (Car_getIn: SIT_SEAT, seat 0.28 m over the floor, CAR_FLOOR 0.35,far_offwhile riding: nothing to keep out of) and are drawn: you see them beside and behind you, and through the windows. - The way in (
Site_arrivalPath): off the street onto the gravel road beside the main building, along it, up past the main building into the yard; parked at court 25 / 19.5 facing the barn (about 25 s). - First: hello. The friends get out and go to the fire (
ai.greet,greetHosts: round it, sitting down); Kurti, Martin and Jonas sit on the benches at the fire from the start (scene.c; idle on a seat - or greeting - they stay sitting with the fire out;ai_ensureReadykeeps a timer set beforehand). You go over (4.5 m): the welcome, four lines (game_arrival.cwelcome); sit down (C) near Kurti (or 25 s): a chat, three lines; then the boot opens and the three unload (startUnloading).game_task: the hint line says what's to do (hello, the chat, the car and the tents) when nothing else is said there; done when the boot is empty and the tents stand. Kurti and his sons don't go in meanwhile. - Behind your garages (
Site_rise): 1.5 m up, a steep bank right behind their back wall (1.6 m), the way up by the little path left of them (9 m); a meadow court a 6..40, b -19..-34; bushes round it (plantMeadows), six trees that stay (keep: not felled by you or anybody, "this one stays"). The forest cleared off it (CLEAR_B0 -40). The tents go there (Site_campSpot, doors towards the garages:Site_campDoor). Right of the main building: a meadow 0.6 m up (a -6.5..3, b 18..29), bushes behind and on its right; the tap (and hose, can) on the right half's right end (TAP_A / TAP_B). - The car room's doorway (your garages) z -12 .. -7.5 (was -14 .. -9): open, the left gate ends at the corner - it stuck 2 m out over the little path.
- Crates go into the kitchen of your garages (
Site_drinksSpot: along its front wall right of the door). - Heavy in the arms (
Condition_load: weight over body weight x strength x (0.7 + 0.6 fitness); from 0.08): tiring (TIRE_HOLDING 0.12 x load); a crate is 0.21 (Volkram) .. 0.34 (Kurti). NPCs unloading put it down for a breather under 0.25 stamina, up again over 0.55 ("Phew - heavy one."); you put it down worn out (0.06). Two can carry it: F, then E (lift together). - Kurti:
FigureLook.belly(a round part over the belt, figure.frag, MAX_PARTS 36),keeps_shirt(no shirt off in the sun). - Kurti and his sons (
lives_here): orders refused ("Your festival, your work"), no helping (help calls, talk, tents). Into the house now and then (ai.cgoInside: INSIDE_CHANCE 0.005/s idle, 90-390 s,indoors: hidden, no physics, no AI, atSite_houseDoor); called (callOne): out in 3 s, "Coming!". The others don't wander into the house (Site_inHouse). - On a break (
ai_work.cputToolsDown): the orderly (stack care over 0.5) lay their tools down side by side, square, a step back; the others drop them any old way. An axe or shears put down or come to rest lies on its side (Hands_drop;physics.csettleOnGround tips a blade-up one over). - Default things thinned out: no bottles or vodka lying about, 4 pieces of litter in the yard (was 26), 2 in each open garage (was 12).
Round 2.9:
- Settled first (
Ai_setSettled, fromgame.c): nobody comes up asking for jobs (maybeApproach) until the arrival's work is done (boot empty, tents up). Kurti and his sons never ask. - Two more crates (
car.cCARGO_SODA / CARGO_MATE; crate variant from weight: 0 beer, 1 water, 2 soda, 3 mate): soda 12 x 1.2 kg (cola and orange taking turns,BOTTLE_COLA/BOTTLE_ORANGE), Mate 20 x 0.85 kg (BOTTLE_MATE).Object_setDrink: per style quench / refresh / nourish /wake(Mate 0.04, cola 0.01 off sleepiness a sip,hands.c). Boot: Mate, soda, water x2, beer x2 under the tents, mats, bags. - Dev menu (
game_dev.c): time of day (Left / Right: an hour), game speed (1, 3, 10, 30, 60, 120x), weather (on its own, dry, a shower, pouring), skip the start (game_skipArrival: parked, out, welcome and chat done, everything unloaded, the tents up). - Weather (
world/weather.c):world.raineases (RAIN_EASE 150 s) torain_goal: dry FIRST_DRY 3 h, then dry spells 2-8 h and showers 12-52 min (0.25..1).world.wetsoaks in 25 min of hard rain, dries in 3 h (3x at night). 7 mm an hour poured onto the ground within 16 m (Wetness_pour, 8 splashes a frame, not under a roof:Weather_covered, a ray up 14 m). Fires lose 0.004 kg wood a second x rain. Drops (1400 x rain) within 9 m of the camera, 8.5 m/s, a little wind;Shapes_raintwo crossed two-sided streaks each; none under a roof. Light (game.crainLight): sun x (1 - 0.45 rain), the sky to grey, shadows x (1 - 0.85 rain);rainWetin scene.frag: the ground damper, the rest darker. - Shelter (
ai.cshelter, from rain 0.3, out in it:rain_outin world.c): crates and gear down, Kurti and his sons into the house (indoors, kept while rain > 0.1), the others into your garages' kitchen (atSite_drinksSpot). Rain makes you colder outside; a hint the first time.
Round 2.10:
- Sitting in a skirt or dress (
figure.frag): the thighs out forward (sitfrom the thighs against the spine), it lies over each thigh (two parts that melt into one lap, r 0.112 .. 0.098) and its hem falls a little in front of the knees (a flat part, 9 cm) - the cone from the waist to the knees made a ball round the lap. MAX_PARTS 38. - Rain, into the tent (
ai.cshelter): the friends go into their own tent (up) at night (21-7) or when it's nearer than the kitchen; in, they doze (rain_nap: not woken by being rested,condition.c);tent.cTent_update gets them up once the rain is under RAIN_NAP_END 0.15 (sleepy, over 0.6: they sleep on). - Kurti and the chainsaw: gone with "no helping" (2.8) - NPC audit: Kurti 33 joint pops (was 300-900), no tools in hand in 10 min.
Round 2.11:
- Taking a tent down (
tent.cTent_takeDown,tent_down): anybody in it comes out (woken); then Tent_work runs the stages backwards (workDown: each DOWN_QUICKER 0.6 of the time up, the pegs out one by one from the last, the cover off, the poles down, FOLD_TIME 7 s folding) and returns TENT_DOWN + the stage (TENT_DOWN_PACKED folded). Tent_update packs it (pack): its bag (Gear_create, from car.c) where it lay,keep(its owner doesn't put it up again on their own:ai.cpitchTents), the sleeping bags and mats that were in it at the door; the tent used up (no owner: Tent_of skips it). Drawn the other way round (shownWork). - You: hold left click right at a standing tent (0.6 m, so a click near it still takes things): TAKE_DOWN_HOLD 1 s, then it comes down while you hold (
game_actions.cworkTent). The owner and anybody near help (helpers drop a packed job). Hints: "hold left click: take it down".
Round 2.12:
- Wet clothes (
FigureLook.wet,world.cclothesWet, game seconds viaworld.game_dt): out in the rain wet through in SOAK_THROUGH 6 min x rain; dry by a burning fire (4 m) in 8 min, in the day outside 40 min, else 2 h. Wet (over 0.2, not by a fire): cold like the rain (0.8 x wet). Drawn darker (figure.fraguniformsoaked: clothes, hair, shoes x (1 - 0.34 wet)). Tab: "Wet"; "You're wet through" once over 0.6. - Drying off (
ai.cdryOff, idle / wander): over 0.45 wet, the rain under 0.1, a burning fire within 60 m: over to it (2.4 m), sitting there till under 0.1. - Thunderstorms (
weather.c, rain over STORM_RAIN 0.7): a flash about every 75 game s (world.flash, fading in a quarter second:game.crainLight lights everything white), the thunder 1-6 s after (world.thunder: said on the hint line, somebody near says something). - Bedtime at work (
ai.cgoToBed): working, they go once sleepiness is over WORK_BEDTIME 0.9 (idle 0.8), putting the work down first. - Rain drops within 1.5 m of the eye aren't drawn (fat bars right in front of the camera).
Round 2.13:
- Wind (
weather.cblow):wind_goal0..1 (x WIND_MAX 14 m/s) changes every 20-80 game min (0.04 + 0.35 d^2 + 0.45 x rain coming), a thunderstorm at least 0.55;wind_leveleases to it (WIND_EASE 240 game s);wind_angleturns a bit each change. Gusts: a slow beat of two sines (GUST_RATE 0.45) on top (up to 0.6 x WIND_MAX x level).world.windthe vector now;Weather_windSpeed. Dev menu: on its own / calm / a breeze / a storm. - Rain drops drift with it and slant (
Shapes_rainlean: the top upwind). Smoke and sawdust slow to the wind's speed (Chips_updatewind). Fires smoke now (Chips_smoke, a big soft grey puff every 0.22 s / flame size, rising 0.9, spreading 0.22 m/s). Flames sheared downwind (drawFlames, 0.07 x wind, at most 0.8). - Tents in the wind (
tent.cblowAbout): not up and under half the pegs in, nobody working on it for BLOW_HELD 1.5 s: on its poles from 4 m/s, flat from 6.5 m/s, it slides 0.13 m/s per m/s over that (flat half), turning a little, on the ground; a ray along the wind (0.3 m up) hitting something static: snagged, it stays.world.tent_blowing-> the hint line: "Volkram's tent is blowing about in the wind - peg it down!" (not again for 60 s).
Round 2.14:
- Trees (standing) and bushes sway with the wind (
world.cwindSway: sheared from their foot, SWAY_TREE 0.06 / SWAY_BUSH 0.10 per m of height in the strongest wind, x a beat of their own; a little even when calm). Drawing only: their shadows and colliders stay. - Light things blown along (
world.cwindBlows, before the physics step): paper and plastic litter from 5 m/s, a pullover put down from 9 m/s; BLOW_SHOVE 0.9 m/s^2 per m/s over that against the ground's grip; paper spins. - Owners chase their tent (
ai.cchaseTent, before the rain: idle, wander, at a table, working, fetching): the wind pushed it lately (tent_blown6 s) and it's within 70 m: "Hey - my tent!", over to it and on with it (working on it holds it: it doesn't blow while worked on).
Round 2.14.1:
- The main building's left roof: its ridge cap stuck out about 4 m past the left gable ("the roof peak of the left building is too far left"). The bit of ridge running on into the right half's roof (
Shapes_structure, roofs withvalley) was turned with rotate_z(-90 deg), which sends the tube to -X: now +90 deg, it goes on into the roof across.
Round 2.15:
- Pullover put away on their own (
ai.changPullover, idle / wander): warm (chill under 0.1, no rain), tied round the waist, tidy (ai_stackCare 0.35+): now and then (HANG_CHANCE 0.015/s x tidiness) over to the nearest railing (railing: a thin OBJ_WALL piece 0.6-1.4 m high), bench or free chair within 30 m, beside its long edge (a chair: behind its back), looking at its top:Clothes_spot-> hung there (Clothes_putDown), else that one skipped a while. Not again for HANG_AGAIN 240 s (none near: 60 s). Cold again: fetchPullover gets it as before.
Round 2.16:
- Felling room (
ai_work.c): before an NPC fells a tree (ai_taskForJOB_FELL ->fellPlan, once per tree:fell_plan,fell_blocked), FELL_DIRS 12 ways round it, nearest to the way they'd fell it first;fallHitslooks down (rays from 14 m) at spots every metre from the stump to its top (treeTall), across the trunk near the stump and a crown wide further out: a house, barn, building, wall, car, tent, furniture, fireplace or woodpile hit counts. The first clear way (or the least bad): the feller stands on the other side (it falls away from them). No clear way at all: "No room for that one to come down - I'll leave it" (skipped). - Nearly through (
Tools_fellDoneover FELL_WARN 0.6): anybody where it'll come down (from the stump to its top + 1.5 m, a crown + 0.6 m wide) is warned ("Timber! Out of the way!", you: "...it's coming down there!"); NPCs step out sideways past the crown (ai.dodge_to,dodge_t8 s, first thing in Ai_update); the feller waits (ai.timber, counts as fine waiting for the watchdog) till nobody's there.
Round 2.16.1:
- The crash arriving by car: at slow frames (10 fps, or a spike up to MAX_FRAME_DT 0.1) the arm springs (
body_pose.cspring: ARM_STIFFNESS x4 running, explicit damping 22 x 0.1 s > 2) blew up - a passenger's hand went NaN (they vanished), then the ground lookup took an index from the NaN (terrain.cwearAt: SEGV).springnow splits a frame into steps of SPRING_STEP 0.02 s (60 fps: one, nothing changes there) and never hands a NaN on;Terrain_naturalHeighttreats a NaN position as outside. Checked: the drive and the hello at 10, ~16 and 60 fps (jittered), and under AddressSanitizer. - Passengers sat backwards: a person's yaw is turned round from a thing's (
Object_facingvsyaw_front):Car_placegives them car yaw + pi. - The car from inside (
Shapes_carInside): the windscreen pillars lean back like the windscreen (were tipped forward); the footwell's front and the dashboard's underside close the hole under the wheel; the floor and the doors go on to the front (you saw the road beside and under the dashboard). - Sitting people (on a bench, chair, log, in the car) no longer turn their whole body to follow you (
turnTowardsleaves them as they sat; the head still turns to look).
Round 2.17:
- Arriving: out of the car everybody stretches (
Body_stretch: FIDGET_STRETCH x1.3), then (7 s) over to the fire together at a stroll (goToPointgreeting: STROLL x1.15). Shouting for everybody leaves out Kurti and his sons (lives_here: call them by name). - Pace (
Object.pace, scene.c: years x (1 + 0.12 energy)): NPCs walk that much slower (ai_walk) - Kurti about half. NPC WALK_SPEED 2.2 (was 3.0: as quick as you walk), and slowed by what they carry like you (Hands_moveFactor: a crate in both arms 0.7) - they carried crates at full speed. - The car: Volkram drives (car keys in his pocket), Jana beside him, you and Toni in the back. A new look (
Shapes_car,addProfile: rounded side profiles made solid): an old faded green estate (CAR_COLOR), glass all round with pillars and roof over it, roof rails, wheel arches with a bit of rust, a rubbing strip, handles, grille, number plate. Taller cabin (roof 1.57, lining 1.51), seats lower (SEAT_UP 0.18), eyes 1.30: heads under the roof. The seats lean back (were tipped forward). The inside matches (bonnet profile, pillars along the windscreen). - Seats: nobody sits on top of anybody (
Object_sitnow bool;Object_seePeopleeach frame): a bench or log is sat on where you are along it, the nearest spot SEAT_SPACE 0.55 m clear of the others (benches sat everybody in the middle); a taken chair, or no spot left: no sitting ("No room there - somebody's sitting on that spot"). - Kurti's build (
figure.frag, belly): one rounded front - a broad low belly, a soft chest on into it, the sides over the hips, wide blends (was a ball on the belly). MAX_PARTS 41. (Step length already scales with height.) - Bottles back into crates (
Crate_putBottle,crate_empties): left click at a crate with an empty in hand (or both hands full) puts it in; taking one out gives a full one ("Only empties left in this one"). The tidy carry empties to the nearest crate with room within 50 m instead of the bin (ai_help.c). - Tents stood on the sleeping bags lying where they were spread (
World_groundHeightcounted them): on the terrain now (also when blown about). Moving one (game_actions.cmoveTent,Tent_movable/Tent_startMove,tent_dragged): no pegs in it, hold F: it comes along in front of you, turning with you, set down where you let go; then it goes up again from there (hold left click: the pegs). Nobody works on it while it's moved.
Round 2.18:
- Saves (
game/save.c,save.h, SAVE_FORMAT 1; see ARCHITECTURE.md "Saves"):Save_write/Save_read/Save_list/Save_blocked(not while driving in, or in the car). Text.sav(field tables THING / PERSON by offsetof, references as save ids) + binary.ground(Terrain_writeWear/readWear,Wetness_write/read). Objects carrypalette,make_arg(Object_create),scene_id,spawn,spawn_type(Game_initWorld),cloth_gap. Rebuild helpers:Object_rebuildTree,Tent_refresh,Gear_refresh,Clothes_rebuild,Clothes_whereText,Ladder_setExtend,Object_fillBag,Object_setDrink,Object_shatter. Held things come back in the hand (Hands_receive; too big for one hand: at their feet), sleepers asleep, people in tents / the car back in. Game_initWorld(game, arrive); Game_init = with the drive in.World_init/World_destroyforget the people list (Object_seePeople) - loading used the old world's freed array.- Menus (
main.c): a start menu over the waiting world (Continue: the autosave, New game, Load a save, Quit); Esc: Resume, Save as (Platform_typing,Input.text/erase: letters, digits, - _), Quick save, Load a save, Keys, Quit (autosaves). F5 quick save, F9 quick load. Autosave every AUTOSAVE_EVERY 300 s of play and on quit / closing the window. Folder:Platform_saveDir(SDL_GetPrefPath + "saves"). - Tested in the harness: a save written and read back (the same process, and another one): people, pockets, a tent half taken down, crates, rain, the wet ground, a pullover put down, a felled tree with fewer branches; under AddressSanitizer. (The menus: run for real in 2.19.1.)
Round 2.19:
- Saves: the hose's rope (
ropelength + every node: where, melted, taped; was laid out fresh from the tap) and the nozzle where it was (OBJ_HOSE no longer "fixed"); people sitting (sitseat + facing) sit down again on loading and stay 20-35 s (they stood up and walked off at once). - Felling, you (
game_actions.cfellingHint, before the ladder hint): an axe or the chainsaw at a standing tree: the hint line says it falls away from you, or "Careful: it would come down on the car - fell it from another side" (Ai_fallsOnto: the felling-room rays, the first thing hit). Over 0.6 through and somebody where it'll come down: "Timber! ..." and they step aside (Ai_warnFellingRoom, now with the way it falls; NPC fellers use their plan).
Round 2.19.1:
- The menus run for real now (SDL3 built locally, the game offscreen with scripted keys): start menu, New game, Esc, Save as while driving in ("Not while you're driving in"), Save as with a typed name, quick save (F5), quick load (F9), the load list, loading, Quit (autosaved), and the next start: Continue loads the autosave. All fine.
- Save labels shorter ("13:04 - saved Oct 20, 18:01"; the version is still in the file), the menus wider (600): the load list cut them off.
Round 2.20:
- C23: the Makefile asks the compiler for
-std=c23and falls back to-std=c2x(GCC 13 / Clang 17 and older call it that); everything compiles clean as C2x with -Wall -Wextra -Wpedantic -Wshadow. (It was C11 from the start, out of caution; nothing needed changing.) README: a C23 compiler (GCC 9+ / Clang 9+). - Climbing up a high ledge: one hand reaches the edge first (your main hand), the other follows from down by the shoulder (
Hands.edge_lead/edge_trail, set byClimb_update: trailing till t 0.24, the unfit a bit longer). Checked on a 1.7 m wall: hand, hand, pull up, a knee on the top, over.
Round 2.21:
- The careful way up (
climb.csitWay,ClimbMove.sit_way): something SIT_LOW 0.55 .. SIT_HIGH 1.05 m high (scaled), for the less sporty (fitness under SIT_FIT 0.45) or old (pace under 0.8): turned round with the back to it, a hop up so the hips sit on the edge, legs hanging (hands behind on it), the knees swing up and round onto it (turning back to face it: sitting cross-legged on top for a moment), stood up. SIT_TIME 3.2 s fresh. The body sits for it (world.c: sit_goal fromclimb_move.sit_now, not the pull-up pose meanwhile).
Round 2.22:
- Climbing a high ledge, the shoulder of the first hand goes ahead: the shoulders turn up to REACH_TURN 0.35 rad to that side while the other hand still trails (
Hands.edge_turn, set byClimb_update;Body.reach_turn, added to the chest turn inbody_pose.c), easing back as the second hand arrives.
Round 2.23:
- The belly way up (
climb.c,ClimbMove.belly_way/belly): something BELLY_LOW 1.0 .. BELLY_HIGH 1.55 m high (scaled), both hands free, standing, for the less sporty (fitness under BELLY_FIT 0.45) or drunk (over 0.4): hands on the edge, a push up till the hips are just over it (feet BELLY_DROP 0.9 below the top), the upper body lies flat over it (forearms on top;Body.belly_over, BELLY_PITCH 1.0 rad added to the bend inbody_pose.c), wriggling on a little, a knee up, standing up. BELLY_TIME 2.6 s fresh. Checked on a 1.3 m wall.
Round 2.24:
- Blown out of the hand (
world.cwindSnatches): paper (aspaperLike, the trash that blows about) held in one hand from SNATCH_PAPER 8 m/s wind, a pullover from SNATCH_CLOTH 11.5, only in a gust over SNATCH_GUST 0.3; chance SNATCH_RATE 0.35 / s per 4 m/s over it x gust x (0.5 + drunk + 0.5 careless). Dropped, thrown up and off with the wind, a line said. Two hands on it: never. NPCs go after it (ai.cfetchBlown,ai.blown/blown_t): picked up again, given up after BLOWN_GIVE_UP 25 s or BLOWN_FAR 30 m (in a storm paper outruns them). Not saved (fresh after a load).
Round 2.25:
- Saved up a ladder (
save.cladderline: the ladder, how far up): you come back on it as high (Ladder_mountAt: hands and feet straight onto the rungs, no easing); the others at its foot (their climb is AI work and starts fresh: not dropped from up there). Checked: save, load, same spot, climbing on.
Round 2.26 (cleanup):
- README cut down to a short overview (120 lines, was 800); the detailed description of everything moved here ("Playing it"). The round notes moved into this section (they were in the middle of "Behaviours"). RULES: details go into STATE.md.
- Dead code out:
Wetness_soil,Wetness_water,Site_court,Shapes_wallColor(never called).
Round 2.27:
- Up a steep bank (
world.cscrambleHand, before Hands_update): anybody walking on bare ground where it rises SCRAMBLE_GRADE 0.8 m per m ahead, a hand free: bent forward (Hands_touch: lean, crouch to it), a hand put down SCRAMBLE_AHEAD 0.6 m (scaled) ahead on the slope (Object.scramble_hand,scrambling), left there till the body is past it, then down again further up. Checked: Toni up the bank behind the garages. - NPCs: a climb going on is played before anything else in their update (a warned-off climber stalled half way up: Climb_update wasn't reached).
- Tried and dropped: NPCs taking a straight way up a bank instead of the way round - the walking map already goes straight up it where it matters.
Round 2.28:
- Arrival: the friends sit down on a bench by the fire (
ai.cgreetHosts: the nearest bench with room, going to its front on the fire's side); those on it move up (object.cObject_benchRoom / Object_benchMakeRoom: spread out along it, SEAT_SPACE apart, as little moved as can be; you, sleepers and the unwilling - willing under 0.35, or annoyed - stay put unless asked: "Move up a bit?", one of them answers), sliding along it (sit_scoot, Object_scootOnSeat, SCOOT_SPEED 0.35 m/s). Object_sit makes room on its own too (you, anybody). No room: standing in the ring round the fire (GREET_STAND 3.7 m, a free spot nearest first), facing it. freeAlong allows 6 cm less than SEAT_SPACE. Checked: all three seated, Kurti moved up. - Crates know each slot (
crate_slot, CRATE_SLOT: kind and sips;car.cCrate_fill / recount / takeBottle / takeWrong / putBottle / forBottle / rightFor / nextWrong / belongs). A half-drunk bottle goes back half-drunk. You: a bottle put down next to a crate (right click, E / Q, CRATE_REACH 1.4 m) goes in (its own first); right click with empty hands at a crate takes a wrong one out (Hands_receive). The tidy sort (ai_help.csortCrates in ai_tidyUp: SORT_LOOK 25 m, SORT_FAR 60 m, SORT_GIVE 45 s). The crate mesh shows each slot (wrong ones in their own colours, empties without a cap). Saves: aslotsline (older saves: own bottles, full then empty). Checked: a water bottle in a beer crate, Jana took it to the water crate. - Sound (
core/audio.c,game/sound.c,World_noise): see ARCHITECTURE "Sound". Checked through SDL's disk driver: levels (no clipping, no NaN), the car's engine at the start; nothing listened to. - Rain and smoke after the sky (
World_drawAir,Renderer_beginAirPass): they show against the sky now (it was drawn over them). The sky clouds over (Lighting.overcast,skybox.frag: more and darker clouds, a grey veil, no sun, moon or stars;game.overcasteases over 10 game minutes, ahead of the rain). - Rain soaks the ground round everybody out in it too (
weather.c: PEOPLE_RADIUS 6 m, 2 splashes a frame; RAIN_MM_HOUR 9): mud where people walk, not only round the camera. - Hoods (
look.hoodie: jackets 1, 3, 4 of the five;hood_up;figure.fraghoodDistance, in the jacket's colour): out in the rain the jacket goes on, the hood up. Umbrellas (OBJ_UMBRELLA, two: by the house door, in the garage kitchen; one-handed): open held in the rain (world.cunderUmbrella: held up over the head,hands.c), dry under it (rain_out off); NPCs fetch one when the rain starts (ai.cshelter: idle, a hand free, UMBRELLA_FETCH 25 m) and stay out; ai_putAway takes it home once it's dry. - Landing: the very sporty (
sporty: fitness 0.6..0.95, sober, fresh) roll off up to LAND_BREAK + LAND_SPORT (10.8 m/s, about 6 m), the risk mostly gone. Checked: fitness 0.95 from 3, 4.5, 5.5 m: no crash in 24; 0.6: crashes from 3 m on.
Round 2.29:
- Smoke soft and see-through (
Shapes_puff: a ball;Renderer_drawPuff: blended, no depth, no outline;scene.fragpuff: thickest facing you, fading at the rim, SMOKE_ALPHA 0.5, thinning out at the end). Checked: the fire's smoke against the sky and the house. - More sounds: voices (
Ai_say-> NOISE_VOICE: a murmur of saw syllables, deep / man / woman, by the length of the line; nothing for "..."), Alice (Woof -> NOISE_BARK, crunch), a sip or a bite (world.c: the momentdrink_sippedturns on -> NOISE_GULP), the toilet (NOISE_FLUSH). Checked: compiles, the game's sound stays clean (no NaN, no clipping); not listened to.
Round 2.30:
- Talking gestures (
Body_talkGesture: GESTURE_WAVE, SHRUG, POINT; picked inAi_sayby words in the line - Hello / Night / Bye, No / can't / Sorry, over there / Look - 80 % of the time; they go on walking up to 2.5 m/s). Checked: Toni waving and shrugging. - Sounds: a bush pushed into (NOISE_RUSTLE,
forestry.c), a gate opening or shutting (NOISE_CREAK) and the boot (NOISE_SLAM) when that changes (world.cshowProps,heard_open), getting out of the car (NOISE_SLAM,heard_ride).
Round 2.31:
- The roll way up (
climb.croll_way: a belly climb by somebody over ROLL_DRUNK 0.55 drunk): once the belly is over the edge (ROLL_ONTO 0.42 of the climb) the climb ends on the top (the hips 0.12 m in from the edge) and the body takes over (Body_rollOnto: down flat along the edge, face down,roll_overturns the body about its length once - ROLL_OVER_TIME 1.1 s, moving inwards like a log, arms in along the body - then on the back where the roll ended (shift), and up). Checked on a 1.3 m wall: push up, belly over, flat on it, rolled over, up.
Round 2.32:
- Saves keep holding on together (
save.c: agrabline - what, lifted, one end up, where both hands hold it on it - and ahelpline - whose helper; read back after everybody is in place: helping first, then the grip (Hands_grabObject, the grip points as saved, lifted as it was); you hold on again without F). Checked: you and Volkram with a 75 kg log lifted, saved and loaded: both holding it, still lifted 2 s on.
Round 2.33 (running and walking less stiff):
- Running (
body.c,body_pose.c): a foot stays down STANCE_RUN 0.11 s at a full run (Foot.planted; it was gone again after a frame or two, both feet nearly always in the air); the wave follows the ground contact - down while a foot is on the ground, up past standing height in the flight (BOB_FLIGHT; it averaged two opposite feet to nothing: the hips moved 1 cm, now 7 cm), BOB_RUN deeper; the swing foot follows a curve with the body (cubic: from where it left, RUN_TUCK up behind the seat, RUN_DRIVE through in front, down where it lands;Foot.swing_runset as it leaves and easing off with SWING_RUN_EASE - slowing down mid-swing no jump); more lean (0.2 rad at a run); the elbows about square pumping. Walking: steps longer (stepLength 0.3 + 0.27 x speed, MAX_LEAD 0.48), arms swing more (ARM_SWING 1.25), the elbow bends more coming forward. Checked: side views of a sprint, a jog and a walk; the audit (sprint pops 247 -> 125, worst 15.7 -> 18.3 cm; the rest about as before - walking and turning fast the hands move that fast in the world anyway).
Round 2.34 (no bow legs):
- Knees point mostly straight ahead (
body_pose.cknee pole: KNEE_FOLLOWS_FOOT 0.45 of the foot's turn, KNEE_OUT -0.12 - toes turned out made the knees bow out), feet a bit closer (FOOT_X 0.085, was 0.10; running 0.07, nearly on one line). Measured: knees from 0.5-1.7 cm outside the hip-ankle line to 1-2 cm inside walking, about on it sprinting. Checked: front views of a walk and a sprint.
Round 2.35 (Alice pants, goes round things):
- Panting (
dog.cpant):dog.pant0..1 rises running (PANT_RISE 0.1/s flat out, from 1.8 m/s), eases resting (PANT_EASE 0.035/s, slower in the sun); the midday sun alone (10:30-19, no rain) keeps it at PANT_SUN 0.35. Over 0.15 she breathes 2-4.5 times a second (pant_t): NOISE_PANT each breath (a breath out, a quicker one in,sound.c), the chest heaving with it (Dog_draw); not with something in her mouth. - Her real speed (
dog.was/speed): legs and panting go by how fast she really moves (it was the speed she wanted: running into the car she trotted on the spot for ever, never arriving when called). Held up for DETOUR_AFTER 1 s, she goes off to one side for DETOUR_TIME 1.2 s (detour), then on. Checked: called from 25 m behind the car - round it, arrived, panting 1.0 easing to 0.4 in 30 s, about 4 breaths a second.
Round 2.36 (rain together, view on the slope):
- The view shook walking down a steep slope (the bank behind your garages): people stood on the highest ground under their footprint, but walking down they were kept on the ground under their middle - one frame up onto the uphill corner, the next down again (8-25 cm). Both now the same ground (
physics.cfootprintGround). Checked: tents to the main building's door walking (1 jump of 3 cm left, was 50+ of up to 30 cm), running and from behind. - The jacket tied round the waist (
figure.frag): the back hangs in two halves, each pushed out behind by its thigh going back; the sleeve ends in front pushed out by a thigh coming up (MAX_PARTS 42). No leg through it any more (side and back views, walking and running). - Umbrellas (
hands.c): open, the hand in front of its shoulder (UMBRELLA_HAND_OUT 0.16, UP 1.16, AHEAD 0.17), the shaft leaning in to UMBRELLA_TOP 2.05 m over the head's middle (it went straight up in front of the face); folded, by the middle, tip ahead and down (it was held sideways like a bat). - Sharing one (
ai.cumbrellaToShare / walkUnder): out in the rain without one, somebody within SHARE_SEE 12 m holding one up with nobody under it: asked, then along at their side (SHARE_GAP 0.53 m, the umbrella side), keeping pace (close: stepping straight onto the spot, no circling), for up to SHARE_MAX 4 min; the holder'sumbrella_guestleans the canopy over both;world.cunderUmbrella counts a head within 0.9 x its radius under anybody's open umbrella as dry. Checked: under yours, standing and walking: 0.6 m beside you, dry. - Sitting out heavy rain (
ai.crainRoom,Site_rainRoom): the guests go to the middle of your garages' kitchen; from RAIN_SIT 0.45 they sit down on a free chair or the new log bench by its back wall (else the floor) and stay till the rain is nearly over (half of SHELTER_RAIN). Checked: two on the chairs at the table for 100 s of hard rain, up again when it stopped.
Round 2.37 (umbrellas blown inside out, hats):
- Inside out (
world.cwindUmbrella): an open umbrella held in a gust (FLIP_GUST 0.4) over FLIP_WIND 10 m/s: FLIP_RATE 0.3/s for every 3 m/s over it x gust x carelessness (drunk, careless more) ->umbrella_flipFLIP_TIME 2.2 s inside out (Shapes_umbrellaUMBRELLA_INSIDE_OUT: the rim up above the tip, ragged; no cover meanwhile), a rustle. The FLIP_RUIN 3rd time, or over RUIN_WIND 16 m/s:umbrella_ruined(stays inside out, never opens; saved; NPCs drop it, don't fetch it, shelter). Checked: at wind level 0.7 in the rain - flips at 28 and 47 s, broken at 126 s; dry under it otherwise. - Hats (
FigureLook.hatHAT_CAP / HAT_BEANIE,hat_color;figure.fraghatDistance: a cap's crown and a brim tipped down over the brow, a beanie down to the ears with a knot and ribs; under a hood: none): Toni a red cap, Kurti an old green one, Jonas a blue beanie (Figure_wardrobeby index % 7: 3, 4, 6). Saved with the person. - Blown off (
world.cwindHat): in a gust (HAT_GUST 0.4) over HAT_WIND 9 m/s, HAT_RATE 0.3/s for every 3 m/s over it x gust (a beanie a tenth), divided by 1 + 3 xhats_lost(pulled down tighter each time): an OBJ_HAT (Shapes_hat, its colour,owner) flies off with the wind and bowls along like paper (windBlows); NPCs go after it (ai.blown, as for paper); picked up by its owner it goes back on (hatBackOn). Checked: Toni at wind level 0.8 - off, chased 7-14 m, back on in 3-14 s; less often each time.
Round 2.38 (a shelter in the yard):
manor.cShelter_build: a roof on six posts (5 x 3.6 m, eaves 2.25 m, a gable 1 m up; its roof slabs solid, soWeather_coveredholds under it), paving slabs, a log bench along each long side (3.4 m) and a table between them; in the yard at court(SHELTER_A 24.5, SHELTER_B 3.5), about 11 m from the fire towards the barn, along the garages.- Rain places (
Site_rainPlaces: the garages' kitchen, the shelter): sheltering guests pick the nearest with a free seat (ai.rain_place, chosen once per shower); a bench is walked up to from the front where along it they are (round its end they got stuck outside a post and never sat). Checked: hard rain at midday - all three guests on one shelter bench within 20-60 s, dry, up when it stopped.
Round 2.39 (the story starts: the crew):
- The plan for the game (story, chapters, floors, crew, how it plays, the roadmap): "The story (plan)" at the top.
world/cast.c: one entry per person (CastMember) instead of a dozen parallel tables in scene.c;Cast_createmakes the person (scene.c for the first seven, and later arrivals);Object.cast_id(-1 none),commitment,leads,helps(saved). Projects (Project): organisation, web, artists, decoration, light, the four floors, mowing, the snail rescue, wood art.game/game_story.c:game.story_hours(game hours since the start on the ground, saved); who's due turns up at the gravel road (the 5th point of the way in by car),ai.greetwithgreet_leftHELLO_TIME 90 s near the fire (greetHosts: then on with the day; the first friends keep theirs till the start says so). Arrived crew is made again on loading (castin the save).- F2 crew overview (
Game_crewLines, three pages;main.cdrawCrew, labels 120-139). Checked: all seven turned up at 2 / 5 / 20 / 26 h, at the fire, then about; saved and loaded with all 14 there, no doubles.
Round 2.40 (projects and leads: the floors get built):
world/stage.c(OBJ_STAGE, one per floor, made inSite_finishatFLOORS: Hofbuehne court(36, 5), Obstwiese (42, 38), Kartoffelacker (30, -95), hidden floor (-20, -2); frontsyaw_front):build_stageBUILD_MARKED .. BUILD_DONE,build_workperson-hours into the step (NEED 1.5 / 4 / 4 / 3 / 2.5); the frame needs STAGE_LOGS 3 logs within STAGE_LOG_REACH 6 m (used up when it's done;Stage_work-2 meanwhile).Shapes_stage(stakes and string; posts and beams; the deck in boards; back wall and roof; the floor's colour painted and banners - each growing in 8 steps); the deck (STAGE_DECK 0.5 m) solid from the roof step on. Saved (build_stage,build_work).people/ai_project.c:ai_projectWork(idle or wandering): the lead and the helpers of a floor go to its stage in working hours, START_CHANCE 0.03/s (helpers a quarter without the lead near), goes of SHIFT 2 game h, breaks BREAK_TIME 40 min; not tired, hungry, thirsty, drunk, sheltering; at a spot along its front, hands hammering (Stage_handsAt); rate (0.6 + 0.8 x handy) x tempo x (lead 1.1, lead near 1.0, else 0.6). Held up for logs: one voice says what's missing every 90 s; after 25 game min they leave it.ai_commitment(every frame, cast members): see "Playing it"; QUIT_LEAD 0.3, QUIT_HELP 0.15. Late arrivals say hello standing by the fire (greetHosts: they walked through the fireplace to a full bench, scraping their shins).- Talk: NODE_FESTIVAL (HELLO answer 4; "The firewood goes somewhere else now" is only in the worker's answers now): their line (lead / help, step and %, mood by commitment), praise (PRAISE_LIFT 0.06, once per game hour), lead the open floor (not those living here, TAKE_ON 0.45 and willing 0.4), take over / help with yours. You build: CLICK_STAGE (
stageAt: within 1.3 m of its edge, a hand free, nothing to pick up in front). - F2 projects page: each floor's step and % ("needs logs"); F1: commitment. Checked (60x time, fed): Kilian cleared the Obstwiese in 1.5 game h, the frame held up till three logs lay there, then on; the Hofbuehne's helpers cleared it without a lead and gave up on the frame ("No logs, no frame"); talks: praise +0.06, Julia took the Hofbuehne, you took Pascal's light, Pascal took the Kartoffelacker.
- The "## Open tasks" heading lost in 2.39 is back.
Round 2.41 (materials and money; the start shows the way; the pavilions; the GPU rests):
- The cash box:
World.cash(WORLD_CASH 1200 EUR at the start, savedcash); F2's projects page shows it. - OBJ_MATERIAL (
MaterialKind): a bundle of 8 boards (0.6 m, cut to length: longer ones get stuck carried past things, see Open tasks; 17 kg, both hands), a box of nails, a box of screws (1 kg), a bucket of paint (6 kg);Shapes_material. Stages (stage.cNEED_LOGS / NEED_MAT): frame 3 logs; deck 2 bundles + nails; roof 2 bundles + screws; decoration 1 paint - lying within STAGE_LOG_REACH 6 m, used up when the step is done (Stage_missingsays what's missing,Stage_missingMaterialthe bought kind). - Shopping (
talk.cNODE_SHOP, the festival answer 4 to whoever has "Car keys"; refused: car away or not empty, drunk, done in): SHOP_PRICE 25 / 20 / 35 / 90, SHOP_MAX 8 / 4 / 4 / 2, over the cash: refused.game/game_shop.c(Errand, savederrand): ERRAND_TO_CAR (the driver walks to the driver's door:ai.errandinai_project.cai_errand) -> in, the money out of the box -> LEAVING (backs out BACK_OUT 10 m, turns round in TURN_TIME 3 s, off along the way in) -> AWAY (the car HIDDEN_DEPTH under the ground, SHOP_AWAY 1 game h) -> BACK (in again, parks) -> boot open, the driver and up to HELPERS 2 idle people near unload.world.shoppingwhile it's on. Loaded mid-run: on the way over again, gone, away, or parked at once. - Cargo: CARGO_BOARDS / NAILS / SCREWS / PAINT (OBJ_MATERIAL), CARGO_FOOD / SAUSAGES (OBJ_SUPPLY made with a negative weight: carried, not static;
stockFOOD_PORTIONS 40 / SAUSAGE_PORTIONS 24, -1 empty, 0 the scene's never run out; saved). CAR_LOAD_MAX 32.Car_dropSpot: material in rows atSite_materialSpot(in front of the car room's doorway), food boxes beside the drinks in the kitchen. ai.c unloadCar takes them all (isCargo); eating from a food crate uses a portion (you and them). - Fetching (
ai_project.cfetchMaterial): held up for material that lies elsewhere (not at a stage, nobody bringing it, within FETCH_SPAN 150 m), a helper (the lead only when alone) carries it over and puts it down out in front (Stage_workSpot+ 1.3 m: a side spot was behind the orchard's hedge); the others wait meanwhile; given up after FETCH_GIVE_UP 240 s. Held up with nothing to fetch: "We need ... - somebody go shopping!". - The start shows the way:
Game_questMarker(game_arrival.c): a golden diamond (Shapes_questMarker, glowing, bobbing, turning) over Kurti (hello, chat), the car's boot (your things in it), Kurti (something in your hands or yours all out; within GUIDE_NEAR 4 m he takes you:ai.errandwitherrand_with, waiting when you're over GUIDE_WAIT 6 m behind), your tent's spot till it's up.Arrival.guide0 / 1 / 2 (savedguide); Kurti and his sons stay out till it's shown. New lines: Jonas ("Dad will show you where the tents go"), Kurti at the end of the chat. - The yard: the roof on posts is gone; two party pavilions side by side (
manor.cShelter_build: 3 x 3 m, eaves 2.3 m, a canvas pyramid to 3.1 m,Shapes_pavilion; an unseen cover at 2.5 m keeps the rain off) with a beer table set each (table 2.2 x 0.5 m, two benches). - The Kartoffelacker moved to court(107.5, 45.9): behind the gravel road to the chicken farm, past the orchard and the barn, facing the road; FOREST_STRIP (about 10 m through) right of it.
- The GPU: vsync (adaptive if offered) and a frame cap of FRAME_CAP 60 (
platform.cPlatform_swap: never quicker than 1/60 s a frame) - it ran flat out before. - Checked: a run with 4 bundles, nails and screws, paint, food (245 EUR): walked over in 1 s, off, away, back, all 11 things unloaded in 4 min (store 7, kitchen 2 food boxes); Kilian fetched 2 bundles and nails to the Obstwiese and the deck got going; saved and loaded while away (back as it should); the start: marker on Kurti, the car, Kurti, the tent spot - Kurti walked you up there.
Round 2.42 (the pavilions in front of the house; sitting at a beer table; Kurti shows you all the way up):
- The pavilions: turned 90 degrees (in a row along the front) and moved in front of the main building's right half, left of its porch: court(SHELTER_A 10.2, SHELTER_B 3.8), 1.7 m off its wall.
- Beer benches (
Object.table: set inShelter_build):Object_sitsits at the table, facing it - the others always, you when not turned away from the bench (Object_facing. to the bench > -0.2); from the far side, stepped over (sit_backingfrom the start: straight onto the spot, no turning round in front of it). NPCs walk up to it from behind (rainRoom). Its description says so. - Bench places (
freeAlong): a bench's places are evenly along it (n = 2 half / SEAT_SPACE + 1, three on the fire's and the beer benches), the free one nearest where they come to it; sat anywhere, two left no room for a third. - Getting up:
ai_errand,ai_projectWorkand walking under somebody's umbrella "stood" a seated person without getting them up - they slid along the ground sitting (Kurti, showing the way). Now up first. - Kurti shows you all where to camp: with your things he calls everybody along (
guide:Arrival.guide_line,guide_t) toSite_campPath(court(36, -11): the end of your garages by the barn, the foot of the path up), the three friends round him (ai.errand, no waiting); there (GATHER_NEAR 5.5 m, or after GATHER_WAIT 45 s) he faces up the path, points (TALK_POINT) and says three lines (GUIDE_LINE 3.8 s apart); then everybody is back to the day.ai_errandno longer drops what's carried (the shopping driver puts it down ingame_shopStart). - The chat with Kurti waits till the three friends sit (or stand with the others) - the slowest (Volkram, the driver) was still walking up when it started and was left standing.
- Checked: Jana and Volkram stepped over and sat facing the table, one each side; the start: all four at the foot of the path in 25 s, his three lines, then the tent spot marked; at the fire everybody sat before the chat (You, Toni, Kurti / Volkram, Jana, Martin / Jonas); hard rain: Volkram and Jana at the beer tables.
Round 2.43 (the side jobs: the scythe, the snails, Kerry's art):
world/field.c: the Kartoffelacker's grass as cells (FIELD_NX 20 x FIELD_NZ 26 of 1 m from FIELD_X0/Z0;World.mown0 .. FIELD_MOWN 3 swings, FIELD_OFF round the stage; saved in thefieldline as hex, withinspected, the rescued and dead counts and the warnings).Field_mow(a swing: cells within the radius a step on; wild snails there dead),Field_done,Field_nextUnmown(nearest, roughly row by row).meadow.c: grass in the field knee high (0.38-0.68 m), short once mown; the field's squares built again whenmow_revchanged (every MOW_REBUILD 20 frames at most).- OBJ_SCYTHE (
Shapes_scythe; in the tool room, one hand, a home: put away): carried over the shoulder, mowing: the blade swept along the ground in front (Object.mowing,hands.c). You: left click with it in the field (CLICK_MOW, a swing every MOW_SWING_YOU 1.3 s, 0.9 m ahead). NPCs (people/ai_jobs.cmow): the scythe fetched, cell by cell, a swing every MOW_SWING 1.5 s / tempo; a careful lead (ai_stackCare >= MOW_CAREFUL 0.45, Toni 0.52) waits while snails are in the field. - OBJ_SNAIL (
Shapes_snail; FIELD_SNAILS 30 in the field, ORCHARD_SNAILS 10 round the Obstwiese, fromField_prepareinSite_finish): picked up intoObject.snails(SNAIL_BUCKET 8, saved), let go atSite_snailRefuge(you: within REFUGE_YOU 3 m; they come back there as variant 1). NPCs (snails): snail to snail (crouched, SNAIL_BEND 1.2 s each), full or none within SNAIL_LOOK 30 m: to the refuge. The regulatory office (game_story.cinspection): FIELD_INSPECTION 44 h, warnings at 24 h and 3 h before; fine FINE_LEFT 40 / FINE_DEAD 80 EUR from the cash box, commitment down (the snail lead most) - or none and the snail crew lifted. Doro arrives warning about them. - Kerry (
ai_jobs.ccarve): a log (0.8 m+) within ART_REACH 5 m ofSite_artSpot(court(14, 12)) and the chainsaw: he carves it (CARVE_NEED 2.5 person-hours in itsbuild_work;Object.carving: the saw's sound) into OBJ_SCULPTURE (Shapes_sculpture: owl, bear, mushroom man by count). - Projects (
ai_project.c):theirProjecttakes the side jobs too (workable); the side job's frame isai_job(SIDE_HELD: the remark, held up; SIDE_STEP: a line, a little lift; SIDE_FINISHED: everybody on it lifted); a finished snail job with snails still in the bucket: let go first. Tools for the job stay in hand (ai_putAwaynot while on it). - F2 projects page: mowing %, snails safe / out / dead / office in, Kerry's figures and whether a log is there.
- Checked (fed, 10:30): Toni waited for the snails, Doro and Stella got all 39 to the refuge in about 5 min, then Toni mowed; with a careless mower 6 died; Kerry fetched the chainsaw and set to carving once a log lay there (the three figures looked at made directly); the office: no fine with all out; saved and loaded mid-way (mown cells, counts and a bucket of 5 kept).
Round 2.44 (Berlin: the meetings and the weekends):
manor.cBerlin_build (fromSite_finish): two closed rooms off the map at BERLIN_X 700 (the site, 530 m+ away, is past the camera's far plane): the flat in Grossbeerenstrasse (8 x 6 m, the kitchen table with six chairs, counter, stove, shelf, a bench) and the Herberge (BERLIN_BAR 24 m along: 12 x 8 m, the bar - FURN_BAR, a counter with taps and glasses - shelves, the long table 4.4 m with two benches linked to it, two small tables). Locked doors. World code treats x > WORLD_BERLIN_FROM 400 as indoors in Berlin (no wind on hats and things).game/game_meeting.c: Meeting (kind, Herberge number, agenda step, line timer, question and its answers, who spoke last, fade). New game:game_meetingStart(Grossbeerenstrasse) instead of the drive in;gathersits everybody for it (chairs, or bench places from the middle out;ai.meeting: Ai_update does nothing else; fresh from home: fed, rested, dry, sober), says the place and day (CARD_TIME 6 s), 18:30. Agendas as steps (kreuzberg,herbergeFirst,herbergeLater); questions Q_JOIN, Q_NAME (Game_festivalName), Q_FLOOR (the first Herberge: eager one first;leadsOther: whoever leads another floor or a side job isn't offered; picked +0.08, passed-over eager -0.06; later: the floors nobody leads, one after the other, the three most into it), Q_CASH (1200 / 1900 / 700), Q_FOCUS (FOCUS_FLOORS / SIDE: START_CHANCE x1.6 for those, PARTY: x0.5 and +0.08 for all;world.focus), Q_TOP_UP (cash under 600: +400, -0.02). Answers throughGame_choices(1-5); the talk keys wait meanwhile. Fades (FADE_TIME 1.4 s,renderer->dark): AFTER_KREUZBERG / HERBERGE / FIRST_WEEKEND (the car arrival at 13:00, weekend 1) / NEXT_WEEKEND (everybody on a circle round the fire, you in the yard, 17:00). Weekend end: Sunday 18:00 (WEEKEND_END 66 h from the weekend's Friday midnight, warned at 65; not while driving in or shopping). Saved:weekend(number, start, warned, name, focus); not during a meeting (Save_blocked).game_story.c: the story clock only on the ground; crew waiting in Berlin since the Herberge come over when due (moved, not made again); F2 says "in Berlin". The regulatory office's fine at most FINE_MOST 600 EUR.- Dev:
game_skipArrivalskips the meetings first (game_meetingSkipStart: the first answers). - Sitting down onto a seat (over a bench) scrapes no shins.
- Checked: the harness through Grossbeerenstrasse (name Entropie), the first Herberge (Kilian, Julia, Jana, Rouven lead the four floors; Toni keeps the mowing), the drive in, Sunday 18:00 to the Herberge (the warning first), a party weekend picked, Friday 17:00 back with nobody left in Berlin; the real game started into the first meeting and answered with 1.
Round 2.45 (the why questions):
world/why.c(WhyInfo: the question, what made you wonder, who knows, their answer, the whole reason, the option, who raises it at the Herberge and how, its cost): WHY_URINELLA (Jana, Julia, Stella, Doro; 60 EUR), WHY_AWARENESS (Stella, Doro, Julia, Volkram), WHY_SHIRT (Jana, Julia, Kilian, Stella).World.why[]WHY_UNKNOWN / RAISED / UNDERSTOOD / YES / NO,why_heard(came up at the Herberge); saved (whyline).game/game_why.c: every WHY_CHECK 1 s on the ground, within SEE_NEAR 25 m: a woman with Urinellas peeing (AI_PEE, busy), somebody down drunk (passed out or drunk over 0.7), a man shirtless (TOP_BARE) - it comes up (a message, WHY_SHOWN 7 s). The notebook (Game_notesLines, J:input.notes, drawn like the crew overview,main.cdrawNotes; not with F2): leads, cash, the weekend's focus, the questions (wrapped at 100 characters).talk.c: about the festival, answer 5 is the open why question (else "Bye"): a knower answers (UNDERSTOOD, +0.03), else "No idea. Ask ...".game_meeting.c(later Herberges): an unknown question raised by its raiser (one a meeting), then each understood one asked (Q_WHY: the option or "Not this year"; knowers +0.05 / -0.04; the cost from the cash box).asked_masknow cleared for every meeting (floors asked last time weren't asked again).- Checked: shirtless Toni next to you raised it; Jana explained it; the Herberge decided yes; Stella raised the Urinellas there, Doro explained them, the next Herberge decided yes (60 EUR); Julia raised the awareness team; the notebook through all of it.
Round 2.46 (the festival):
game/game_festival.c(Game.festival: stage, came, caught, inside, counted, played, review, result, helped; saved in thefestivalline): weekend FESTIVAL_WEEKEND 6 is the festival. Hours from the weekend's Friday midnight: H_GATES 18, two waves (FIRST_WAVE 24 till 23, the rest 34-37), H_WARN 38, H_CLOUDS 38.66 (WEATHER_SHOWER), H_STORM 39 (WEATHER_RAIN, WIND_STORM), H_WORST 39.25 (counted), H_CLEAR 40.5, H_LEAVE 58, H_REVIEW 64 (six lines, REVIEW_GAP 4.5 s). The weather is forced dry otherwise (AUTO again once it's over). Every frame it fillsWorld.fest(Fest: stage, floors playing, how good, the dance floor DANCE_OUT 6 m in front of each stage alongyaw_front, tempos, clock, the storm doors, the why answers, helped).- Floors: good 0 / 0.45 / 0.65 / 0.85 / 1 by build stage (deck at least), PLAYS times per floor.
core/audio.c: BED_FLOOR + 0..3, a drum machine each (rock 118, psytrance 144, hand drums 100, techno 130 BPM; param muffles it with distance);sound.csets them from the dance floors. world/guests.c: Guest_create(k) - name, look, temperament from the number alone (a save keepsguest, the loader makes them anew); camp spots (3 rows of 6 at x 9-31, z 86-94), the gate (63, 89.5). Object: guest, fun, camp_spot, gone_home, storm_told, inside_door (all saved). Guest tents coloured by pair (tent.c).people/ai_fest.c(ai_festival, before the rain shelter inAi_update; Ai.fest_floor / fest_spot / fest_time / fest_who / fest_walk): the storm (told: the crew warn on the way - TELL_LOOK 25 m, the awareness team TELL_LOOK_TEAM 140 m and tents - then the nearest door:indoorsatinside_door, kept while warned or stormy:world.c), the awareness team (HELP_LOOK 45 m, drunk down to 0.45; knowers awake till four), guests camping (a big tent bag at the spot, unpacked with the mate as owner2;pitchTentsputs it up), leaving (tent packed, out at the gate: gone_home, indoors for good; lost on the way 400 s: gone anyway), dancing (FUN_DANCING 0.0009 a s x good, DANCE_MIN 150 + up to 300 s, breaks DANCE_BREAK 60-120 s), party drinking in the evening. Guests' hunger and thirst stay low.- Body:
dance_goal,dance_beat,dance_style->dance(eased): knees down on the beat (deeper for stompers), hips side to side, shoulders against them, arms by style (body_pose.c). game_meeting.c: the Herberges before it say so (no focus question the last time), nextWeekend: Friday at ten for the festival (FESTIVAL_ARRIVE), no weekend end on it.game_talk.c: the storm shout first in the shout menu ("Hey, everybody" calls the crew only).ai_project.c: no building once the gates are open.talk.c: guests say how they like it. Guests don't come to you with jobs. Dev menu row DEV_FESTIVAL. Notebook: the festival part (game_festivalNotes).- Checked (the harness, time sped up): the jump through the last Herberge to Friday 10:00; 36 guests in, camping, tents up, dancing in front of the Hofbuehne; 47 of 50 warned, 36 inside at the worst, 14 out; the all-clear; all 36 gone by Sunday three; the review (62%); the awareness team helping one; a save from Friday night loaded (18 guests back). The real game: through the dev jump to the festival weekend and the gates.
Round 2.47 (the big old tree, injuries):
world/site.c: the big tree (OBJ_TREE variant 2,keep: BIG_TRUNK 0.5 m radius, 5 m trunk, 26 layers, 10 m crown; forest trees and bushes within 7 m cleared) at (-45, 73.5); the phone line: three wooden poles (8.5 m, the mast 11 m with two cross arms) along the gravel loop's north side, each a structure plus an invisible OBJ_WALL; the wires one structure (Shapes_wires, three wires a span, sagging; torn: hanging to the ground).Site_bigTreeSafe/Lean,Site_phoneLine,Site_phoneWiresDown.world/bigtree.c(where: the rope's tie BigTree_attach, its end BT_ROPE_OUT 28 m out, BT_PULLERS 4 places BT_PULL_GAP 1.3 m apart, the notch / back cut / escape spots);World.bigtree(BigTree: step BT_STANDING .. BT_DOWN, work, rope_h, rope_wait, pullers, off, lines_down; saved in thebigtreeline, mid-cut loaded back to the pulling).cast.c: Enrico (id 14,far_away: no meetings -game_meeting.cgather skips him; arrives 21 h), PROJECT_BIG_TREE ("big old tree").ai_jobs.cbigTree: the look and the throw line (OBJ_ROPE), waiting for the rope (ROPE_WAIT 1.5 game h, then 6-7.5 m himself), the notch (BT_NOTCH_WORK 0.8 person-hours with the chainsaw), the pulling (3 at least; nobody within 6 m or within FALL_ZONE 24 m ahead; CLEAR_WAIT 45 s), the back cut (BT_CUT_TIME 22 s, "PULL!" at 16).ai_onRope(Object.puller): out to the place, both hands on the rope (Hands.rope: hands along it, leaning back when pulling).game/game_bigtree.c: the throw line caught when it touches the crown's box in the air (rope_h = its height, 4.5 - 16 m); left click at the foot: pulled down again; at the pulling: left click near the end - you on the rope (Game.on_rope); pullers called (the nearest crew within 160 m, CALL_NEAR); the fall: margin = pull (0.35 x (0.7 + 0.6 fitness) each) x leverage (rope_h / 10, 0.3 - 1.15) + notch (0.45 x Enrico's tree skill) - LEAN 1.15 - GUST_LEAN 0.8 x gust; >= 0.3: within a few degrees; 0 - 0.3: up to 30; below: round towards the lean (up to 180).Forestry_fellthat way (the cut 0.6 m up). Down: its line from the stump crossing a span, or passing within 1.2 m of a pole: the lines down (LINE_BILL 1500 EUR, Kurti -0.25, the crew -0.05); else the crew lifted. The rope seen as a structure (Shapes_rope), made again when it changes.world/injury.c: Injury_break (down and staying down, a cry), Injury_roll, Injury_setCast (arm: strength x0.55, tempo x0.75; leg: top speed and pace slower, jump x0.35;world.cwork rate x0.6 / x0.85).forestry.chit: a falling tree breaks something BREAK_TREE 0.35 (the big one 0.9).world.clandFromHigh: a crash landing breaks something smoothstep(9, 13 m/s) x 0.8. Object: injured, injury_side, hospital_until, cast_until, look.cast (all saved).game/game_injury.c: the ambulance (Game.ambulance: called, AMB_COMES 1200 game s, in along the way at 9 m/s to 12 m short of the car's stop, loading 10 s, out; OBJ_CAR variant 1,Shapes_ambulance; the two-tone horn insound.c); the hospital: in Berlin, back after AWAY_HOURS 36 (or with the next weekend) with the cast; CAST_WEEKENDS 2. You: lying 4 s, then six hours on, back at the yard with the cast. A guest: gone home. Saving blocked meanwhile.- The figure shader:
castLimb(white plaster over the forearm or the shin). Rain isn't drawn or heard in Berlin any more. - Dev menu: "The big tree" (Right: Enrico here and at it, the rope up, the notch done). F2 projects page and the notebook: how far it is.
- Checked (the harness): Enrico in, the throw line put down, your throw caught at 7.5 m, the notch, three called to the rope and you on it, the back cut, down 1 degree off; from a save before the pulling with a 4.5 m rope and you off the rope: 21 and 75 degrees off, and once (no pullers) right through the phone line (1500 EUR); Enrico hit by it once (a broken leg - the escape now goes away from the turn); the ambulance in and out, Toni at the hospital and back with a cast on the arm; the casts drawn.
Round 2.48 (no falling through, landings, the old tree, any tree):
physics.c: nobody goes down through a floor or a roof any more -neverThroughFloor(the feet went into a fixed thing's top this step: back up onto it) and, for people, a push down out of something whose top is within SINK_MOST 0.45 m above their feet is a step up onto it instead. A safety net inworld.c: a person below VOID_BELOW (-60 m) is put back where they last stood (last_ground, saved). Checked: 480 walks across the main building's roofs (old: 1 through, now 0), 464 walks and 280 sit-down-get-up-walk-offs in the Berlin rooms (none through; I couldn't make the Herberge one happen).- Landings (
Body_land(..., forward, ..., &bad)): into the knees first always; a roll needs going along (ROLL_FORWARD 1.2 m/s), the sure, from LAND_DEEP_ - 0.5 up to LAND_ROLL_MOST 8 m/s (3.3 m) + LAND_SPORT 1 x sporty (4.1 m); the knees alone up to LAND_KNEES 8.2 (the sure, 3.4 m); else a crash.bad(0..1, LAND_BREAK 10.5 m/s the worst):world.clandFromHigh - hurt that likely; badly enough (bad + some luck over 0.8) a broken leg (a crash: now and then an arm), else a twisted ankle (Injury_sprain: SPRAIN_TIME 8 game h, speed x0.6, jump x0.5;Object.sprain, saved). Checked, 12 drops each: 2 m nothing; 3 m one sprain; 4 m all crash, 3-6 sprains; 5 m 4-5 broken; 7 m 9-11 broken. - The big tree:
TreeSize.old(variant 2): every seventh layer gone, some dead brown and thinner, the top three missing, a bare snag with splinters, three dead branches. A storm (wind over STORM_WIND 11 m/s) brings it down the way it leans (STORM_FALLS 0.3 a game hour) while nobody's cutting it. Felled by you (no rope): away from you plus BIG_LEAN 1.4 x the lean. However it came down, the lines and the review follow (its angle off from the fall itself). - Any tree:
tools.clets you (only you) fell kept trees;forestry.ccounts a fine (World.tree_fine: FINE_APPLE 300 for an apple tree, FINE_PROTECTED 1000);game_bigtree.ctakes it from the cash box and says so (Kurti -0.3 for an apple tree). The felling hint warns first.
Round 2.49 (holding on, and people):
hands.c: HAND_READY (out along the view, READY_OUT 0.55 m: waiting) and HAND_HOLD (hold,hold_local,hold_joint,hold_part).Hands_catchtakes the nearest thing within CATCH_NEAR 0.22 m of the palm; on a person the nearest joint (their hands a bit preferred).game_touch.c: E / Q reach out (unless something's right in front: taken as ever), a fixed thing holds you within ARM_REACH 0.72 m (HOLD_BREAK 0.45 m past: the grip's gone; hand in hand 1 m more).people/touch.c: Touch_part (joint + where the hand is: front / back), Touch_react (welcome, tolerated, unwelcome, harassment; what it does to like / love / annoyed / fun), Touch_calm.Object.like,love,harass_t(saved); couples (Volkram, Jana) for touches between others.people/ai_touch.c: held (they stay and look at you), led (hand in hand: straight along beside you, the pace of yours plus catching up), stepIn (Ai.step_in: off to tell them), bother (Ai.harass: a drunk guest after somebody dancing, HARASS_REACH 0.95 m; again after HARASS_AGAIN 2.5 game h).World.aware(saved): eases to the place's mood; +0.01 a kind act seen, -0.03 harassment. Witnesses within 16 m; the nearest one who dares steps in. Festivalharassed/stepped(saved) in the review.- Checked (harness): a shoulder taken and calmed (Toni), led 7.8 m hand in hand (Jana kept 0.6 m beside), a waist unwelcome (Stella pulls away), Kilian after Doro (she says so, he gets the 2.5 h pause), save / load of like, love, aware.
Round 2.50 (the clean-up, the drive home, the end):
- Litter (
ai_fest.clitter): a guest awake drops LITTER_RATE 0.45 pieces a game hour x (1.25 - aware) x (1 + 0.6 drunk) (supporters x 0.3), none while LITTER_MOST 160 lie about (Fest.litter, counted by the game); packing up, (1 - fun) x (1.2 - aware) a piece, three tries.Site_litter(owner: the guest - what the clean-up counts). - Supporters (
Object.supporter, saved): one guest pair in four (guests.c).game_cleanup.c: Sunday 10 - 16 (H_SHIFT .. H_SHIFT_END) on ORDER_TRASH; fun under SHOW_UP 0.3: they go home instead (Object.heading_home, saved:ai_fest.cleave packs the tent and walks them out at the gate - the crew too). - Monday 10 (H_CLEAN): crew under KEEN 0.35 commitment go home (not Volkram, Jana, Toni); the rest and the supporters each sent to the nearest litter nobody's working within SEND_NEAR 30 m of (again after SEND_AGAIN). Clean (3 or a tenth left) or 16:00: Kurti's verdict (
Festival.verdict: clean; a bit (12 or 40 %); a mess: MESS_FINE 300 EUR, Kurti's commitment -0.2). Everybody else heads home; the three walk to their car doors (ai.errand), you get in within CAR_REACH 1.8 m of the back door (the quest marker shows it), then it backs out, turns and drives the way in backwards. Saves: acleanupline; never in the car. - The end (
game_meeting.cMEET_END): Grossbeerenstrasse, Monday 22:00, the four of you: the result, Kurti, the big tree, harassment / the supporters, "next year?" (Q_AGAIN), THE END.Meeting.ended: nothing more; you can walk about. camp.c: pee and splashes no longer reach people indoors, gone home or in a car (the guests gone home all stand hidden at the gate: they complained in chorus).- Dev: F1 "Hurt" (
game_injuryHeal,Injury_heal). - Checked (harness): supporters' Sunday shift 10 of 10, litter 53 -> 7; Monday 11 crew + 10 supporters, 7 -> 4 (the last ones out of reach), verdict "a bit"; you in at the door, the three already there, out along the way in; saved by the car and loaded, the end's lines through to THE END. Healing (dev): a sprain + a leg cast off (speed, jump, pace back exactly), Toni's broken arm while the ambulance was called (up again, the ambulance called off).
Open tasks
Most important first.
The story (see "The story (plan)": the roadmap)
- Projects, still to do: the side jobs as projects of their own (decoration, light, mowing, snails, wood art); leads deciding more (where, what first, who does what); NPCs fetching the logs themselves; drinks crates running out (bottles: with the shopping)
- Money, still to do: money coming in (tickets, the web things); you shopping yourself; paying for cigarettes
- The Kartoffelacker: seats to build, a chill-out platform up a tree (about 1.8 m), hammocks to hang; the way through the strip of wood cut with an axe and a spade; the guests' camping beyond it (above the chicken farm) - check the places on the ground
- Compost toilets: delivered for the festival, built together, put up at places decided later
- Side jobs, still to do: decoration and light as jobs of their own; the man from the regulatory office as a person walking the field; Kerry's figures placed where they go; helpers raking the mown grass
- Berlin, still to do: the streets and the way between (the rooms are closed boxes); ordering at the bar; more on the agenda (the "why" questions); the crew missing a weekend now and then
- Why questions, still to do: more of them (deposit on cups, free water, a quiet place, ...); what each decision does at the festival
- The end, still to do: NPCs taking the stages down; a proper drive through Brandenburg; what "next year?" leads to
- The festival, still to do: bands and DJs on the stages; the ES-Bar's food stand and the bars; compost toilets for the guests; tickets (money in); guests leaving early when it's bad; the storm blowing tents and pavilions over; the camping's place (check it: now right of the strip of wood, between the chicken halls)
- Crowds: lots of "Ouch! My shin" where many people mill about (the shin scrapes)
- The big tree, still to do: the trunk cut up for the stages' frames (it's huge); the phone line mended (now it stays down); Enrico's geo-dome at the Kartoffelacker
- Injuries, still to do: heavy things (logs, crates) falling on somebody; a limp with a leg cast; crutches; somebody sitting with the hurt till the ambulance comes
- People, still to do: NPCs taking your hand (or each other's) on their own; being held shown on them (a hand on the shoulder: now only your arm shows it); love going somewhere (off screen); drugs and their effects; the awareness team stepping in for guests too
Bugs
- Joint jumps left in the audit: jog+stop 171, sprint 297 (worst 26 cm) - running into things: a hurried catch step swings through in a few frames (step 0.07 -> 0.34, the ankle up 20 cm). Capping the swing speed helped sprint (278) but made jumps, drunk walk and the NPCs worse - tried and reverted in 1.83; ladder 45: toes on the sloping roof (a landing step's toes snap onto the slope, 16 cm; blending them in made all walking worse), toes turning onto the rungs getting on from the top (14 cm). Note (2.35): the audit is chaotic - each part starts from where the one before left you, so one small change anywhere reshuffles the later parts (a fall in the drunk walk or not, the ladder test not getting on the ladder); compare parts run on their own (the harness: LADDERONLY / JUMPSONLY / JOGONLY). Tried in 2.35: easing the running swing's ends (sprint worse), a swing not hurrying when stopping (no better on its own)
Body and moving
- Obstacle approach, still to do: thin round logs (under 0.2 m) are still stepped over; a step in between on top of something unstable (if clumsy); NPCs: pull up on their own for their own reasons (now only following a leader), jumping onto things
- Climbing rework, still to do: more ways up by surface and person (in: one hand first, the knee up, the other foot next to it; sitting on it and swinging the legs up; belly first; rolled over onto it)
- Balance: hips over the feet, look for stable footing, play with balance
- Personal movement styles, still to do: gesture variants; stepping over and climbing their own way; sporty ones more elegant (walking styles are in)
- More gestures and feelings to pick personalities from: the lists in Body / Fidgets and Gestures can grow
People
- The work place, still to do: trash jobs; walking a heavy piece round tight corners
- Ladders, still to do: a holder for a ladder standing free; NPCs taking a ladder somewhere for their own work
- Smoking, still to do: paying for a pack (the cash box is the crew's, no money of your own yet)
- Carrying long things (over 0.62 m across both arms): NPCs steer by their body only, the load catches on posts and they stand stuck (seen with 1 m board bundles at a pavilion post; the bundles are 0.6 m now)
- Clothing, still to do: more outfits for extra people (only the performance test has any: they all wear trousers)
- Tents, still to do: NPCs taking theirs down on their own (leaving)
- Weather, still to do: umbrellas while working (now only idle people fetch one)
- Sound, still to do: the house's doors (they have no doors that open yet)
Saves, still to do
- Things being done come back fresh: a person's part of a job half way (its progress on the thing is kept, and their order)
Tools for us
- Optional local AI (llama.cpp, small model) for talking and tasks; the menu stays as fallback
Scale
- Drawing many figures on a real graphics card: not measured (software GL: 300 people cost 3x the rest of the scene)
State of entropie 2.50.0 (build 6409893)