Game engine development, C++, lua, PhD Mechanical/Optical engineering, laser sensing

Boulder, CO
Joined December 2024
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
15
27
3
519
21,961
Sped up voxel world saving by >1000x Octree data is stored in a pool allocator (the save is just the whole allocator dumped to a file ~256MB) Pool indices that change during gameplay are marked dirty -> then written directly to the file during save save -> write dirty pools to separate buffer on the main thread -> write buffer to a file on a worker thread in the background Just a very quick copy in RAM then the slow file IO happens asynchronously
20
612
Added a nice hexagonal build effect Also tuned up the grass + environment Polishing
2
35
1,897
I like to add intricate mechanisms & pipes
2
20
797
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
3
18
633
A simple atmospheric scattering color gradient make fog look much better
2
1
18
614
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!
2
3
73
3,526
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.
1
4
429
Added wavelength dependent scattering (Mie/Rayleigh) Fog color changes based on view angle relative to sun direction
1
49
1,539
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
4
1
72
4,669
Blender pipe generator made with geometry nodes All maps to 1 texture
10
629
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
6
402
Underrated “optimization”: Making sure that your GPU is actually running 100% of the time (no stalls waiting for the CPU/memory contention etc)
1
13
2,675
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
30
1,424
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
3
257
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
10
7
256
16,872
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
8
19
376
17,817
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)
1
1
14
800
Water voxel remeshing and liquid simulation are now running on a separate thread. Liquid sim now has ~0 effect on the frame rate / stuttering
2
18
991