- 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
34 lines
667 B
TOML
34 lines
667 B
TOML
[package]
|
|
name = "dorf"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[dependencies]
|
|
bevy = { version = "0.18.1", features = ["wayland"] }
|
|
noise = "0.9.0"
|
|
rand = "0.10.0"
|
|
bevy_rand = { version = "0.14.2", features = ["wyrand"] }
|
|
image = "0.25.10"
|
|
bevy_platform = "0.18.1"
|
|
rayon = "1.11.0"
|
|
rustc-hash = "2.1.1"
|
|
ahash = "0.8.12"
|
|
nohash-hasher = "0.2.0"
|
|
futures-lite = "2.6"
|
|
|
|
# Enable max optimizations for dependencies, but not for our code:
|
|
[profile.dev.package."*"]
|
|
opt-level = 3
|
|
|
|
# Enable only a small amount of optimization in debug mode
|
|
[profile.dev]
|
|
opt-level = 1
|
|
debug = true
|
|
|
|
[profile.release]
|
|
lto = true
|
|
opt-level = 3
|
|
codegen-units = 1
|
|
incremental = false
|
|
debug = false
|