c902cff908251f901b856aa7ff88692fdd13e36e
- 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
Dorf
This project is my way of learning Rust by recreating key aspects of Dwarf Fortress in Bevy. The aim is to build a feature-rich, procedurally generated simulation game, combining colony management, world-building, etc.
Project Goals
- Learn Rust by implementing complex game systems.
- Explore procedural generation techniques.
- Develop an engaging simulation game inspired by Dwarf Fortress.
Current Status
Work in progress.
Features
Core Systems
Procedural World Generation
-
Terrain generation
- Generate heightmaps and elevation
- Add water bodies and erosion effects
- Apply biome-specific textures
-
Biome distribution
- Define biome attributes (temperature, rainfall, etc.)
- Map biomes to regions based on attributes
- Add transitional zones between biomes
-
Rivers, caves, and mountain ranges
- Implement river pathfinding algorithms
- Procedurally carve cave networks
- Generate mountain chains with fractal noise
Resource Management
-
Gathering raw materials
- Implement tree-cutting and stone-mining mechanics
- Add dynamic replenishment or exhaustion of resources
-
Stockpile mechanics
- Create system for defining and assigning stockpiles
- Optimize pathfinding for resource transport
-
Crafting items and tools
- Develop crafting recipes and progression
- Add tools with different qualities and effects
Colony Simulation
-
Individual dwarves with unique traits
- Generate personality traits and preferences
- Assign skill proficiencies and growth over time
-
Needs and mood systems
- Model basic needs (hunger, thirst, rest)
- Implement mood modifiers and stress responses
-
Job assignment and task automation
- Create task queue and priority system
- Enable task reassignment dynamically
Gameplay Mechanics
Building and Construction
-
Rooms, workshops, and fortifications
- Design grid-based construction system
- Implement structural stability checks
-
Mining and digging mechanics
Combat and Defense
-
Squad management
- Develop squad formation and control UI
- Assign weapons and defensive equipment
-
Enemy invasions
- Generate enemy waves with scaling difficulty
- Simulate AI pathfinding and strategies
-
Traps and defenses
- Add trap-building interface
- Implement trigger mechanisms and consequences
Economy and Trade (Possible)
-
Trading with caravans
- Generate trading caravans based on world events
- Add barter or currency-based exchange
-
Currency and wealth system
- Track wealth and its effects on game dynamics
- Introduce theft and economic threats
Procedural Storytelling
Historical World-Building
-
Generate civilizations, leaders, and conflicts
- Assign dynamic histories to regions and NPCs
- Model geopolitical relationships
-
Persistent world history
- Save and load historical data across game sessions
- Link events and characters to history dynamically
Events and Narratives
- Random and scripted events
- Add contextual random events (e.g., resource scarcity, rival factions)
User Interface
-
Visual grid-based interface
- Add visual overlays for resources, paths, and zones
-
Keyboard and mouse input
Roadmap
- Build procedural world generation prototype.
- Implement basic colony simulation.
- Add crafting and resource management mechanics.
- Introduce combat and defense systems.
- Polish user interface.
- Expand procedural storytelling and events.
Languages
Rust
100%