2.1 KiB
2.1 KiB
world generation
- world state "object" which will keep track of chunks to generate, to remove, to keep, those that are currently being generated in a thread pool.
- parallelised creeping chunk generation in a radius.
- removing of chunks when they go outside the radius.
- interlinked chunks; each chunk should have a ptr to the 26 neighbor chunks or null.
- world state linking and unlinking chunks automatically.
- ambient occlusion spanning between chunks.
- chunk loading, unloading, saving/loading from files; world state keeping track of chunks loaded and unloaded as well
- generation of (LOD) simplified chunk models
- generation of simplified chunks
- separate LOD radiuses for different LOD levels
- partial chunk loading and unloading.
- block change handling: recalculate only the relevant quads
misc graphics
- implement possibilities for 6 different surfaces for a tile, e.g a branch tile should have 4 bark surfaces and 2 inner surfaces
- implement random rotation and reflection of surfaces
- implement fixed rotation and reflection of surfaces
- implement custom models, e.g a tall grass tile is a model with two planes crossing in the middle (see: minecraft). implement optional greedy meshing for such models; e.g tall grass textures could fuse together diagonally and grass could have 2 layers who could mesh as well.
- implement metallicity (e.g block of iron) (?, discuss)
- implement random shininess (e.g rough diamond block, would sparkle as you move across, see purple rocks in PEAK's Alpine biome)
- implement emissive textures (e.g a computer screen, see minecraft's enderman/spider eyes and sculk blocks)
- implement bloom effect (see gregtech's glowing EBF's)
directional sun/moonlight
- discuss implementation
directional central lightning, e.g torches
- discuss implementation
tooling
- benchmarking step in build.zig: benchmark chunk meshing, generation, and similar tasks which will need to be performed at scale
- texturepack compiler: something that would compile minecraft-style texturepacks into a format that could be more suited for in game usage.