Nimbin[12]?Games / Entropie / entropie/ARCHITECTURE.md

Entropie git · main

Entropie festival game; first steps

sdl c game entropie cmake · first commit 2026-10-10 · last commit 2026-11-02 (17 hours ago) · synced 8 hours ago

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.gz
entropie/ARCHITECTURE.md 8 KB · 117 lines raw

Entropie – architecture

How the code is put together. Read before adding a feature; update it in the same version when the structure changes (rules for working on it: RULES.md).

Modules

FolderWhat it isMay include
src/core/window, GL loader (gl.h: every GL call is listed there), input, sound out (audio.c: a synthesizer and mixer, no sound files)core
src/math/vectors, matrices, frustum, yaw conventions (linalg.h)math
src/render/renderer and its passes, shaders' uniforms, meshes, procedural shapes (shapes*.c), figures, camera, sky, UIcore, math, render
src/world/Object, World, physics, terrain, the map (site.c, scene.c, manor.c - also the Berlin rooms off the map, course.c), everybody in the story (cast.c), the floors' stages (stage.c), the side jobs' ground (field.c: the Kartoffelacker's grass, the snails, Kerry's art), the why questions' content (why.c), the festival's guests (guests.c), the big old tree's places (bigtree.c), broken bones and casts (injury.c), tools, forestry, ladder, hose, camp, clothes, car, water, weather, grass, grid, dayeverything but game
src/people/bodies (animation), hands, AI (the projects: ai_project.c, the side jobs and the big tree: ai_jobs.c, the festival weekend: ai_fest.c, held, hand in hand, stepping in: ai_touch.c), touching somebody and what it means (touch.c), talk, condition, dog, climbingeverything but game
src/game/the frame: input to actions, player, camera follow, talk and dev UI, the arrival by car at the start, the story (game_story.c: the crew turning up, the crew overview), the shopping run (game_shop.c), the meetings in Berlin and the weekends (game_meeting.c), the why questions coming up and your notebook (game_why.c), the festival weekend and the storm (game_festival.c), the supporters' shifts, the clean-up and the drive home (game_cleanup.c), the big tree's rope and fall (game_bigtree.c), the ambulance and the hospital (game_injury.c), reaching out, holding people and who saw it (game_touch.c), saves (save.c), what you hear (sound.c)all

One frame

Game_update → input, actions, talk, player → World_update: physics for every object (near ones from the Grid) → grid rebuilt → felling and cutting → hands (pushing, carrying) → hose → AI → bodies animated → props (gates, chairs, ashtray, pullovers put down). Then the camera follows (game.c), and Game_render: shadow pass, scene pass (terrain, objects, figures, grass), the sky, Game_renderAir (rain, smoke, chips: after the sky, so they show against it), ink pass, UI. Sound_update (main.c) after the update: the world's noises of the frame and the steady sounds.

Budget: the update takes about 1 ms for ~950 objects. Drawing skips what's out of view (objects, 8×8 terrain tiles).

Objects

Space and turning

Building the map

Scene_load (start things) → Site_build (static things, buildings, roads) → World_buildTerrain (levels the ground under static things) → Site_finish / Scene_finish (things that sit on the ground).

Physics

Rendering

Sound

Crates

Saves

Versions

Makefile VERSION; the build id is an md5 of sources and assets (make version). STATE.md ends with the version it describes.