76 KiB
@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
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
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