307 lines
9.5 KiB
Markdown
307 lines
9.5 KiB
Markdown
@page renderertodo TODO
|
|
|
|
|
|
|
|
|
|
|
|
# DONE
|
|
|
|
|
|
|
|
(6/10/2023)
|
|
|
|
Scene
|
|
- Generic entity & btree grouping mechanism
|
|
|
|
Server Data Cell
|
|
- Wrapper around scene used by server to manage server scenes and players associated with them
|
|
Realm
|
|
- Manages server data cells including rudimentary spin up/down
|
|
Realm Manager
|
|
- Manages all realms + provides constructors for types of realms
|
|
Data Cell Manager
|
|
- Interface defining method for laying out cells and querying for cells based on real or world coordinates
|
|
Gridded Data Cell Manager
|
|
- Implementation of Data Cell Manager that manages a grid of data cells if using terrain engine
|
|
Data Cell Location Resolver
|
|
- Takes a vector3d and an entity and figures out what data cell that should correspond to
|
|
- Breaks the above resolver relationship out of cells so that can support different "worlds"
|
|
Entity Data Cell Mapper
|
|
- Takes an entity and gives the data cell that entity is inside of
|
|
- Breaks this out from data cell manager to support multiple worlds
|
|
Data Cell Physics Manager
|
|
- Breaks the physics generation for chunks out of the data cell manager
|
|
Data Cell Search Utils
|
|
- Combine the above classes to provided utilities for searching cells nearby a location for groups of entities
|
|
|
|
Client Scene Wrapper
|
|
- Wrapper around scene used by client
|
|
- Specifically adds translating server/client entity IDs to one another
|
|
|
|
Loading Threads
|
|
- Separate client and server versions of loading threads to different files
|
|
|
|
Server Bone Loader
|
|
- Server bone loading for server only collision simulation
|
|
|
|
Instancing support
|
|
|
|
Server Scene Management
|
|
- Creating and simulating entities per chunk
|
|
|
|
Server Terrain Management (specifically for collision)
|
|
- Generation collision meshes
|
|
- Also generate texture array
|
|
|
|
Terrain Chunk Shader
|
|
- Procedural textures for eg rock and dirt
|
|
|
|
Client Terrain Entity Management (specifically creation/teardown for client)
|
|
- Do the basic query stuff for getting terrain
|
|
|
|
Diagnose weird walking physics
|
|
- Character terrain collision messiness
|
|
|
|
Upgrade terrain editing user experience
|
|
- Sphere pallete
|
|
- Gradual updates
|
|
- Terrain Deletion
|
|
|
|
Upgrade Terrain Chunk
|
|
- Fully connect world chunks
|
|
|
|
Terrain Editing
|
|
- Server interface for editing terrain
|
|
- Ability to request terrain change from client
|
|
|
|
Voxel Data Storage
|
|
- Store metadata about types of voxels (rgb offsets, foliage placements, etc)
|
|
|
|
Foliage Manager upgrades
|
|
- Place foliage based on voxel type
|
|
- Use timeout queueing system to evaluate voxel locations to place foliage
|
|
- Destroy foliage on voxel edit
|
|
- Regrow foliage on empty cells after timeout
|
|
- Gradually regrow
|
|
|
|
Chunk Saving System
|
|
- File that maps world position to chunk file
|
|
- Save chunks to compressed files
|
|
- Server load chunks as needed
|
|
- Unload chunks after 100 frames of not being used
|
|
- Save chunks on unload
|
|
|
|
Convert client and server terrain entity composition to use 8 chunks instead of 1
|
|
|
|
Server Diagnose Physics potentially broken
|
|
- Server physics calculation not happening <-- hard to test bc gravity tree might not actually be updating client to turn off or something
|
|
|
|
Foliage Manager upgrades
|
|
- Fix popping
|
|
|
|
(2/25/2024)
|
|
Generate Tree Entities
|
|
- Generate leaf blobs container entity
|
|
- Attach individual leaf blob entities to container entity
|
|
- Sways in the wind
|
|
- Synchronize creation on server and client
|
|
- Synchronize swinging on server and client
|
|
- Tree types configurable via files
|
|
Scene Streaming (streaming state of a scene to client)
|
|
- Solidify the work that has already been done in this space and PARTICULARLY add good high level documentation
|
|
Server Content Engine
|
|
- On first loading a new-to-server chunk, generate all content (foliage, terrain objects (boulders), structures, etc) entities for the chunk
|
|
|
|
|
|
(2/28/2024)
|
|
Improve Fonts
|
|
- Support multiple fonts in engine
|
|
- Leverage https://github.com/SilverTiger/lwjgl3-tutorial/wiki/Fonts to load fonts with java
|
|
|
|
(2/29/2024)
|
|
Properly prioritize close trees over far trees
|
|
|
|
Implement proper Frustum Culling
|
|
- Regular Actors
|
|
- Instanced Actors
|
|
|
|
(03/06/2024)
|
|
Bake in imgui
|
|
|
|
(03/07/2024)
|
|
Server frametime bar graph
|
|
|
|
(03/09/2024)
|
|
Ability to attach ambient audio emitters to entities
|
|
|
|
Timekeeping class that defaults to gltf time and falls back to systemCurrentTimeMillis
|
|
|
|
Methods for sleeping physics bodies if nothing nearby them is dynamic (ie trees if there are no moving creatures near them)
|
|
- SAP2 space from ode4j specifically (ended up using BVH space instead)
|
|
|
|
Overhaul mesh class
|
|
- remove unused stuff
|
|
- private constructor
|
|
(this is going to require changing a lot of dependencies)
|
|
|
|
(03/10/2024)
|
|
De-dupe render calls via doing mutations in render pipeline status and dont call setting variables to values they are already set to
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO
|
|
|
|
Fix character movement
|
|
|
|
Fix Frustum Culling for skybox
|
|
|
|
Clean up main method/class
|
|
|
|
Build a lod system
|
|
- Could potentially be held at actor level
|
|
- Link different models based on LOD level
|
|
- LOD trees aggressively
|
|
|
|
|
|
Fluid Dynamics System
|
|
- Basic transparent voxels for fluid
|
|
- Fluid simulation algorithm
|
|
- Vectorize/JNI fluid simulation
|
|
- Separate fluid chunks
|
|
- Networked fluid chunk transportation (including force vectors for generating particles on client)
|
|
- Save fluid chunks
|
|
|
|
Ray Traced Audio Engine
|
|
|
|
Documentation Pass on as many files as you can stomache
|
|
|
|
Generate Tree Entities
|
|
- Generate stem
|
|
- Ability to specify central stem
|
|
- Cubic function for limb dispersion over length
|
|
- Generate branch starters from trunk that are not full length
|
|
|
|
Fix Character creation preview not working
|
|
|
|
Marching Cubes Texture Overhaul
|
|
- Detect opengl max image size
|
|
- Construct texture atlas of max size
|
|
- (target 256x256 resolution initially, should give ~1000 types for 8192x8192)
|
|
- Prebake all textures into atlas
|
|
- Rewrite marching cubes shader to leverage this atlas
|
|
|
|
|
|
Terrain Interface Positional Access Interface
|
|
- Ability to get terrain at point for interactions with game world eg placing grass/water collision
|
|
Foliage Manager upgrades
|
|
- Place foliage intelligently
|
|
|
|
Server Micro/Macro transitioning (turning entity into character in macro simulation and vice-versa)
|
|
Macro level content tracker
|
|
- Keep track of chunks that would have trees and include this in the data passed to client
|
|
|
|
|
|
Season tracking
|
|
- Have a concept of seasons as loaded from assets/data
|
|
- Have a season manager that keeps track of seasons at the macro scale
|
|
- Maybe make it per biome or something in data?
|
|
- Create interface for querying and updating season in a given chunk
|
|
- Update foliage system to transition models and colors based on the current season (update maybe every minute in game or something?)
|
|
|
|
|
|
Weather tracking
|
|
- Keeps track at macro level of wind direction and level
|
|
- Keeps track at macro level of cloud coverage and structure (ie transmits same cloud to client as server)
|
|
- Keeps track at macro level of temperature
|
|
- Keeps track at macro level of precipitation
|
|
|
|
|
|
Foliage Manager upgrades
|
|
- Add wind simulation if relevant
|
|
|
|
Client Terrain Entity Management (specifically creation/teardown for client)
|
|
- Also queries for far out chunks to load far away terrain
|
|
Server Terrain Management (specifically for collision)
|
|
- Handles communicating far out LOD chunks to client as well
|
|
Upgrade Terrain Chunk
|
|
- Implement Transvoxel Algorithm
|
|
|
|
|
|
|
|
Server Content Engine
|
|
- On reloading a chunk with macro objects like structures, apply appropriate modifiers to align micro object with macro object
|
|
- EG if a building is damaged in macro simulation, regenerate the micro one to be damaged before marking chunk as valid
|
|
|
|
|
|
Upgrade terrain editing user experience further
|
|
- Leveling tools
|
|
- Lock to axis tools
|
|
- Server validation for client request to change terrain
|
|
|
|
|
|
|
|
|
|
# Ongoing
|
|
|
|
Upgrade terrain generation algorithms
|
|
- This one should be an ongoing process in general as it is a matter of taste
|
|
|
|
|
|
|
|
|
|
|
|
# Eventually
|
|
|
|
Automatic Scene unloading
|
|
- Tree structure inside scenes for tearing down groups of entities
|
|
- Entity decomposition
|
|
- Server handling
|
|
- Client handling when scene should be unloaded
|
|
Light Manager
|
|
- Creates and manages light entities
|
|
- Uses priority queue mechanism like foliage manager to only draw the most important lights
|
|
- Support "flickering" somehow
|
|
- Eventually support spot lights?
|
|
- Point shadows ???
|
|
Generic collision engine to support different instances of engine (eg hitboxes vs terrain vs liquids, etc)
|
|
- Major refactoring to happen here
|
|
Procedural Cliff Texture
|
|
- Uses noise or fractals or something to generate infinite textures in shader
|
|
Terrain Chunks:
|
|
- Scale textures to be 1 texture per unit of terrain
|
|
- Texture atlasing (512x512)
|
|
Render pipeline updates to support multiple pipelines defined in different files
|
|
- Grouping meshes together independent of actor so don't have to rebind shader programs or VAOs to redraw
|
|
Loot Generator
|
|
- System that can generate items that would be appropriate reward given some variables
|
|
- ie you tell it 'this is this character's stats, this is the relative level of loot I want to provide'
|
|
- it then searches through the lore to generate appropriate weapons, armor, materials, consumables, etc
|
|
|
|
|
|
|
|
|
|
Gameplay:
|
|
|
|
- Swordsman with movement abilities
|
|
- Archer with movement abilities
|
|
- Mage with elemental physics based abilities
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Fun pie in the sky stuff
|
|
Ability to cast spell to extinguish sun, making world permanently dark/night time
|
|
dynamic camp/house system - npcs will gradually join your camp the longer you stay there
|
|
- They also leave to go on quests and missions
|
|
- You see the composition of the camp change over time
|
|
dynamic warfare system
|
|
- Guard towers that need to be captured by factions before enabling assault on real settlements
|
|
- Raids against villages
|