Tracking: Worldgen Work
Hello! Welcome to the big worldgen tracking issue.
Current status
We're currently in the process of transitioning the game to a new site system, named 'site2'. This new system is being developed in parallel within the codebase alongside the existing system (i.e: not on a feature branch) and is currently implemented as a sort of plug-in of the old system (see world/src/site/mod.rs#SiteKind::Refactor
).
How to contribute
Are you looking to get involved in Veloren development? World generation is a great place to start! If you're interested in looking into one of the tasks on this list, message me, @zesterer
, or any of the other core devs on Discord. If you're not comfortable with using Discord, you're also welcome to post on our Matrix channel, in this issue, on /r/veloren.
You don't need to be a Rust expert, you don't need to have prior experience with procedural generation, and you don't need to be an expert in Veloren's code to get started.
Useful Resources
-
The Veloren 'code reading' videos, many of which cover world generation
Work that needs doing
Update this list as more things appear!
-
Transition to site2 -
Get economics working with site2 sites (fixed in !3141 (merged)) -
Convert existing sites to site2 -
Dungeons (fixed in !2499 (merged)) -
Towns -
Add crafting sprites to workshops (fixed in !3174 (merged)) -
Add farms to towns -
Add alchemy building and cooking building to house cauldron/cooking pot
-
-
Giant trees (fixed in !3136 (merged)) -
Add enemy spawning on giant trees (fixed in !3344 (merged)) -
Add radius interpolation (fixed in !3267 (merged)) -
Add snow (could be applied to everything in site2 automatically?)
-
-
Castles
-
-
Inhabitants -
Spawn rtsim merchants and civilians in towns -
Investigate spawning entities in sites by creating them when the chunks load (as we do now) vs using rtsim
-
-
-
General site2 things -
New sites -
Sea chapel -
Gnarling village -
Adlet structures -
Sahagin structures -
Haniwa structures -
Myrmidon structures -
Cultist structures
-
-
Investigate possibility of recursive plots (buildings in giant trees, houses within castle keeps, etc.) -
Towns -
Add taverns -
Add shops -
Add markets -
Add boundary wall generation (should mark anything outside boundary as a hazard) -
Add sign sprites (use SpriteCfg
to add custom text) that mark roads, buildings, etc. -
Add guard towers and barracks -
Add farms -
Add windmills
-
-
-
Create rtsim2 -
Define rtsim data model (see here for design ideas) -
Get rtsim persistence working -
Reimplement existing rtsim mechanics into rtsim2 -
Bandits -
Travellers
-
-
Implement resource depletion tracking -
Interaction -
Allow NPCs to perform actions when not simulated -
Allow NPCs to receive information from main game -
Simulate actions for simulated NPCs
-
-
NPC roles -
Implement unique behaviours for roles
-
-
Move site generation to rtsim2 -
History simulation -
Site creation -
Site development over time (new buildings, goals, etc. as economy & faction control changes) -
Simulate population growth & migration -
Establishing new sites over time as economies grow -
Move economics to rtsim2 -
Simulate factions & diplomacy
-
-
Natural simulation -
Simulate plant growth in rtsim2 -
Simulate animation populations in rtsim2, integrate with entity spawning
-
-
Weather -
Move weather simulation to rtsim2
-
-
Factions and reputation -
Add factions to the world -
Track faction/actor disposition toward other factions/actors -
Allow factions to trigger world events
-
-
Quests -
Allow NPCs to remember quest state -
Grow the trade system into a more general interaction system -
Derive quest objectives from world state (needs/wants, diplomacy, etc.)
-
-
-
New Rocks -
Arches -
Lionrocks
-