popertots
cb5b18008d
fix
2026-03-22 11:50:53 +00:00
popertots
cafe376841
Plugin cleanup
2026-03-22 00:43:03 +00:00
popertots
d61baaf1ba
Task Infrastructure — Task Enum, Queue, Events, Executor
2026-03-22 00:35:22 +00:00
popertots
458068fb87
run_if
2026-03-22 00:03:57 +00:00
popertots
c776b91a44
haulage system WIP
2026-03-21 23:39:58 +00:00
popertots
ce3746366c
refactor: extract generic digging system, drop tables, remove debug code
...
- New src/entities/item/drop_table.rs: DropEntry (chance, min/max count,
pseudo-RNG roll) + DropTable wrapper. grass=5% coin 1-2, rock=10% coin 1,
dirt/air=none.
- New src/entities/shared_systems/digging.rs: Digger component + dig_system.
Any entity with Digger digs the tile below on its interval. Replaces
rabbit_dig_system/rabbit_fall_debug_system/RabbitDigTimer/RabbitFallDebug.
- New TileMap::dig_floor: remove_floor + insert air. Used by dig_system.
- FloorTileData: added drop_table field. Lost Copy derive (Vec field).
Updated all 6 terrain.rs call sites with per-tile drop tables.
- Pig: removed PigDropTimer + pig_drop_system. Drops were debug placeholder.
TODO added for future loot-on-death/butcher system.
- Rabbit: removed all debug components/systems. Now uses Digger::new(5.0).
- main.rs: removed rabbit_dig_system/rabbit_fall_debug_system/pig_drop_system,
added shared_systems::digging::dig_system.
2026-03-21 15:40:34 +00:00
popertots
89693f968c
add debug
2026-03-21 14:50:31 +00:00
popertots
5357a69930
feat: stage 2 collision, TileChangedEvent, path invalidation, rabbit digging
...
- Stage 2 collision: convoy skip when entities move same direction (dot>0.7),
E/S yield rule for crossings, W/N right-of-way, head-on unchanged
- TileChangedEvent (Message) + PathfindingDirtyChunks (Resource) in new tile_changed module
- collect_pathfinding_dirty_chunks / invalidate_paths_on_tile_change /
clear_pathfinding_dirty_chunks in PathfindingPlugin FixedUpdate chain
- TileMap::remove_floor clears HashMap + ChunkData bitsets + tile_ids
- RabbitDigTimer component: rabbits dig floor below every 5s, fires TileChangedEvent
and TileOcclusionEvent for path invalidation + rendering
2026-03-21 11:56:51 +00:00
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
06bbc9caa8
feat: neofetch-style system info dump at startup
...
Prints DORF SYSTEM box to stdout before game loop begins:
OS, CPU (model + cores), GPU (WEBGPU_ADAPTER_NAME env var),
RAM total + free (from /proc/meminfo), display vsync mode,
initial chunk radius, world seed.
2026-03-20 17:16:54 +00:00
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
9535d65bd7
feat: data-oriented chunks optimization with tile registry
...
- Phase 1: Bit-packed standability (ChunkData with bitsets)
- Phase 2: Reactive connectivity (dirty chunks)
- Phase 3: Async terrain baking (AsyncComputeTaskPool)
- Pathfinding weight system (rock=50 preferred, bedrock=150 avoided)
- Movement speed affected by tile weight
- External tiles.toml for hot-reloadable tile definitions
- TileRegistry singleton for async-safe tile lookups
- Fixed world_to_chunk to use CHUNK_SIZE_TILE (128) not CHUNK_SIZE (8)
- Fixed infinite spawner with Local<bool> state guards
- Fixed spawn coordinate grid alignment
Note: Zigzag pathfinding bug introduced - needs investigation
2026-03-19 19:15:36 +00:00
popertots
15c0d1c7a2
external config
2026-03-18 23:19:58 +00:00
popertots
4ef68c4e04
migratetion to 0.18.0
2026-02-16 00:02:00 +00:00
popertots
886d162963
dropped item rotation
2026-02-15 18:56:38 +00:00
popertots
4c4c985be3
item flashing
2025-09-14 18:48:50 +01:00
popertots
8a5884c6d5
example item
2025-09-12 18:04:03 +01:00
popertots
ee7ac39ad5
refactor file locations for readability
2025-09-11 18:23:53 +01:00
popertots
e58f6804bf
File cleanup
2025-09-10 20:03:29 +01:00
popertots
feed403495
Update bevy version, implement bevy_rand
2025-09-07 20:05:00 +01:00
popertots
950f02c2e1
rework pathfinding, game entity fog rendering, and tilemap usage
2025-05-27 23:10:54 +01:00
popertots
ac033de136
rework occlusion events
2025-05-23 14:01:28 +01:00
popertots
31e6eb29b2
camera zooming
2025-05-09 18:13:28 +01:00
popertots
6f4de57f1b
average composite on terrain sprites
2025-05-06 22:31:31 +01:00
popertots
5726a68efb
Terrain quilting
2025-05-05 00:09:12 +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
4ba6fecc27
batch sprite 1
2025-02-08 00:23:49 +00:00
StephenAdamson
4089851734
benchmark
2025-02-06 21:32:30 +00:00
StephenAdamson
6161c21e22
Singular tiles resource
2025-02-01 01:07:39 +00:00
popertots
7143a9dded
working path finding, non working targeting
2025-01-24 17:20:45 +00:00
popertots
ca3fcc00ff
path 2
2025-01-21 23:39:00 +00:00
StephenAdamson
bb3905e6b9
minor
2025-01-21 21:02:40 +00:00
popertots
53b95f452f
Fixed targeting for citizen movement
2025-01-19 22:13:24 +00:00
StephenAdamson
594131a372
movement redo part 1
2025-01-17 23:58:19 +00:00
StephenAdamson
0af88c213d
partial a*
2025-01-17 20:05:08 +00:00
StephenAdamson
7b8142afd2
0.15.1, fps
2025-01-16 21:35:04 +00:00
StephenAdamson
d2e9bb0cf3
Chunking 3
2025-01-15 19:50:18 +00:00
StephenAdamson
7f1ec77ab0
Tilemap chunking part 2
2025-01-14 23:52:09 +00:00
popertots
6c3232df74
chunk2?
2025-01-08 01:33:18 +00:00
StephenAdamson
ed88d5bdce
partial chunking
2025-01-07 21:35:44 +00:00
StephenAdamson
73dcbd4102
global tilemap (ish)
2024-12-30 22:18:20 +00:00
StephenAdamson
3aadb8bb78
Separate floor from fixture
2024-12-29 00:45:07 +00:00
StephenAdamson
1d292d080b
Noise surface
2024-12-20 22:45:30 +00:00
StephenAdamson
d78314eb51
baked occlusion bit mapping
2024-12-20 00:28:28 +00:00
StephenAdamson
fbeaf775bf
cleanup
2024-12-18 00:22:52 +00:00
StephenAdamson
18d587fdea
cleanup
2024-12-18 00:09:13 +00:00
StephenAdamson
d107626b32
changeable z index, with occlusion
2024-12-17 21:30:46 +00:00
StephenAdamson
caacf4e072
occlusion part 2
2024-12-17 21:10:21 +00:00
StephenAdamson
80afd547e5
Occlusion attempt 1
2024-12-17 19:44:54 +00:00