Pinned Tweet
Water caustics improvements:
- Added a "focal depth" with max "sharpness", caustics get smoother away from the focal depth
- Voronoi octaves added+multiplied (n1+n2+n1*n2) to make overlaps extra bright
- Slight chromatic dispersion, amplified at focal depth
Agentic gnomes can now be used to automate crafting and machine fueling
You provide them with a queue of items to craft, and the "scheduler" creates tasks for dependent items etc.
Extract resources -> manufacture -> exchange items for new technology
Getting 120 fps after multi-threading my render system
3 stage pipeline: simulates game state, fills + optimizes GPU command buffer and submits commands simultaneously
Now getting 100-120 fps on my gaming laptop and 60 on my macbook!
Be careful using std::cout on multiple threads (esp. on Windows)
Lock contention in std::cout was causing several millisecond delays in my engine's sim thread
Best bet is to write your own logger so you can control how it handles shared resources etc.
Added wavelength dependent scattering (Mie/Rayleigh)
Fog color changes based on view angle relative to sun direction
Just made my render loop multi-threaded (super stable framerate):
Rendering runs while the next frame is being simulated (lua + physics etc.)
Rendering + sim are synced once per frame -> copy all relevant sim data to a "packet" which is handed off to render
Any GPU ops on the sim thread are pushed to a command buffer that is passed off to the render thread which executes the accumulated GPU commands before rendering
Frame rate is perfectly stable even with a ton of NPCs/script runners
More assets:
Each of these has ~200 polygons
Trying to save time by making a really simple mesh then adding all the details to the textures in substance painter
Underrated “optimization”:
Making sure that your GPU is actually running 100% of the time (no stalls waiting for the CPU/memory contention etc)
Order independent hash functions:
Useful for mesh operations where you want to index/search for a triangle "facet" via its 3 vertex indices and you don't care about the ordering of the indices
1. Test play game from the start
2. Write down every bug/issue I encounter
3. Fix issues
4. Repeat
Been running this loop lately
Made my A* implementation 4x faster by removing all dynamic allocations
Uses fixed sized heaps + static arrays allocated at startup
Makes pipe routing much smoother
2-4x faster frustum culling:
Wrote this SIMD implementation of the view-frustum + bounding box intersection test
Parallelizes across 8 bbox corners (2x4) to maximize lane usage
This function is heavily used in the rendering loop
Added VIM to my developer console
I now officially have a game engine editor
All text is rendered by the engine w/ custom code
Allows you to write lua code and run it (like spawning enemies etc)
Water voxel remeshing and liquid simulation are now running on a separate thread.
Liquid sim now has ~0 effect on the frame rate / stuttering
More debugging on this liquid simulation
Color = velocity vector
Based a simplified incompressible Navier-Stokes solver
These simulated oceans and lakes are super fun to mess with
Added pressure and velocity solvers to my 3d water simulation
Looks way more physically accurate now
The hydraulic pressure solver will cause connected reservoirs to equalize surface height even through tunnels etc.
Still need to clean up some meshing + rendering bugs












