A gore framework for Bevy built the other way round: the blood is a material, the bone breaks the way it was loaded, and every visual is deterministic enough to hash. Ten demos, each one thing, each running in your browser.
The same subject, the same seed, four silhouettes: a torsional spiral, a bending butterfly, a transverse axial break, and comminution. Cortical bone splinters; trabecular bone crushes.
bevy_carnageHow many pieces? Grady's energy balance answers it, and the energy delivered is a hard ceiling. A pistol wedges; a rifle comminutes.
bevy_carnageAspect ratio is sin θ, spines follow the blood-specific law, satellites need a
splash threshold. Press B for the four-texture wall this replaced.
Six forensic classes as six mechanisms. One arterial arc per systole, cast-off released tangentially, and a transfer smear that runs out of blood.
bevy_carnage + bloodstainRivulets thin and race, then thicken, bead, and arrest mid-wall when the yield stress overtakes the drive. Clotting is visibly the same mechanism.
bloodstainScrub the age: oxyHb → metHb → hemichrome, gloss collapsing, the rim drying first, a serum halo above 50 % humidity, and a late craquelure.
bloodstainFour tiers where reduction is substitution. A flash meter refusing the fourth flash in a second, and the aim-exclusion cone drawn.
bevy_carnageBlood lands in UV space, runs down the real geometry, and dries in place — with a digest on screen, because this wetmap is CPU-authoritative.
bevy_wetmapXPBD strands: guts spill with weight, coil on the floor, stay tethered by the mesentery, then tear. A tear is monotone, so it cannot heal.
bevy_visceraThe flagship. One body, one shot: the bone morphology, the blood pattern that fits it, the wetmap it lands on, the guts it opens, the drying it leaves.
all four cratesGames treat blood as a decal with a lifetime and fracture as a shape-shattering operation. Both are reductions that throw away the thing a player can see. So each of these is modelled from the measurement instead:
| Idea | What it changes | Source |
|---|---|---|
| Blood is a shear-thinning yield-stress fluid | A fast rivulet is thin and races; a flow stops where it is when its yield stress overtakes the drive. Clotting is that, not a timer. | Carreau–Yasuda with Cho & Kensey's constants |
| Fracture knows its loading mode | Spiral, butterfly, transverse, comminuted — and greenstick, which is an outcome rather than a mode. | 10.1145/3549540 §6 names the gap; 10.3233/BME-1991-1102,
10.1016/j.forsciint.2021.110899 fill it |
| Fragment count from the energy | A faster load makes smaller pieces, cubically, and the energy delivered caps how much surface can exist. | 10.1063/1.329934, 10.1098/rspa.1947.0042 |
| Stains derived, not authored | Four baked splats picked by seed % 4 repeat by the fourth stain, 90.6 % of the
time. A derived stain repeats only when the impact does. |
10.1520/jfs2003224,
10.1111/j.1556-4029.2007.00505.x |
| A wetmap that is CPU-authoritative | Everywhere else this is a GPU render target, which is why nobody can hash one. This one has a digest. | — |
| Reduction is substitution | Turning gore down keeps the hit confirmation and swaps the palette. Deleting the channel makes a game harder to read. | ESRB / PEGI descriptors; WCAG 2.1 SC 2.3.1 for the flash gate |
| Crate | What it is | Licence |
|---|---|---|
bevy_carnage |
Deterministic runtime gore: prefracture with loading-mode morphology, bullet bores, wounds, bond-graph severance, hit feel, and the tone/accessibility policy surface. | MIT OR Apache-2.0 |
bloodstain |
Blood as a material — engine-free, no_std, no math library in its public API.
Rheology, percolation spatter, stain morphology, the forensic pattern taxonomy, drying, and an
inverse solver that reads the wound back out of the stains. |
MIT OR Apache-2.0 |
bevy_wetmap |
Texture-space blood accumulation, CPU-authoritative and therefore hashable. | MIT OR Apache-2.0 |
bevy_viscera |
XPBD Cosserat-style strands with a tearing mesenteric membrane. | MIT OR Apache-2.0 |