@page renderertodo TODO

@subpage bigthings Big Things To Build



# 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
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

(03/12/2024)
Foliage Manager upgrades
 - Place foliage intelligently

 Fix arena mode (terrain be crazy)

(03/17/2024)
Optimize instance logic (currently sorting the list of objects to push to buffer each frame nukes the cpu)
 sort nukes cpu because capacity logic is after sort, so it tries to sort ~600k items every frame before caping
 The way to optimize this is to completely gut existing code. One draw call per tile. Draw call calles drawInstanced for all blades within that cell.
 Provide a texture that contains data per blade of grass to the cell on draw. Store positions in that once at creation.
 For dynamic wind later will need to use UBOs or something like that.
 Fix grass flickering (it's frustum culling being inconsistent, try commenting it out in InstancedActor and see what happens :| ) (well we won't have that problem anymore lol)

(03/20/2024)
Free camera system that can detatch from player entity

(03/20/2024)
Half pass at cellular automata fluid dynamics system
 - Diffuse density
 - Streaming chunks over network
 - Basic model creation

(03/21/2024)
Fix character movement (allegedly fixed -- maybe by camera stuff?)
 - Walking left or right while turning camera is very jittery
 - Can lock on moving

Fix Frustum Culling for skybox

Fix Character creation preview not working

(03/23/2024)
Physics-controlled objects system

Clean up main method/class
 - Include Remotery library

(03/24/2024)
Bring LWJGL version up to latest

Automatic Scene unloading
 - Tree structure inside scenes for tearing down groups of entities
 - Entity decomposition
   - Server handling
   - Client handling when scene should be unloaded

Level loading/saving + Basic Editor
 - Spin up voxel level (think arena mode)
 - Save voxel level

(04/10/2024)
Level loading/saving + Basic Editor
 - Basic editor functionality
   - Menu of types of entities to spawn
   - Button to spawn them at cursor

UI Work
 - Make ui feel more responsive, whatever that means (answer is make hover-over styling work lol)
 - Frames for windows (WIP)
 - Need to figure out style-wise what we want to do here (generally minimalist)
 - Fix scrollable handling

Terrain editing UI
 - Menu to select palette to generate, populated based on data

(04/13/2024)
UI Work
 - Level editor ability to destroy an entity on server, have it also destroy on client, AND not persist on save
 - Environment controls (not persisting in save yet)

Fix Movement Bug where player keeps running after releasing control

(04/21/2024)
UI Fixes
 - Refactor ui toolkit elements to separate absolute and relative position
 - Fix inventory menus

Touch Up working with items
 - Make sure the models are appropriately scaled
 - Remove all logic from before client-server separation

More Debug menus
 - Screen that shows the overall status of client scene
  - Number of entities
  - Maybe a listing of each one?

Another pass at grass
 - Fix shader being camera position independent (if you move the wind moves with you lol)

Make cursor less jittery (ie always up to date with where the camera is facing)

Physics Tweaks

Fix controls not repeating

(04/22/2024)
Data Cleanup
 - Clean up audio
  - Fix ui audio effects having play times that are wayyyy too long

(04/30/2024)
Fix grass not generating for closest tiles
 - There is no distance check in the ClientFoliageManager

(05/04/2024)
Ground Texture Atlas system
 - Basic atlas working with marching cubes
 - Make it work with triplanar mapping

(05/05/2024)
Synchronize attack tree over network

Clean up data
 - Tree Model Paths


(05/07/2024)
Ground Texture Atlas system
 - Refactor to block main thread only when creating the actual texture object (load buffered image separately)

First Person Camera


(05/15/2024)
More consistent terrain editing

(05/16/2024)
Reintroduce strafing

(05/??/2024)
First person render pipeline
 - Properly compositing onto main texture
   - Potentially look at storing the framebuffer for the pipeline in the pipeline class itself

(05/19/2024)
Character movement in particular feels off
 - Bring back strafing
 - Fix interaction with networking
  - Potentially facing vector on server misaligned with client facing vector? - Nope! They're perfectly aligned
  - May be in the ground move tree itself the hard setting velocity instead of applying a force is causing weirdness

(05/23/2024)
Viewmodel
 - Fix hands placement
 - Animations defined in data file

(05/24/2024)
Viewmodel
 - Add animations queues in btrees
  - idle
  - jump
  - ground movement
  - land
  - fall
  - attack

Attaching items to hands in first person

Fix grass placement

(05/26/2024)

VERY rudimentary first person documentation to give basic navigation to relevant files.

Fix attacking looping and freezing the character in place
 - Was using delta real time (0.02ms) instead of delta frames in server and client attack trees (1 frame/simulate() call)

Document hitboxes
 - Documented how it works currently and the architecture we want to move towards

Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
 - Need to have an object attached to creature that stores the rigid body
  - When creating the creature, for each hitbox, create shapes for the rigid body
 - Attach the overall object to the creature entity

(05/27/2024)

Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
 - Synchronize hitbox positions each frame

(05/31/2024)
Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
- Write custom callback for the collision engine for just hitboxes

(06/04/2024)
Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
 - Need to have an object attached to creature that stores the rigid body
  - When creating the creature, for each hitbox, create shapes for the rigid body
 - Attach the overall object to the creature entity

(06/07/2024)
Hitboxes work to properly use capsules (constantly destroy/recreate every frane because od4j doesn't allow rescaling :<)

(06/10/2024)
Add flow for demo menu/level loading

(06/11/2024)
Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
 - Properly calculate the capsule that bridges from previous frame to current frame hitbox location
 - Write custom callback for the collision engine for just hitboxes
Fix player model side-jog animations

(06/13/2024)
Fix newly exported model not rendering correctly
 - All bones are passed into the shader every render call, the bone values must be corrupted
 - NIGHTMARE BUG
Fix equipping an item spawning two items

(06/14/2024)
Fix inventory ui not closing when you hit 'i' key (will need to update utility functions to manage input mode so you're not doing it in callback)
Develop debug ui for equip points

(06/18/2024)
Block state synchronization between client and server
Highlevel netcode gen updates
 - Fix formatting for imports so it doesn't put an extra newline
 - Fix formatting for function generation so it DOES put a new line when the function isn't being replaced
 - Convert fields to using id variables so all behavior tree classes don't get git updates every time the ids shuffle
  - Furthermore, keep tracking of the existing ids for trees and fields and only generate ids for new trees and fields
Fix client gravity tree name

(06/19/2024)
Transvoxel implementation
 - Begin work on transvoxel algo

(06/21/2024)
Transvoxel implementation
 - First working implementation of mesh generation for transvoxel chunks (architecture of adding it to drawcellmanager still todo)

(06/22/2024)
Transvoxel implementation
 - Scaling LODed chunks by lod level

Fix items falling below the ground
Fix server always rotating entity to face client camera -- should only be changing movement vector
Probably some kind of tutorial text

(06/??/2024)
Start working on script engine documentation/design

(06/27/2024)
Animations
 - 2H Sword Hold (3rd person)
 - 2H Sword Attack (3rd person)
 - 2H Sword Block (3rd person)
 - 2H Sword Hold (1st person)
 - 2H Sword Attach (1st person)
 - 2H Sword Block (1st person)

Audio
 - Sword Swing
 - Sword Sheath
 - Sword Unsheath
 - Sword Hit Metal
 - Sword Hit Flesh

(07/02/2024)
better scaffolding for scripting engine with hooks for equipping items, spawning entities, pausing/resuming play, etc
Redo hitboxes to have capsules and also chaining between frames (but not between swinging the camera around)
 - Introduce block hitbox (blockbox) type
 - Sour spot, sweet spot for damage hitboxes and hurtboxes

(07/03/2024)
Clean up framebuffer class
 - Comment everything
 - Error checking
Overhaul opengl error checking generally (as in, actually use it)
 - Add all over the place to help debugging graphics issues
 - Handle uniforms being sent to shaders that don't have the uniform defined
Extracting pixels from framebuffers

(07/07/2024)
Work on testing

(07/16/2024)
Scene Loading Refactor
Hooking into engine from script-side

(07/19/2024)
Element Manager debugging and logic simplification
Hooks debugging
On add item to inventory hook
Hook manager debugging

(07/20/2024)
Properly drill static classes to script context
Expose framestep control to script side
Show tutorial hints from script side
TextBox element (not editable yet)
Word element
Text Wrap handling
Overflow handling

(07/21/2024)
AI scaffolding
Attacker ai tree

(07/24/2024)
2 Hand katana
Switching between first and third person
Devtools for updating first person attachment rotations

(07/26/2024)
Viewmodel equipped item rotates inverted to bone rotation
Utility object for reducing boilerplate when writing btree transitions that just play an animation then transition
First animations flickering in first person (enforce animation priority requirement)
Debug third person animations flickering (attachments not reflecting animations that were played that frame)
Small data fix
Refactor spawn point to not be global
Synchronize objects between client and server
Synchronize life state between client and server

(07/27/2024)
Small bugfix with blocking
Refactor math to be client/server agnostic in attach utils
Attach utils fixes for first person handling

(07/28/2024)
Tear out first person rendering pipeline
Partially fix first person attachment to viewmodel
Creature data validation
Unify animation format data on disk
Leverage animation masks to block while moving
Remove Airplane movement system
Fix client-attached models to viewmodel drawing on previous frame
Alignment work for human right hand

(07/29/2024)
Option to load all cells on init scene file
Insidious Entity protocol bugfix on server
Refactor network protocols to enforce async/sync split

(07/30/2024)
Fix depth texture for shadow rendering
Fix eyebrow weights on human model

(07/31/2024)
Massive netcode gen refactor
Server synchronization manager
Jump tree synchronization
Fix jump bugginess

(08/01/2024)
Fix server entity camera rotation
Fix world bounds application
Bone debug rendering

(08/02/2024)
State transition packets and support on both client and server
State transition utils interrupt support
Block animation cancels immediately on first person model
Bone-attachment fix
Fix data for viewmodel hand.r equip point
Support audio on state transition
Audio on block state transitions

(08/04/2024)
Strafe/backpedal movement speed multipliers
Properly equipping/unequipping 2hand items

(08/08/2024)
Client surface-audio system
Sound effects on footstep
New sound effects for movement
Jump sound effects
Don't play walking audio when entity is jumping
Server alert client on collision
Sound effect on sword hit
Fix walk animation not stopping on state change in ground movement trees
Fix server entity not rotating when ai commands it to

(08/09/2024)
Math overhaul
 - Engine defined origin, up, and left vectors
 - Redo math for camera calculations
Rotate player models to face correct direction
Remove BLENDER_TRANSFORM token
Redo of creature-spawning logic to support including attached items
 - Items do not necessarily send from server if they are in the scene! They must also not have a parent
Ability to serialize/deserialize a creature with equipped items
 - Serialize
 - Deserialize
 - Send to client
 - Receive from server

(08/11/2024)
Sending initial synchronized state on player connect to chunk
Pass at client-server physics synchronization

(08/12/2024)
Fix server animation playing at reduced timescale
Block override concept for hitboxes
Block sfx
Fix server hitboxes freaking out at animation end
Fix hitcapsule misalignment
Always upright tree
Fix upright tree clearing linear force/velocity
Movement tweaks

(08/13/2024)
Hitbox support offsets now
Multiple hitboxes per bone
Potential fix for client concurrency issue
Debounce attack collisions
Remove entities on death
Remove movement restriction on attack
Update frame data for first person 2h sword swing to align with third person better and make it feel snappier
Fix katana is frustum culled incorrectly
 - This is because the data is incorrect (blender has an animation already applied, need to push down)

(08/14/2024)
Fix rendering pipelines being broken when the katana is not drawn
Fix deleting entities on server not properly deleting the whole entity
Windup and Cooldown animations on 2h block
AI rearchitecture to actually do behavior trees now that I know what they are

(08/15/2024)
True behavior trees
 - Decorators
 - BT Timer service
 - Meta nodes
 - Colections
 - Combat
Melee ai using BT framework
Server block nullchecks
Melee AI tweaks
Walk tree
Slow down strafe movement somehow
Better creature damage sfx
Audio debugging
Play animations offset by network delay
 - Attack animation
Fix viewmodel animation framerate

(08/16/2024)
Fix server not starting
Fix client disconnection causing wrong socket to be closed from server
Fix build tooling, scripts, etc
Launcher fixes
Fix inventory control state suggestions not working correctly
Fix unequipping item hard crashing engine
Fix terrain editing hard crashing engine
Fix attack animation mayyybe caching on non-local clients ??
Fix sword double-swing
Fix physics freakout for vertically aligned entities
Fix AI components not resetting on turning off ai manager
Fix broken rendering pipeline when creating new level
Fix ui alignment for item panels in inventory menus (ie dont have to place in corner)
Netconfig file support
Fix rotation not sending correctly on initialization of creatures on client
Fix F2 menu not regaining controls when Xing menu instead of hitting F2 to close
Logger toggle debug window

(08/17/2024)
Foliage serialization/deserialization

(08/18/2024)
Cursor transparency, cloud transparency
Small oit shader work

(08/19/2024)
Disable cloud ring
Undo oit shader work to fix build pipeline
Testing rearchitecting

(08/20/2024)
Update image assert method
Jenkins save and display captured images when failing a rendering test
Setup MantisBT

(08/22/2024)
Fix rendering testing on jenkins
Fix entity scene test spinup by preventing networking sockets from closing
Thread manager/tracker + properly closing threads on engine close

(08/24/2024)
Resetting globals for multiple test runs from coding environment
Return to main menu from ingame
Tagging threads in manager
Quitting to main menu

(08/25/2024)
Server utilities provided to scripting engine
Spawn player character with weapon when testing levels

(08/26/2024)
Automated testing fixes

(08/28/2024)
Fix scene state not resetting on engine shutdown
Fix threads not closing on engine shutdown
Update jenkins config to rerun tests with all logging turned on if maven hard crashes while testing
More logging
More OpenGL error reporting
Fix shader uniforms caching due to same pointer, different value
Fix Yoga double free bug
Explicit error on setting uniform to unsupported type
Methods for getting buffers from mesh

(08/29/2024)
use STBImage instead of ImageIO
Signal passing architecture
Services architecture

(09/01/2024)
Lots of jenkins pipeline work (finally got it mostly consistent!)

(09/02/2024)
Engine mostly building reproducibly/consistently/testably
Framebuffer fixes
Attack tree integration test
Shadowmap fixes
Shadowmap pipeline debug menu
Shader storage refactor
Unit definition/spawning
Hitbox updates for katana 2H
Fix bug with geometry references not properly flipping in server hitbox collision callback
Fix level editor entity tree not re-rendering when an entity is deleted
Fix server entity not rotation when first person camera rotates
Entity details debug menu Data View

(09/03/2024)
Documentation reorganization
Better jenkins documentation
Include jenkins dockerfile in repo
Better model for gameobjects
Server synchronization of sprint tree
Fix potential bad path for item state lookup
Fix multiple ItemUtils NPE bugs
Fix AttachUtils NPE bug
Work on testing stability
Viewport loading

(09/04/2024)
Fix viewport realm server data cell not being flagged as ready
Fix NPEs on property lookups on entities
Unit tests for above
Fix physics debug rendering pipeline
Update human collidable data

(09/05/2024)
Fix AI tracking deleted entity

(09/06/2024)
work on debugging framebuffer bug

(09/07/2024)
par_shapes integration

(09/08/2024)
Directed graph datastructure
Framebuffer + RenderingEngine tests

(09/09/2024)
Fix obnoxious opengl state caching bug w/ framebuffers in junit context
Recoil on attack block
Movement speed penalty on swinging sword
Fix fall tree blocking attack starting on server/Fix falling tree not always deactivating on server
ParShapes integration fix
Fix server ground movement tree playing animation over falling animation
Fix cursor visuals
3D spline implementation

(09/10/2024)
Fix jump/fall/land animations being buggy and inconsistent between client/server
Remove extraneous println's
Fix empty item slot not showing underneath dragged item
Fix voxel selection popout rendering, nav logic

(09/11/2024)
Voxel updates (+new type!)
Fix return-to-title button from ingame main menu
Fix F2 controls bug with title menu
ChunkOctree implementation
Octree approach for rendering foliage on client
Foliage scaled cell generation
DBody key refactor
Audio for grass/leaves
Re-enable UI test
Fix foliage chunk-level radius being too low (causing grass cutoff)
Turn on anti-aliasing for font generation

(09/12/2024)
Alias fonts
Fix audio handling bug
SSBO implementation
Rearch instanced actor
ParticleService implementation
Fix SSBO implementation misusing BufferUtils
Massive entity spawning refactor to collapse entity type permutations
Move AttachUtils package
Move Scene package
Crate object
Data cleanup
Delete Structure entity type
Physics work

(09/13/2024)
Physics debugging
Fix terrain physics updating on server
Lots of animations
Organization and documentation around creatures

(09/14/2024)
More animations
Skeleton 3rd person model
NPE fixes in hitbox collection state + commonentityutils
Debug menu ability to play animation locally or on server
Documentation updates

(09/15/2024)
Fix movement packet timing bug
Fix all items spawning above player head
Fix items falling below terrain
Fix gridded data cell manager saving attached items on realm save
Fix render signals caching between frames (not reseting global flags per usual)
Capture image from opengl to pixel-check
Add ui tests
Fix image panel displaying texture flipped
Fix drag event relative positions
Fix slider behavior
New character customizer component

(09/16/2024)
Fix Scrollable position miscalculation
Fix equipped item packet not being sent to creature's player
Component-ify natural and equip inventory menus
Post Processing Pipeline w/ blur
Blur on open inventory/main menu in game
Remove legacy UI handling of positioning -- entirely reliant on yoga now

(09/17/2024)
Framebuffer position drilling
Redesign inventory menu
Remove deprecated ui constructors
Refactor menus to package under client
Fix buffered scrollable regression in above work
Memory fix
Start proliferating audio through ui
Item-based ui audio
Better sfx for opening/closing inventory menu
Different title menu audio
New katana icon
UI fix
Initial hitstun implementation

(09/18/2024)
Migrate documentation
Netcode generator qol fixes
Combat Stances Component
Remove geometry shader support
Work on clustered lighting

(09/19/2024)
Cluster lighting completed
ClientPointLightComponent
Small rendering info display
Fix terrain editing across chunk borders on server
  - This is because the ray on the client doesn't intersect at the border (because the physics generation isn't working on chunk-end)
  - Also because the client doesn't scan border chunks to see if they should update
Fix shader program bug with no-bone variants
Particle Emitter work (it renders! it has management!)
Texture atlasing for particle system
Texture atlas caching
Point light offsets

(09/20/2024)
Light manager buffer overflow bugfix
Particle Emitter data definitions
Torch w/ particle + lighting
Fix text input collapsing while typing
Voxel selection item
Fix ui elements not storing default discrete world size on level editor menu
Fix skeleton right strafe
Fix ui audio playing at world origin

(09/21/2024)
Snow voxel type
Move animation work

(09/22/2024)
Hide viewmodel hands when idle
Autodisabling implementation
Fix static friction coeff causing player to slide on shallow slopes
 - Turns out it needed auto disabling logic
Change timescale for test
Refactor graphics entity definitions to be under dedicated object
Tree model debug menu

(09/24/2024)
Make voxel selection panel have better spacing
Partially fix idle animations for human + skeleton
Directional lighting color control
Skysphere affected by directional lighting

(09/25/2024)
(09/26/2024)
Work on toolbar refactor

(09/27/2024)
Toolbar state mostly working
Filter toolbar slots out of equip menu

(09/30/2024)
Fix attack tree checks
Disable client equip tests until can review
Toolbar scrolling
Items executing script engine hooks on usage
Fix server attack tree regressions
Editing voxels hook and extensions for voxel palette item
Entity spawning palette item actually working via hooks
Model fix for shovel, shuffling item models
Work on separating procedural tree generation steps


(10/16/2024)
Camera offset definitions in entity files
Non-Lsystem pine tree
Potential fix for ground audio bug

(10/20/2024)
Fix SP debug launcher actually entering world
Fix virtual scrollable clipping logic
Fix ui scaling on abnormal monitors
  - This is literally just a function of the settings file not being updated for different resolutions
Fix inventory null pointer check on virtualaudiomanager

(10/21/2024)
Fix inventory message for undefined id on client
Fix movement audio service when audio engine disabled
Fix idle animations (for katana)
Fix equipping sword on toolbar
Add punching/unarmed combat
Fix script spawning NPE

(10/22/2024)
Editor movement system + editor entity
Ability to disable physics
Inspector item
Fix alignment on spawn palette menu
Add padding setters to ui kit
Refactor ui components to be under client folder
Scaffold out recipes data
Initial implementation of tooltips

(10/23/2024)
Tooltip improvements
Terrain generation testing realm
Biome data definition
Notes on biomes
OpenSimplex util class
Chemistry system collision engine instance on server and client

(10/24/2024)
CraftingPanel implementation

(10/27/2024)
World gen docs + ideas
Update default resolution in config

(10/28/2024)
Fix main menu ui test
Refactor math utils to spatial math utils to make room for more fundamental utils

(10/29/2024)
Begin drawcellmanager rewrite

(10/30/2024)
Integrate transvoxel algorithm
Document NetArranger
Break out datastructures library

(10/31/2024)
Fix some transvoxel bugs
Optimizations
Refactoring generator code

(11/01/2024)
Optimizations
Fix transvoxel xnzn edge generation

(11/04/2024)
Major draw cell optimizations
Fix normals calculation in transvoxel rasterizer
Fix draw cell LOD joining bug
Fix draw cell bounding sphere calculation
Hill Gen tweaks

(11/05/2024)
More normals fixes for terrain

(11/06/2024)
Fix server caching of terrain
Implement server side striding of chunk data

(11/07/2024)
Add quarter, eighth, and sixteenth scale chunk gen
Add network pressure capping
Add stratified updates that prioritize game chunks
Add message deduplication
Fix LOD bounding sphere calculation
Hook up content generation to test generation realm
Reorganize biome data

(11/08/2024)
Player and entity tracking overhaul in grid data cell manager
Add more profiling points
Height manual adjustment for content placement
Fast track client draw cell manager cell evaluation
Fix foliage rendering
Fix async physics gen on client
Convert volumetric + shadow pass to entity tags

(11/09/2024)
Fix eighth res chunk radius
Fix chunk gen debug ui regenerate button
Script-defined chunk generators
Script engine synchronization utility
Convert ScriptEngine to service
ScriptEngine full re-initialization signal
Add surface width to test generator
User setting to toggle foliage manager
Fix client terrain cache lookup bug
Memory debugging work + update memory flags in launch file

(11/10/2024)
Attempts at optimizing ClientDrawCellManager
Server-driven homogenous tracking to accelerate client draw cell manager
Face data fill bounds check optimization
Data fill skipping optimization
Homogenous node skipping optimization
Remove evaluation by distance
Squared distance optimization
Distance calculation caching optimization
Two layer destruction optimization
Non-reallocating list iteration for children in draw cell manager optimization
Split leaf/nonleaf tracks for node evaluation optimization

(11/11/2024)
Chunk data now stored/transmitted in 17 dim instead of 16 dim (Thereby cutting down on network/storage cost)
Unique actor concept
Asset manager pipeline to destroy models/meshes/textures
Terrain model freeing on destruction
Potential physics destruction fix
Join propagation further up tree
Lower client cache size (to fight memory stalling)
Manual free button on memory debug window
Passing chunk data between nodes
Fix homogenous value propagating from chunk gen to client cache
Fix homogenous value joining on client

(11/12/2024)
Work to optimize javascript chunk generators
Solve curve SDF

(11/13/2024)
Fix shadows on terrain
Work on an anime-style mountain generator
Work on making chunk reloading less obvious
Fix default chunk generator
Fix unit test
Fix missing data on katana item
Ability to replacing a player's entity
Fix shadows on main shader
Button to swap between player entity and editor entity
Fix physics being disabled on editing a level
Fix entity repositioning bugs + Enable recursive logic
Fix hitbox manager handling of destruction
Fix gridded data cell manager player + entity position handling and refactor to simplify logic
Add debug options for entities to reposition on server
Item data refactor to make it recursive
Loot pool data definition
Implement items dropping from entities on death
Officially mark transvoxel algo as solved
Fix shovel not having texture
Re-enable foliage manager
Fix chunk value lookup

(11/14/2024)
Workbench model
Item usage definitions
Way to define auto generated spawner items (ie item form of a furniture item)
Define interaction distance explicitly
Fix client side store-in-inventory transform failing to destroy world-side item
Fix gravity trees failing to handle missing collidables
Fix token NPE
Physics editing debug tab
ControlHandler refactor to break out callbacks into dedicated files
Add concept of interaction definition in common entity type
Fix bug with entity ray casting selecting player entity
Fix crafting menu yoga appliation logic
Workbench can open crafting menu
Fix character customization panel layout

(11/15/2024)
Script engine preloading
Fix YogaUtils.refreshComponent breaking when passed null window
Remove FontUtils .testcache creation
File watching scripts source dir
Fix STBImage flipping bug (set flag statically)
Update visuals on pine tree

(11/16/2024)
Mountain generation work
Implement crafting
Fix image panel test
Add explicit kinematic flag in data
Fix hitbox destruction logic to not double-delete

(11/17/2024)
Mountain generation work
Fix flickering chunks on unload
Fix draw cell distance cache busting on far distances
Fix skybox not updating position with player entity
Add Scene shorthand for registering runnables as behavior trees
Re-integrate frame time tracking
Solve y last in chunkgen to optimize height calc

(11/18/2024)
Defining noise functions in config files
Invoking noise functions from noise functions
Voxel and Heightmap generators based on noise functions in files
Set all client terrain rigid bodies are kinematic
Add caves
Tweaking test2 noise definition
Add sleep to server socket thread

(11/19/2024)
Fix draw cells not deleting once all children have reported generation
Fix server data cells unloading before ready state
Fix terrain chunk generation trying to generate rigid body for no-vertex cell
Fix server homogenous chunk check on generation with variadic weights
Optimize data passing from voxel rasterizer to model generation
Vector pooling in transvoxel rasterizer
Fix invalid normals from transvoxel rasterizer

(11/20/2024)
Design storm engine icon
Fix edge-polygon generation for invalid cases
Add engine logo to title menu
Use STBttf for font loading/remove dependency on java.awt.fonts
Fix font height lookups in string carousel, text input, and word
Fix invalid audio source ID bug
Up threshold on tests for approximate color matching
Refactor signal service subscription mechanism
Add main thread signal service
Fix backing out to main menu
Refactor ShaderProgram -> VisualShader
Break out shader uniform setting into shared file
Fix being able to walk off far side of the world (ie in level editor)
Fix chunks saving to disk in wrong stride
Fix server terrain generation lock spinning on loading terrain from disk
Fix crosshair NPE when camera undefined
Fix ray casting entity filtering bug
Fix ClientTerrainManager concurrent editing bug
Fix point lights not being cleared from buffer after deletion
Remove point lights from skeleton + human

(11/21/2024)
Change grass texture
Fix allocations on FoliageChunk child iterations
Reduce near clip to remove flickering on far chunks
Complete overhaul of foliage management
Fix foliage inconsistently placing on varied terrain
Fix foliage texture wrapping when drawing too many foliage items
Fix memory management in asset loader for queued assets
Add functionality for texture freeing from asset manager
Increase foliage chunk range
Swtich collision engine to use reentrant lock

(11/22/2024)
Foliage manager non-collision engine height lookups
Fix foliage manager not respecting graphics settings
Small noise sampling refactor
Fix test data for main menu render test
Change voxel weight reporting from server to align with foliage
Use jenkins data for unit test temporarily
Disable tunnel noise to align foliage better + adjust manual value for foliage placement

(11/23/2024)
Clean up top level folder
Break out dependency documentation into a dedicated file
Fix terrain editing
Fix foliage not updating at edited chunk
Dedicated control for opening crafting
Break out network imgui debug window
Move text files to documentation pages
1000th commit milestone!
Pine tree collidables
Fix human animation bad data
Fix script entity spawn utils not spawning on max cursor distance
Block mesh generation
Add asset manager support for queueing models asynchronously w/ promised path
Add promised path support to queued textures
Code formatting on queued asset classes
Refactoring server side of terrain management
Add server manager for block chunk data & management
Add endpoint to request strided block data
Add client side handling of block endpoint
Add server-driven block rasterizer with LOD
Convert PhysicsEntityUtils to use generic interface to load tri geom rigid bodies

(11/24/2024)
Fix winding order on block meshes
Add texture atlasing to blocks

(11/25/2024)
Remove unused import
Geometry mesh generation class
Cloud shader
VisualShader refactoring
VisualShader #include macro implementation
Fix particles not spawning in correct positions

(11/28/2024)
Fix block not firing
Fix reentrant locking bug
Convert server physics cell generation to executor service
Simplifying physics cases
Allow variable collision bits for collidable entities
Autodisable terrain colliders
Lower grass radius
Work on diagnosing data cell misalignment with entities
Fix gridded data cell manager loops iterating incorrectly
Implement multi-biome sampling for surface heightmap
Nearest biome sampling for content generation
Fix recursive delete not actually recursing
Add floor voxel type
Singleplayer menu layout work
Remove explicit garbage collection call
Actor panel additional functionality
Better style for character creation menu
Fix AABB calculation from assimp-loaded models
Fix singleplayer launching at all
Store characters in database
Spawn characters from database
Fluid spawning item
Fix fluid shader
Re-enable fluid simulation
Remove concurrent datastructure usage in cell management
Auto close prepared queries that are iterated over
Fix viewport loading

(11/30/2024)
Water spawner firing on repeat
Convert server side fluid storage to using buffers
Move cellular automata simulator package
Update fluid chunk dimensions to correspond with C code
Update release build system to include shared libraries
Break out solver consts

(12/01/2024)
Move header file generation location
Add more debugging tools for fluids
Remove conditional update check in fluid sim
Explicit memory management of fluid chunk cache buffers
Fix GriddedDataCellManager memory leak caused by physics and ConcurrentHashMap
Fix fluid sim null pointer bug with unallocated chunks
Fix fluid sim NP bug with skipped chunks
Fix fluid chunk indexing from java side
Memory pooling for chunk buffer allocations
Server homogenous fluid chunk declarations
Unsleeping fluid chunks on edit
Conditionally rasterize fluid chunks based on homogeneity
Awake fluid chunks based on neighbor state
Fluid chunk conditionally send update based on sleep status
Fluid simulation normalization ratio
Stabilized static liquids
Integrate CMake + Ninja

(12/02/2024)
Add testing to native code side
Add native testing step to jenkins pipeline

(12/03/2024)
Native code building correctly in jenkins pipeline
Refactoring native code
Fix gravity tree not deactivating when body is disabled
Refactoring world menu generators into dedicated class
Fix single player loading
Spawn player in center of single player world
Elevation fix + use correct voxel generation in SP worlds
Fix cache key collision bug
Fix homogenous flagging on cell managers
Fix more cache key collision cases
Store terrain chunk files in dedicated folder
Start to standardize on doubles for positional data
Fix placing character at end of world bounds
Bump ode4j version
Small collision engine code formatting

(12/04/2024)
Fix testing apparatus for native code on windows
Fix doxygen also pointing at native code lib folder

(12/06/2024)
Fix arena loading
Refactoring fluid sim code
Refactoring fluid sim headers
Refactor native test code under src/test
More test file refactoring
Native fluid chunk dispatcher
Dedicated native fluid simulator
Define cellular simulator
Fix fluid dispatcher array deref
Bounds array allocation
Store world pos on native side
Native bounds solver
Fix cellular sim bounds check
Add hard walls to bounds solver

(12/07/2024)
Cellular bounds transfer properly
Fluid chunk terrain bounds transfer
Cellular transfer behavior work
Native math utils
Frame tracking on native side
Fix memory leak in client fluid data chunks
Work on cellular sim determinism
More cellular determinism verification
reintroduce sleeping code
Cellular bounds desync fixes

(12/08/2024)
cellular stability work

(12/09/2024)
cellular stability work
Add grid2 sim files
grid2 functioning + lots of tests
multigrid implementation

(12/10/2024)
Implement conjugate gradient solver
Fix density advection dx being wrong
Update gravity const
Add bounds setting to velocity projection

(12/11/2024)
Fix multigrid solver
Fix conjugate gradient solver
grid2 starting to look realtime!

(12/12/2024)
Pass environment data through grid2 solver
Save assembly on compile

(01/24/2025)
Delete old server physics cell on terrain edit
Fix server terrain physics entity positioning
Disable client fluid draw cell loading gate
Properly differentiate local/world bone attach point calculation
Floating origin implementation for collision engine
Improve initial asset loading performance
PoseModel creation for basic shape types
Procedural block item types

(01/25/2025)
Update flush method in tests to account for faster loading
Allow pre-setting queued asset path
Fix asset manager texture queueing (was not pushing queued textures into loaded texture map)
Model for single block (hooked up to item as well)
Single block model custom shader
Data-defined actor per-mesh uniform overrides
Proper textures on each block item

(03/06/2025)
Fix bugs with block chunks not being marked as non-homogenous after editing

(03/24/2025)
Fix entity swap button resetting position

(03/26/2025)
Fix block meshgen not incrementing indices correctly
Fix block meshgen algorithm iteration bug
Add debug control to swap first/third person
Setup scaffolding for drag-and-drop asset handling
Editor mode asset file drag and drop
Editor mode pauses simulation
Tabs for editor view
ImGui drag-and-drop into viewport functionality
Normalized mouse pos lookup function

(03/27/2025)
Disable fluid sim for performance
Increase fall delay
Rearchitect foliage rendering to combat grass pop-in/pop-out
Increase sim range to fight game object pop-in
Filter select-able saves on singleplayer screen to full game saves
Increase number of invalid openAL IDs
Fix audio engine not cleaning up audio sources
More accurate block test types
Block meshgen work
Delete deprecated foliage manager
Title menu navigation work
Fix UI Testing debug menu
Fix orphan tooltips from inventory screen
Code formatting
File-controlled foliage coloration
Fix TextureInstancedActor packing data texture incorrectly (column major instead of row major)

(03/28/2025)
Grass height variance with control from ui + file
Fix block mesh ray casting bug due to trimesh overlap
Fix block mesh samplers incorrectly buffering
Fix block mesh gen algorithm merging quads incorrectly
Make HitboxManager threadsafe
Don't simulate extra frames if we're taking too much time
Fluid sim toggle on client side
Lower duplicate physics frame count
Various code cleanup
Stop sleeping during high frame time
Actor bone spatial data caching for performance
Volumetric pipeline optimization
Collidable tree simplification
Near collision callback streamlining
Reduced mid-range chunk LOD
MicroSimulation performance checks
Small hitbox collection optimization
Remove excess collision call on client
Move profiler logging
Disable kinematic colliders on creation
MainContentPipeline reduce allocations
Move AI simulation to server level from chunk level

(03/29/2025)
Optimize ray casting near callback
Chunk file operation threadsafing
Multithread entity creation on server cell creation
Network message object pooling
Threadsafe EntityDataCellMapper
Code cleanup
Small ServerAttackTree fix (for when not holding an item)
Work on optimization

(03/30/2025)
Reorganizing terrain data
ServerGroundMovementTree concurrent modify fix
TransvoxelModelGeneration allocation reduction
More allocation reduction
Vector pooling
Simplify WorldOctTree to reduce lag with large node counts
Increase memory allowance, mostly fixed latency while walking around
AssetManager streaming budget
Better chunk position hashing algo
Hills generator work
Fix foliage manager and cells confusing worldpos and absolutevoxelpos
Farther draw radius

(03/31/2025)
HillsGen visuals work

(04/01/2025)
Falling min frames to activate increased
Reorganizing world creation ui file
UI panel work
World creation options work

(04/02/2025)
Homogenous worlds actually generate-able
Two EXCELLENT rock textures
Fix rock2 texture
biome floor elements controlling noise generator's voxel selection
Plains (rock) biome
Lore message resend from client on failure
More surface selection work
Noise control from biome definition

(04/03/2025)
Add rock and stick items
Update ServerEntityUtils.repositionEntityRecursive behavior
Add bush entity
Add bushes to forest biome
Make foliage data files recursive
Fix bug with toolbar not unequipping items when moving to empty slot
Break out interaction ray casting into dedicated collision engine object
Bush hitbox
Harvesting interaction happens on server
Fix PoseActor position/rotation caching bug
Bush drops sticks
Unarmed combat

(04/04/2025)
GriddedDataCellTrackingData created
Reduce allocations in GriddedDataCellManager methods that loop cells
Implement max distance for queueing for simulation
Client hitbox body destruction based on distance from player (for performance)
ServerEntityUtils move entity function properly transfers entity tags now
Fix ServerAttackTree freezing bug
Fix visually attaching item on server creating item at 0,0,0 on init (thereby creating a new datacell if its not nearby)
Fix test failure debug render writing to file
Recursive recipe data files
ServerEntityUtils recursive move function potential bugfix
Harvest bushes kills them
Fix harvest interaction targeting client player entity on server side
Static rocks which harvest into rock items that spawn in forest

(04/05/2025)
Stone Axe item
Fix human data for RH sword slash attack moves
Cursor only for specific items
Added shovel (works inversely of how you would expect currently)
Script cache busting on file modification
Block cursor
Rename editor enum to prevent type conflict

(04/10/2025)
UI work

(04/11/2025)
Fixing text input spacing (padding was taking up all of height)

(04/13/2025)
Transparency support for component decorations
Cloth sack model
Pickaxe model
More rock models
Voxel type work

(04/14/2025)
Inventory sounds for some materials
Inventory audio work
Comment out script engine file watching for testing purposes
Crafting panel recipe filtering by tag
Stone Axe crafting
ClientSynchronizationManager null tree fix
Update ui test data
Fix playerless scene updates
More tool recipes
UI test data fixes

(04/15/2025)
Cull unused assets
Update default texture
Sound effect on swinging fists/weapons
Queue loading audio file on creating virtual spatial source
Scaffold grid alignment data for entities
Remove old title menu items
Fix first person tree animation not nullchecking
Fix yoga not applying on item drop window creation
Fix client not destroying item on remove from inventory
Tests for above bugs
Fix rendering 3rd person model-attached entities drawing when in first person
fix database handling REAL type
CharacterService first implementation (abstracts away database calls from functions)
Store player entity position on save
Cull old SQL
Clarify content serialization pipelines for character vs non-character entities
Server send disconnect packet on disconnection
Associate each server connection with a character ID
Code cleanup
Fix dig script function
Fix shovel functionality
Terrain editing/saving work

(04/16/2025)
Refactoring server classes under physics package
Refactoring server classes under entity package
Refactoring server macro data classes
Refactoring some macro classes
Fix native code linking after refactoring
Obliterate old navmesh/pathfinding code
Integrate recast4j as pathfinding source
GriddedDataCellManager pathfinding solution
ServerTerrainManager nullcheck fix
Fix nav mesh construction params

(04/24/2025)
GriddedDataCellManager debugging tools
NavMesh bugfix
Fix jump trees not enabling physics body
Priority based foliage content placement
Hide cursor by default

(04/25/2025)
Macro data unloading/loading
Macro Character data serialization/deserialization
Macro character compression/decompression on chunk load/unload
ServerWorldData conversion methods are static now
Fix character data serialization only serializing dataType
Potential fix for realm undefined for server terrain physics entity
Fix macro character entities not being assigned ServerCharacterData
Audio on placing blocks
Audio on placing/removing voxels
Debounce item usage activations
Variable block editing size
Increase block cursor size
Block area selection

(04/26/2025)
Exporting block prefabs to compressed files
Minor block fab improvements
Fab selection tool
Fab selection tool actually loads fab files
Fix fab file reading
Fab tool can show transparent, loaded version of fab file
Interaction target tooltip at top of window
Interaction target tooltip shows entity target, voxel targets
Fix bug where inventory items aren't destroying physics on server
Align voxel lookups for movement audio and interaction targeting
Align block lookups for interaction targeting
Cursor logic around blocks
Block destruction work
Block cursor custom textures
New block type
Fix inventory item tooltip not clearing
More item icons
Toolbar preview ui element
Fab tool can place fabs
Fix block items not having texture
Disable failing ui tests
Pine trees drop wood blocks
More block types
Transparent blocks
Fix block meshgen

(04/27/2025)
Fab cursor rotation + actually place rotated fab
Fix terrain and blocks not saving/loading to/from disk
Fix swapping to/from editor entity in main game mode
Block cursor work
ChunkDiskMap code org
Filter procedural worlds out of level select menu

(04/28/2025)
Area selection utility
RoomTool item
Grid alignment actually aligns entity to grid

(04/29/2025)
Fix door tree physics
BlockFab metadata
Structure editing tab in editor view
Reduce physics generation calls on GriddedDataCellManager
Fab selection doesn't overflow anymore
Cleaning up parts of Main class
Spawn test structure in macro data on creation
Macro data structures block regular foliage generation
ServerBlockManager places macro data structures when generating chunks that contain them
Fix life trees creating state items when trees undefined in data
Unhashing ivec hashed keys in chunk caches
Unit tests for unhash func
Filter client entity list to terrain
Fix server loading full res chunks from disk as strided chunks
Debugging tooling for foliage manager
Refactor ProceduralChunkGenerator
NoiseVoxelGen work to make elevation values align with voxel values that are generated
Non-procedural voxel generation fix
Flower foliage item
Texture loading from model files (ie can load texture path from model file)
Clean up material class a bit
Cleaning up dead code
Fab items
Items keep charge state
UI renders charge state
Item stacking

(04/30/2025)
Voxel placement improvements
Smaller wall section
First proper house~!
Rect area selection expands each axis independently
Control to toggle mouse release (ie for eventual on-screen controls)
Undo state transition "fix" that broke harvest interaction
Undo voxel "fix" that messed up terrain smooth transitions
Craftable wooden floor fab
Using up charges destroys the item (including toolbar instances)
Crafting can consume charges
Products from crafting can add charges to existing items
Cache busting when physics sync pulls player entity TELEPORT distances
Lotta inventory work to bugfix charges, crafting, in-inventory items, etc
Collapse client hooks for item usage into main itemusage class
Debounce fab placement
Blocks stack
Item tag adjustments
Pine tree loot pool update
DB characters store toolbar items
Scaffolding for new macro-cognizating ai approach
AI work

(05/01/2025)
Many new AI behaviors
 - AI can seek out items
 - AI can harvest entities
 - AI can pick up items
 - AI can craft
 - AI can equip tools
 - AI can fell trees

(05/02/2025)
New AI behaviors
 - Place block
 - Build structure
 - Stops targeting trees if they're dead
Fix bug where sync messages eternally bounce if the entity was already deleted
Fix blocks not saving to disk when being ejected from cache
Block chunk memory pooling
Rename MoveToTree
Major pathfinding work -- breaking MoteToTree
Pathfinding tiling work
Refactor recast pathfinding classes

(05/03/2025)
Fix voxel pathfinding logic
Remove several usages of concurrent datastructures
Fix block chunk data allocation explosion
Fix pathfinding voxel hashing calculating

(05/04/2025)
Path to nearest valid voxel instead of a non-walkable voxel
Blocks factor into voxel pathfinding
Debugging pathfinding code
New AI behaviors
 - Will explore for resources if local ones aren't available
Async pathfinding
Fix interaction engine not properly destroying interaction data
ClientSynchronizationManager does not store deleted entity IDs forever
ClientSynchronizationManager un-deleted entity IDs when client receives creation message for an entity that was deleted
MoveTo tree doesn't overwrite published status
Fix AIManager.shutdown call not null checking
Small explore node height offset
Terrain items
Digging produces terrain item form
Terrain items can be placed to place terrain
Recipe adjustment + voxel work
Recursive recipe item sourcing solver that keeps searching if a recipe fails to source
Block pathing work

(05/05/2025)
Scaffolding for structure scanning service
Add JSoup dependency
Proof of concept of loading html to define ui
Styling support for html-defined menus
Dynamic html-defined menus support button elements that call a client hook when clicked
Dynamic menu navigation between windows
Starting formatting npc intro page
Code cleanup
More code cleanup
Cleanup some TODOs

(05/06/2025)
Refactor block actions
Placing fabs/blocks triggers structure scanning service
Try closing ai manager threads on engine close
Ability to explicitly spawn new characters into macro data and have them then spawn into world

(05/10/2025)
Debug ability to send characters off map
More windows for debugging work
GriddedDataCellManager simulates cells that contain creatures
Characters can pursue goal to leave sim range and the real entity is unloaded when they leave range
Move all character to database instead of macro data object
Major work on CharacterService
Move character utils classe to macro data
Move CharacterService to service package
Convert character service to singleton
Start moving character goal logic from behavior trees to macro level simulation
Goal macro data work
Shuffle where macro data is stored
Structures are stored in character data as IDs into macro data now
Item acquisition tree can be triggered by setting macro goal correctly
Macro sim triggers character to try to get mats to build structure

(05/11/2025)
Fix inventory handling in creature templates
Fix character data associated ids serialization bug
Block generation doesn't generate structures that are repairable
Fix character template inventory not clearing
Character data tracks associated player id
Player characters not simulated at macro level
Macro simulation inventory utilities
Build structure goal properly working from macro sim
Repairability check when repairing structure
Fix viewport loading
Database warning handling
In memory database support
Fix test utils creating characters
Fix server simulation starting prior to database connection
Scaffolding macro character simulation
Fix block generation thread filtering repairable structures
Catch errors in pathfinding threads
Remove old data classes
Update default block cursor size
Creature template -> object template
Fix foliage saving seed to template
Scaffolding growing component

(05/13/2025)
Fix character bug with loading into level
Multiple loot pool support
Crops replace loot pool on completion of growth
Display name for all common entity data
Enitity id collision validation
Full-sized wheat plants spawn in forest now
Natural inventory size explicitly defined in data
Fix server life tree missing nullcheck
Inventory interaction type
Debug ui for natural inventory on entity view
Can open ui menu to view inventories of other entities on client
Fix windows not resizing internal framebuffer when yoga changes their dimensions
Inventory window max width
Natural inventory panel wraps on width limit
Fix target inventory window clearing
Non-ideal implementation of multiple inventory windows drawing at once
Inventory packet for unified item transform requests from client
Server inventory utility for unified item transform requests
Toolbar ui uses unified item transfer flow
New inventory packet types
Unified container movement utils

(05/14/2025)
Break up InventoryUtils class
Update inventory utility logic
Fix styling for inventory panel ui element
Fix content serialization bug with attached items
Fix playing audio without item defined in natural inventory panel
Fix window framebuffer scrunching bug
Recipes for spawn items defined in parent entity
Spawn items have stack/charge
Spawn items respect charge state
Chest furniture
Interaction editing debug menu
Fix chest physics&interaction data
Break out collidable template edit into dedicated component
Fix virtual scrollable
Fix engine not closing when X button is hit on main menu
Sorting imgui debug windows
Grid alignment cursor
Furniture spawner items triggers grid alignment cursor
Grid aligned entity work
Grid alignment visualization work
Move around entity debug tab classes
Grid alignment data editing in debug menus
Grid alignment offsets work
Inventory state in non-creatures actually saves/loads to/from disk
Fix virtual scrollable mouse alignment for events
Remove warnings for fast loading
Work on debugging framebuffers
Work to unify opengl error reporting

(05/15/2025)
Explicitly scream if trying to bind a shader that is invalid
Support for freeing shaders
Utilities to free all of a type of resource
Slowdown entity tests to prevent VSCode from exploding when running tests
Fix static state caching between tests in visual shader construction
Safe executor service creation in non final static contexts
Fix reloading client world repeatedly
AI manager thread safeing
AI manager better error handling
Delete deprecated classes
Create ClientState global
Properly reset ClientState
Move clientWorldData to clientState
Move clientScene to clientState
Move clientSceneWrapper to clientState
Move clientConnection to clientState
Move playerEntity to clientState
Move playerCamera to clientState
Move global cursor entities into cursorState
Move lots of global state to clientState
Create ServerState global
Move realmManager to serverState
Move characterService to serverState
Move entityValueTrackingService to serverState
Move playerManager to serverState
Create EngineState global
Move threadManager into engineState
Move serviceManager into engineState
Move timeKeeper into engineState
Move signalSystem into engineState
Move some global state into rendering engine
Push settings into config variable
Move window pointer into rendering engine
Move microSimulation into serverState
Move fluidCellManager into clientState
Move engine flags under engineState
Move rendering flags under renderingEngine
Move database connection into serverState
Move more services into engineState
Room tool functionality scaffolding
Load main level only loads human now
Human uses capsule collidable
Physics debug render renders capsules
Fix virtual scrollable working with certain panels
Humans use capsule shape now
Physics numbers reworked

(05/16/2025)
Capsule-BlockChunk collision correction in collidable trees
Out-of-context typescript compilation that falls back to in-context compilation
Fix opengl bug
Fix typescript out-of-context compilation caching
Script recompilation work
HTML-defined buttons now directly eval in the js context instead of going through hook manager
Fix caching with deleted source files
Proof of concept of ui button calling engine code
Script engine direct access to joml vectors
Script engine passing objects back into methods successfully
Room detection within structures
Structure metadata organization
Break out room solver
Solve for entrypoints to room
Render entrypoints to current structure data rooms
Solve for entrypoints into room
Filter room solver to only include rooms that are enter-able

(05/18/2025)
Solve for furniture placement inside rectangular rooms
Visualize furniture placement slots
AssetDataStrings work
Invert rotation calculation for fab cursor
BlockFab io work
File dialog support
Editor structure tab uses file dialog to save fabs
Config saving
Structure data saving
Validate race data
Shuffle entity data package
Rename structure -> virtualstructure
Update hometown storage on characters
Filter test scenes out of level selection
Visualize interaction engine collidables
AIs build structures based on their character's race
Scaffolding jobs assigned by town to characters
Fix character position not saving on creating a player's character for the first time
Server utility to move entities scans to see if it needs to create macro data if moving a player's entity
Road macro data generation
Macro data is injected into voxel chunk generators
Close macro objects injected into voxel chunk gen instead of all data
Fix spline3d mat storing calculations when getting positions
Roads applied to terrain voxel gen
Support lack of macro data for chunk gens
Support multichunk select all blocks
More block types
New door furniture item
Commenting rendering classes
Convert Mesh.java to only use GL45
Material and Mesh cleanup work
Texture class cleanup work
OS data wrapper
Renderer code cleanup

(05/19/2025)
Renderer code cleanup
Shader uniform parsing from source code
Visual shader uniform location caching
Remove old uniforms from shaders and code to push uniforms
Break out shader material into dedicated library file
Materials read some properties from assimp data
OpenGLState VAO caching
Ambient light sent in dedicated variable to shader
Major lighting shader organization rework
Material albedo work
Editor entities don't use charges on placing blocks
Overhaul material loading - uses queued textures now
Transparent block support
Grab hardware data on init rendering engine
Delete unused class

(05/20/2025)
Calculate road-interection nodes for town layout
Place roads using line segments instead of splines
Town layout tries to connect intersection nodes with roads
Macro area objects don't store start/end bounds separate from aabb anymore
Unify functions to fetch/generate chunks on server
Macro data blocks terrain and block generation until it is ready
Content generation blocks for macro data generation
Roads block content generation
Properly layout roads along town points in TownLayout
Town generates a structure -- scaffolding for doing it across roads
Structures create foundations in terrain voxels
Place buildings along roads
Fix town placement structure-road intersection test


(05/21/2025)
Kinematic collision templates now use geoms instead of setting kinematic (on client)
Geom-only collidables on server

(05/22/2025)
Block colliders leveraging spaces
Scene view debug window
Debug view of entity colliders
Fix lookup bug in debug physics ui
Floating point starting to play nice with engine
Fix geom-body collision sending wrong vector to body
Per-mesh draw calls in batched static draw calls
Main content pipeline tracking
Error checking on mesh rendering (making sure not trying to draw 0-element meshes)
Fix generating rendering geometry for blocks/terrain with 0 elements
GriddedDataCellManager filtering optimization
StandardUniformManager implementation
Small fixes

(05/23/2025)
Town layout work
Macro broadphase filters prior to per-voxel macro data intersection checks
Block chunks properly stride

(05/24/2025)
Work on rotating structures
Towns spawn a population of characters when they are max-res'd
Hitbox synchronization work
LOD emitter service
LOD component that destroys far-away physics
visually LOD far away models support
Profiler work
Thread manager dispatching futures service
Bump LWJGL version 3.3.3 -> 3.3.6
Performance improvements
 - Block entities are back to using same mesh for all blocks, will eventually just have closest ones ONLY on client use multi-mesh
 - Accumulator draw calls do not use bones
 - LOD skipping in realm simulation
 - Shadow map pipeline only considers entities that are nearby
 - Character services references set of already-loaded characters when simulating macro data
 - Normal outline pipeline use draw accumulator
 - Reduced the visual LOD cutoff
 - Multiple visual LOD levels
 - AI does not simulate for low-lod server entities
 - Nearby entity lookup caching per frame
 - Far-away entities do not spawn physics by default
 - Clustering terrain draw calls
 - Reduce allocations in some rendering paths
 - Leverage standard uniforms buffer
 - ShaderUtils memory allocation improvement
Lod emitter service checker function
Mesh profiling
Upgrade target framerate

(05/25/2025)
Flag to enable/disable opengl error checking calls
Performance improvements
 - Foliage cell quits earlier
 - Behavior tree addition/subtraction from scene optimization
 - Reduce bones on LOD human model
 - Shallow clone on physics cell creation
 - More vector pool usage
 - Model anim calculations no longer allocate new matrix4d's
 - Undo most object pooling
 - ServerBlockChunkDiskMap uses short pool
 - Client leverages block chunk short pool
 - Client doesn't load physics on entities by default
 - Block chunk disk map writes files without allocating a buffer
 - Increase memory limit 6GB->8GB
 - Server block chunk disk map writes directly to output stream instead of inbetween buffer
 - No-allocation block chunk read/write in disk map
 - Fix client collidable memory leak
Increase human move speed
LOD components re-attach physics
VectorPool->JomlPool

(05/26/2025)
Major NetArranger architecture rework
No allocations on client receiving chunk of blocks or terrain
Meshgen acceleration structure for block meshgen
More profiling

(05/27/2025)
QuadMesh memory pooling
Load characters from save db when re-loading valid save
Fix memory leaks

(05/28/2025)
Server entities without collidables deactivate gravity trees
Fix texture map for lod human model
Properly show loading state when waiting on character list
Fix standard uniform buffer interaction with actor panel
Fix foundation generation for structures in chunkgen
Body synchronization includes enabled state
Fix upright tree continuously re-enabling bodies
Fix server collision resolution never triggering for second body
Fix macro structure rotation generation
Improvement to building placement math in TownLayout
Scaffold character job data
Moving data packages around
Fix client LOD component re-enabling physics positioning
Debug rendering of server physics objects
Server LOD component properly attaches physics bodies when the entity comes in range
Fix physics destruction on server via ServerLODComponent
More job data scaffolding
Config class cleanup
Fix jobs data, simplify block chunk gen algo
Convex y-aligned prism intersection checking
Fix block LOD chunk rendering (scaling not applying)
Scaffolding for laying out farm plots around towns
Region interface
Town layout non-statically generates farm plots
Y-aligned prism meshgen
Rendering prism regions
Utilities for turning mesh gen algos into renderable entities
Back off farm plots from roads by road radius
Farm plots properly save/load to/from disk
Farm plots place dirt
Farmland voxel type
Farm plots place farmland
More verbose loading display

(05/29/2025)
Scaffolding towns and character jobs data
Properly async-ify inventory/item related tests
Fix viewport interaction with lod emitter service
Fix most tests
Rendering engine legacy code reorganization
Code cleanup work
Logging for loading thread failure
Code cleanup
More tests
Move actor masks into dedicated package
Actor code cleanup
Refactor animation logic into dedicated actor class
Simplify draw call logic
Error report on window.java
Delete ActorShaderMask
Fix string carousels
Fix sprint animation data
Color uniform on meshes
Fall and gravity tree fixes
Potential window fix
Sprinting/physics work

(05/30/2025)
Reorganizing macro classes
Start work on macro pathfinding storage
Town constructs nav graph of road nodes
Render pathing nodes (still needs some work)
Pathing construction between town buildings and road nodes
Pathing construction for farm plots
Bounding sphere work
Don't allocate contact joints for geom-geom
Remove potential collision engine footgun
Synchronized time-of-day between server and client
Skybox reflects time of day
Standardize data sourcing in MacroTemporalData
Macro pathfinding scaffolding
Macro pathfinding work
Actual macro pathfinding implementation
Enable AI for low-lod entities
Fix draw cell manager test

(05/31/2025)
Error logging in entity-character assignment
Potential fix for macro pathing continuous loop
Unit test for generating a world
TownLayout test
Macro pathing test
Actually fix pathing spinlock
Support for observing ai entities
ServerGroundMovementTree supports collidable entities
ServerGroundMovementTree geom work
ServerLODComponent replaces bodies with geometries instead of just destroying the geometries

(06/01/2025 - 06/04/2025)
Fix rebase world origin routine
Non-rigid-body collidables behave as expected
Fix physics performance issues

(06/04/2025)
ServerGroundMovementTree actually moves collidable-based entities
Client uses non-rigid-body collidables for farther away entities (via client LOD tree)
Reorder main content draw calls to support non-OIT transparencies better
Content debug supports rendering paths
Rendering ai pathfinding paths
Simplify part of transvoxel algo
Work on repairing particle system
Fix projection matrix being sent to light manager

(06/05/2025)
voxel tests
Physics work
Debug rendering for facing vectors
Fix progressive pathfinding iteration
Non-body ground movement animation work
Synchronization change for memory pressure
Lerp non-body height differential based on distance (holds closer to ground)
Sim range update

(06/08/2025)
Fix scene re-adding tree that was previously removed
Fix client toolbar update deleting entity that shouldn't be deleted
Fix attachment bug
Fix cursor position setting
Fix many places where entity position being set on vector fetched from getPosition
 - Fixed first person model placement update
 - Fixed skybox placement update
Undo getPosition new alloc to lower memory footprint
Work to reduce allocations
Prevent mouse event re-allocation every frame
More allocation work
Frametime reporting work
Raycast allocation fix
Fix single block shader

(06/09/2025)
Cursor object pooling
Fix destroying blocks










# TODO



High level netcode gen needs to send packets to containing player of inventory items


Implement gadgets
  - Chemistry System
    - Emitters
    - Subscribers
    - Dedicated collision engine on server
  - Trap
    - Bear
    - Freeze
    - Flame
  - Bomb (to be thrown)
    - Regular (Deals damage, ignites)
    - Air (high push coeff)
    - Flash (dazes)
    - Sleep (puts enemies to sleep)
    - Smoke (creates LOS blockers)
    - Decoy (creates a decoy)
  - Torch
  - Throwable potions

Floating world origin
 - Better criteria to update floating world origin in collision engine (can't run every frame cause very very expensive, but need to periodically check so it doesn't become irrelevant)
 - Separately simulated regions of physics that dynamically merge/unmerge based on chunk loading

Bug Fixes
 - Fix hitbox placement does not scale with entity scale on server
 - Calculate bounding sphere for meshes by deforming vertices with bone default pose instead of no bone deform
 - Fix light cluster mapping for foliage shader
 - Fix flickering when applying yoga signal (may need to rethink arch here)
 - Fix particles not placing correctly on spawning

Startup Performance
 - Allow texture map to bind multiple model paths to a single set of mesh->textures
 - Cache texture atlas for terrain
 - Separate thread loads non-critical assets async while on title menu, but blocks main game display until completed

Scripting enhancements
 - setTimeout
 - Get marker by entity name/id
 - Play/Stop animations on actors
 - Apply cameras
 - Show/Hide UI
 - Enable/disable controls states
 - Spawn/Destroy entities
 - Ability to define regions in space (ie with entities)

Wrapper callback to debounce a function
 - ie, wrap a given block of code with some special functional class
 - the wrapper lets you specify how frequently the code can execute

Rearchitecting
 - Main render is a ui element (that we can have multiple of)
 - Shader injecting consts from the engine itself (ie max lights is dynamically injected, that way never have to worry about .glsl and .java not aligning)
 - Cache busting for particle atlas cache
 - Convert behavior tree nodes to use static evaluation methods instead of constructing objects
   - This will make stepping through the logic for a tree SIGNIFICANTLY more legible with debugger

Code cleanup
 - Rename "BehaviorTree" to be "Component" (what it actually is)
 - Refactor ground movement components

Build system to allow specifying certain audio files to load as stereo

Rework how chunks are written to disk to make them more cache friendly
 - IE, write consecutively higher LOD levels the further into the file, so that you can read just the first few bytes if its a far away chunk

Debug
 - Draw all bones with orientations

Biome description enhancements
 - Weather description

Would be nice to be able to cut clients that stream their logs to my server 

Refactor render flags

Data Cleanup
 - Clean up creatures
  - Remove unused ones
 - Clean up unused models
 - Clean up textures
  - Move model textures into models
 - Recursive model transform data

Clean up Material class
 - fix storing textures in the mat class ( pain :c )

Overhaul of 'attach' semantics
 - Having different types of attach tree propagation
 - Ability to turn on/off combinations of models at will (already exists, but needs review)

More Debug menus
 - Screen that shows the overall status of draw cell manager
 - Screen that shows the overall status of fluid cell manager
 - Screen that shows the overall status of realm 0
 - Screen that shows the overall status of realm manager
 - Particularly, want a view of all entities in the scene, and the ability to click on a single entity to get an overview of everything on the entity
  - For each behavior tree, ability to click into the tree and view fine details about its state (both pure state variable as well as other relevant variables)

Revisit first attempt at instancing (its really laggy lol)
 - Maybe have draw call happen on top level entity and immediately queue all children recursively

Another pass at grass
 - Multiple foliage models in same cell

Refactor attach logic to better encapsulate semantic attachment

Light Manager
 - Support "flickering" somehow
 - Eventually support spot lights?
 - Point shadows ???

Security
 - FileUtils sanitation function check if requested file is in game root dir

Cellular Automata Fluid Dynamics System
 - Advect force
 - Advect density
 - Diffuse density
 - Do not bound to single chunks
 - Only add compression when it starts to become an issue


skybox work
 - make it prettier
 - be able to manage its colors through a clean interface

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
 - Have leaves point out of branches at specific angles

Foliage Manager upgrades
 - Wind system (environment ubi that defines wind that is lookup'd by individual blades)


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

Environmental Audio Service
 - Tracks characteristics about surroundings to determine looping audio to play
 - Voxels nearby
 - Major entity types nearby
 - Biomes


Color Palette Generator


Foliage Manager upgrades
 - Add wind simulation if relevant


UI
 - UI changes look and feel based on season/biome of client's player


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

Documentation

Test Creation





# Eventually

Procedural Cliff Texture
 - Uses noise or fractals or something to generate infinite textures in shader
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
Computational 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




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





# Known bugs
 - Draw cell manager iso values dont make sense and should scale empty cells based on neighbor cells
 - Draw cell manager logic doesn't fill in border cells properly (the logic to check if a border cell exists always succeeds as long as the potential location is within world bounds, not if it actually exists in cache)
 - Control handler re-polls for mouse coordiantes for each control handler group it processes, so only the first group gets the mouse movement event properly