physics: Jolt's floor sized for what moves - pairs 4096, contacts 2048 and a 4 MB temp heap by default (phys_open_sized for more), and a body past max_bodies or a step past the pairs or contacts is Mem.over, never a quiet -1; world.ludic split from shapes.ludic
An empty world at the game's size held 51839 KB of Jolt's heap (200000 bodies, 65536 pairs, 20480 contacts, a 32 MB temp heap), the jolt= floor under every walk. Pairs and contacts come from what moves - drops, boats, a few walkers - and a valley's still things make none. Now 11743 KB at 200000 bodies and 8461 KB at the 98304 the game opens for (jolt_floor_test holds it under 16 MB). The temp heap still falls back to malloc for a step that wants more. lib/macos-arm64 rebuilt; lib/windows-x64 needs native/build.sh on the PC (jph_world_new's new sizes). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
031fcad641
commit
b4af12025d
11 changed files with 95 additions and 52 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# native.ludic - the shim's symbols (native/shim/jph_shim.cpp). A world and a shape are handles
|
||||
# the package keeps; a body is an int id. None of this is exported.
|
||||
extern function jph_world_new(max_bodies: int, threads: int) -> pointer = "jph_world_new"
|
||||
extern function jph_world_new(max_bodies: int, threads: int, max_pairs: int, max_contacts: int, temp_kb: int) -> pointer = "jph_world_new"
|
||||
extern function jph_world_free(w: pointer) -> void = "jph_world_free"
|
||||
extern function jph_world_gravity(w: pointer, y: float) -> void = "jph_world_gravity"
|
||||
extern function jph_world_step(w: pointer, dt: float, sub: int) -> int = "jph_world_step"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue