popertots
90a6196443
feat: soft entity collision, dead code removal, leaf standability fix
...
- Add TileOccupancy resource and rebuild_tile_occupancy system to track
per-tile entity counts for soft collision avoidance
- Add collision_delay to Ambulatory; entities try relative-left step on
occupied tiles, wait 1 tick, then push through
- Fix leaf canopy standability: leaves are now can_stand_in=true,
can_stand_on=false (walkable, not standable-on)
- Delete FloorTilePrefab / FixtureTilePrefab / FloorTile / FixtureTile /
TileState (all fully dead — TileMap + ChunkData are sole truth)
- Delete tile_spawns from TerrainBlob (populated but never consumed)
- Delete leaf ghost entity spawn in forestry (orphaned invisible ECS entity)
- Replace log prefab spawn with inline commands.spawn(Transform, Visibility)
- Add TileMap::remove_fixture for future digging/explosion use
- Skip collision avoidance when current tile has >2 entities (handles spawn
cluster deadlock)
2026-03-21 01:36:38 +00:00
popertots
e61a27fdb0
cargo
2026-03-20 17:29:47 +00:00
popertots
15c0d1c7a2
external config
2026-03-18 23:19:58 +00:00
popertots
c902cff908
feat: async pathfinding with provisional paths and bit-grid snapshots
...
- Add StandableBitGrid: O(1) bit-packed snapshot (~6KB per 50k tiles vs HashMap overhead)
- Implement two-tier pathfinding: sync for short paths (<64 tiles), provisional+async for long paths
- calculate_provisional_path: capped A* returning path to best heuristic node
- calculate_async_path: A* using bit-grid (Send+Sync, no thread_local)
- prepare_paths system: dispatches provisional paths immediately, spawns async for full paths
- poll_async_paths + splice_completed_async_paths: seamless path transition when async completes
- Entities start walking immediately on provisional path while full path computes in background
Architecture:
FixedUpdate: prepare_paths → update_wandering_targets → movement
PostUpdate: poll_async_paths → splice_completed_async_paths
Priority: DF-like pathing (immediate movement) > performance > memory
2026-03-18 16:35:39 +00:00
popertots
81b70a661c
Implement tiered pathfinding with thread-local scratchpads
...
- TIER0 (<10 tiles): Vec-based linear search, zero hash overhead
- TIER1 (10-30 tiles): FxHashMap scratchpad with memory reuse
- TIER2 (30-100 tiles): AHashMap scratchpad for better collision resistance
- TIER3 (>100 tiles): Chunk waypoint decomposition
- Added benchmarking infrastructure with F8 report trigger
- Added async infrastructure: PendingPath, CompletedPaths resources
- Lowered MAX_NODES to 5000 to prevent runaway searches
Benchmarks show P50 improved 13%, max improved 53%
2026-03-18 14:37:15 +00:00
popertots
49972b9b64
better config for benchmarks
2026-03-18 11:21:40 +00:00
popertots
aeef78eca2
Fix tiled patching
2026-03-18 09:22:47 +00:00
popertots
4ef68c4e04
migratetion to 0.18.0
2026-02-16 00:02:00 +00:00
popertots
feed403495
Update bevy version, implement bevy_rand
2025-09-07 20:05:00 +01:00
popertots
7e52d6e1bd
fix zoom, rework chunkmap events
2025-05-29 16:22:02 +01:00
popertots
e8d3f1bafb
prep bench
2025-05-27 23:28:25 +01:00
popertots
950f02c2e1
rework pathfinding, game entity fog rendering, and tilemap usage
2025-05-27 23:10:54 +01:00
popertots
e2ccd0cead
Log (wip), parallelisation
2025-05-11 22:58:25 +01:00
popertots
e3ea662668
fake fog, better parallelisation
2025-05-07 20:13:29 +01:00
popertots
b7261ae847
bevy 0.16 migration
2025-05-02 19:27:23 +01:00
popertots
9f264f230e
revert to non-benchmark
2025-05-02 18:20:32 +01:00
StephenAdamson
4089851734
benchmark
2025-02-06 21:32:30 +00:00
StephenAdamson
7b8142afd2
0.15.1, fps
2025-01-16 21:35:04 +00:00
StephenAdamson
bf3ddd0e74
attempt noise gen
2024-12-14 00:03:52 +00:00
StephenAdamson
7bab01ee74
Initial tile push with item cycle
2024-12-12 17:19:59 +00:00