popertots
|
f9a74ed432
|
feat: migrate quilter rendering to Bevy TilemapChunk
Replaces the CPU pixel-baking quilter system (QuiltCache, TerrainSprite,
pixel_buffers) with Bevy's native TilemapChunk GPU-index-lookup API.
Architecture:
- TilemapChunk entities replace TerrainSprite entities per (chunk, z, layer)
- Tileset PNG stacked vertically as texture_2d_array (11 rows: 6 floor + 5 fixture)
- populate_chunk_tiles reads TileMap HashMap directly; no ECS FloorTile entities
- Chunk spawn deferred to apply_terrain_blobs (after TileMap data exists)
- Dirty key system triggers repopulate on occlusion/camera-z changes
Bug fixes:
- populate_chunk_tiles: add chunk_pos offset to world tile lookups (was always (0,0))
- spawn_tilemap_chunks: offset Transform by -TILE_SIZE/2 (tile-centre vs bottom-left)
- spawn_tilemap_chunks: AlphaMode2d::Blend (was Opaque, blocking DF fade)
- update_tilemap_chunk_visibility: actually mutate Visibility (was read-only)
- handle_tile_occlusion_updates: mark dirty keys inline (was double-reading events)
- TilemapChunkSpawner: deduplicate pending queue and guard stale registry
Performance:
- ~115K FloorTile ECS entities eliminated
- GPU memory: O(tile_data) instead of O(CHUNK_TILES² × z_levels × pixel_bytes)
- Z-scroll: only TilemapChunkTileData repopulates (no entity re-spawn)
- Benchmarks via TilemapBenchmark resource (F9 to report)
|
2026-03-20 14:02:04 +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
|
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
|
80afd547e5
|
Occlusion attempt 1
|
2024-12-17 19:44:54 +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 |
|