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 1.71.0: two-handed fidgets
- Standing about people now also rub their hands (nervous), clasp them behind the head (at ease, proud) or put both on the hips (proud) Includes 1.70.0 (if not committed separately): - More one-hand gestures (neck, nose, ear, hair, thumb in the belt, hand on the chest, shading the eyes); mood and personal habits pick them Includes 1.69.0 (if not committed separately): - Faster with a crowd: 750 people 22 -> 14 ms a frame (kind index, cell grid for company, no foot checks far from you) Includes 1.68.0 (if not committed separately): - The walking map is updated in place when fixed things change (0.3 ms instead of 10 ms) Includes 1.67.0 (if not committed separately): - Pour your drink on the fire (C): a small fire goes out, a big one hisses, vodka flares up Includes 1.66.0 (if not committed separately): - Careful people sort the woodpile by length (front even) and put the branches lying about onto a heap at the end of the woodpile Includes 1.65.0 (if not committed separately): - Smooth off the ladder (a step back, one foot after the other) and taking it down (the hand reaches for the rail at chest height) Includes 1.64.0 (if not committed separately): - Smooth ladder and climbs: getting on, over the edge at the top, feet from where they are; the easy 1 m climb no longer drops you off again Includes 1.63.0 (if not committed separately): - The hose melts in the fire (leaks, burns through); duct tape and the shears mend it Includes 1.62.0 (if not committed separately): - Smooth pull-ups: no hop at the end, feet and knees ease over the edge, elbows and hands taking hold blend in (audit walk: joint jumps 161 -> 58) Includes 1.61.0 (if not committed separately): - A step ladder in the tool room: stands on its own, at a wall with its back to it; climb onto the wall from its top Includes 1.60.0 (if not committed separately): - A folding ladder (two 2.5 m halves on a hinge, 5 m open) beside the telescopic one; one click at a wall unfolds it and leans it there Includes 1.59.0 (if not committed separately): - Stepping up onto blocks above knee high; set moves and jumps only for things standing on the ground in front of you Includes 1.58.0 (if not committed separately): - Walking over knee-high things is one smooth set move that always finishes; at a run: jump up onto blocks, catch climbable edges
entropie/Makefile | 2 +- entropie/README.md | 3 ++- entropie/STATE.md | 6 +++--- entropie/commit_message.txt | 13 +++++++------ entropie/src/people/body.c | 5 ++++- entropie/src/people/body_internal.h | 3 +++ entropie/src/people/body_pose.c | 13 +++++++++++++ 7 files changed, 33 insertions(+), 12 deletions(-) diff --git a/entropie/Makefile b/entropie/Makefile index 4989f8c..cf37929 100644 --- a/entropie/Makefile +++ b/entropie/Makefile @@ -1,5 +1,5 @@ APP := entropie -VERSION := 1.70.0 +VERSION := 1.71.0 PREFIX ?= /usr BINDIR ?= $(PREFIX)/bin diff --git a/entropie/README.md b/entropie/README.md index 966f44a..a19e5df 100644 --- a/entropie/README.md +++ b/entropie/README.md @@ -236,7 +236,8 @@ and satellite pictures (about 340 x 340 m). - Standing about, nobody is quite still: weight goes from leg to leg, the 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 or taps a foot + 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 - One hand now and then: on the hip, scratching the head, at the chin, in the 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 diff --git a/entropie/STATE.md b/entropie/STATE.md index 9788424..421a0b4 100644 --- a/entropie/STATE.md +++ b/entropie/STATE.md @@ -65,7 +65,7 @@ Talk topics: offer, ask, suggest, where (new woodpile spot), ask for a hand, ask ## 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 +- **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.c` picks, `body_pose.c` gesturePalm): 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) - **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 @@ -146,7 +146,7 @@ Most important first. - Climbing rework: hands first (one reaches first, shoulder ahead), a knee up, the other foot next to it; or sit on it and lift the legs; or belly first and roll; by height, surface and person - Balance: hips over the feet, look for stable footing, play with balance - Personal movement styles: gesture variants, each person a bit their own; stepping over and climbing their own way; sporty ones more elegant -- More gestures (two hands: rubbing them, hands behind the head, arms akimbo) and feelings to pick personalities from: the list in Body / Gestures can grow +- More gestures and feelings to pick personalities from: the lists in Body / Fidgets and Gestures can grow **People** - Peeing properly: open the fly; women crouch and pull down / lift the skirt or dress; Urinella (some don't like it; mishaps; tidy, careless or high disposal) @@ -159,4 +159,4 @@ Most important first. - Drawing many figures on a real graphics card: not measured (software GL: 300 people cost 3x the rest of the scene) --- -State of `entropie 1.70.0 (build b080bd1)` +State of `entropie 1.71.0 (build 898cf2e)` diff --git a/entropie/commit_message.txt b/entropie/commit_message.txt index 85b6983..131ed0d 100644 --- a/entropie/commit_message.txt +++ b/entropie/commit_message.txt @@ -1,10 +1,11 @@ -entropie 1.70.0: more gestures, everyone with their own habits +entropie 1.71.0: two-handed fidgets -- New idle gestures: rubbing the neck or the nose, at the earlobe, a hand - back through the hair, thumb in the belt, hand on the chest, shading - the eyes (with hip, head, chin and pocket: eleven) -- Mood picks them (proud, shy, nervous, tired, lively), and everyone has - two habits they make most +- Standing about people now also rub their hands (nervous), clasp them + behind the head (at ease, proud) or put both on the hips (proud) + +Includes 1.70.0 (if not committed separately): +- More one-hand gestures (neck, nose, ear, hair, thumb in the belt, hand + on the chest, shading the eyes); mood and personal habits pick them Includes 1.69.0 (if not committed separately): - Faster with a crowd: 750 people 22 -> 14 ms a frame (kind index, cell diff --git a/entropie/src/people/body.c b/entropie/src/people/body.c index c56977f..0e23003 100644 --- a/entropie/src/people/body.c +++ b/entropie/src/people/body.c @@ -5,7 +5,7 @@ #include "people/body_internal.h" -static const float FIDGET_LENGTH[FIDGET_COUNT] = { 0.0f, 1.6f, 2.4f, 2.6f, 2.0f, 3.0f, 6.0f, 2.8f }; +static const float FIDGET_LENGTH[FIDGET_COUNT] = { 0.0f, 1.6f, 2.4f, 2.6f, 2.0f, 3.0f, 6.0f, 2.8f, 2.4f, 5.0f, 5.0f }; static Vec3 clearSpot(const BodyFrame *f, Foot *foot, Vec3 spot, Vec3 other, float reach, bool sloppy, float s); static Vec3 leapPast(const BodyFrame *f, Foot *foot, Vec3 aim, Vec3 other, float reach, float s); @@ -673,6 +673,9 @@ static void updateExpression(Body *b, const BodyFrame *f, float speed) { [FIDGET_NECK] = 0.6f + 0.8f * tired, [FIDGET_CROSS_ARMS] = 0.5f + 1.5f * proud - 0.3f * shyness(b), [FIDGET_TAP_FOOT] = 0.3f + 2.0f * nerves, + [FIDGET_RUB_HANDS] = 0.2f + 1.2f * nerves, + [FIDGET_HEAD_BEHIND] = 0.2f + 0.6f * proud + 0.5f * fmaxf(b->shown.energy, 0.0f) - 0.3f * shyness(b), + [FIDGET_AKIMBO] = 0.3f + 1.4f * proud - 0.3f * shyness(b), }; float total = 0.0f; for (int k = 1; k < FIDGET_COUNT; k++) total += fmaxf(weight[k], 0.0f); diff --git a/entropie/src/people/body_internal.h b/entropie/src/people/body_internal.h index 5bfd26b..1045831 100644 --- a/entropie/src/people/body_internal.h +++ b/entropie/src/people/body_internal.h @@ -130,6 +130,9 @@ enum { FIDGET_NECK, /* head over to one side, then the other */ FIDGET_CROSS_ARMS, /* arms folded for a while */ FIDGET_TAP_FOOT, /* the toes of one foot tapping */ + FIDGET_RUB_HANDS, /* rubbing the hands together (nervous) */ + FIDGET_HEAD_BEHIND, /* hands clasped behind the head, elbows out (at ease, proud) */ + FIDGET_AKIMBO, /* both hands on the hips (proud) */ FIDGET_COUNT }; #define FIDGET_FADE 0.35f diff --git a/entropie/src/people/body_pose.c b/entropie/src/people/body_pose.c index 05a2a8f..29cb798 100644 --- a/entropie/src/people/body_pose.c +++ b/entropie/src/people/body_pose.c @@ -686,6 +686,19 @@ static void solveStanding(Body *b, Vec3 position, Vec3 facing, float s, float dt blendArm(&arm, palm, vec3(sign, -0.45f, 0.1f), folded); } + /* Two-handed: rubbing them, behind the head, on the hips */ + float rubbing = fidgetWeight(b, FIDGET_RUB_HANDS); + if (rubbing > 0.001f) { /* palm to palm in front, one sliding up as the other goes down */ + float rub = 0.018f * sinf(b->clock * 12.0f + (side ? PI_F : 0.0f)); + blendArm(&arm, vec3(sign * 0.025f + j[JOINT_PELVIS].x, 1.0f + rub, 0.25f), vec3(sign * 0.8f, -0.5f, -0.3f), rubbing); + } + float behind_head = fidgetWeight(b, FIDGET_HEAD_BEHIND); + if (behind_head > 0.001f) + blendArm(&arm, vec3_add(j[JOINT_HEAD], vec3(sign * 0.05f, 0.02f, -0.11f)), vec3(sign, 0.5f, -0.1f), behind_head); + float akimbo = fidgetWeight(b, FIDGET_AKIMBO); + if (akimbo > 0.001f) + blendArm(&arm, vec3_add(j[JOINT_PELVIS], vec3(sign * 0.19f, 0.03f, -0.01f)), vec3(sign, 0.0f, -0.6f), akimbo); + /* Actions: reaching, carrying, pushing */ float w = b->hand_weight[side]; Vec3 target = vec3_scale(Figure_toLocal(position, facing, b->hand_target[side]), 1.0f / s);