128,774 Commits over 4,201 Days - 1.28cph!
    
    
    
        
        
            
            
            
                
                Check for AVX2 support instead of FMA because Burst won't compile for FMA specifically.
                
                
                
                
             
         
        
            
            
            
                
                Instanced snow tiles based on terrain maps with simple displacement
                
                
                
                
             
         
        
            
            
            
                
                English field of phrases is now non serialized, removed English from RustText
Added a button on PhraseDrawer to edit a phrase, opens a window that will amend changes to the json file directly
Phrases update now only collect phrases declared in code
                
                
                
                
             
         
        
        
            
            
            
                
                tutorial_mission_reset_nre_fix -> main
                
                
                
                
             
         
        
            
            
            
                
                Ensure logic still works if the skipped mission was the active mission
                
                
                
                
             
         
        
            
            
            
                
                tutorial_mission_reset_nre_fix -> main
                
                
                
                
             
         
        
            
            
            
                
                Dont serialize null missions
Dont serialize default state missions
                
                
                
                
             
         
        
        
        
            
            
            
                
                Replaced static fuel_barrel_black objects on large oilrig with yellow and red variants so gameplay remains unchanged. Ran S2P
                
                
                
                
             
         
        
            
            
            
                
                Caged in fuel_barrel_black objects on small oilrig (1 set of 8, 1 set of 4) and replaced 4 other fuel_barrel_black objects with fuel_barrel_red as they are too visually similar to the diesel barrel pickupables. Ran S2P.
                
                
                
                
             
         
        
            
            
            
                
                More set dressing of farm barge
                
                
                
                
             
         
        
            
            
            
                
                Removed static upright fuel_barrel_black objects from large oilrig as they are too visually similar to the diesel barrel pickupables. Ran S2P.
                
                
                
                
             
         
        
            
            
            
                
                mission_isstarted_nre -> main
                
                
                
                
             
         
        
            
            
            
                
                Improvised walkways progress
                
                
                
                
             
         
        
            
            
            
                
                Try/catch mission think system
                
                
                
                
             
         
        
            
            
            
                
                Assembly contexts for code declared phrases
Better de-duping and type skip when generating the phrases
                
                
                
                
             
         
        
            
            
            
                
                Reworked pouring so it uses a start and stop RPC. Holding left mouse button will pour (up to) 50ml out of the container every 0.5s (100ml/s), stop holding left mouse button and pouring stops.
Needs bespoke animations and visual effects, something like a continuous stream pouring out when the item is tilted over.
Video: https://files.facepunch.com/jacob/1b1211b1/Unity_0KbTAw2Am2.mp4
                
                
                        
                
                
             
         
        
            
            
            
                
                mission_isstarted_nre -> main
                
                
                
                
             
         
        
            
            
            
                
                Fix mission 'is started' NRE
                
                
                
                
             
         
        
            
            
            
                
                Allow AI to drive anything derived from BaseVehicle
New custom upload loop. Safely turned on/off if AI is assigned
HasDriver flag set but mounting logic stays the same
                
                
                
                
             
         
        
            
            
            
                
                Enable 3052 materials for instancing
                
                
                
                
             
         
        
            
            
            
                
                Tests: TestLineOfSight - properly enforce non-job mode in relevant cases
Tests: ran test sets
                
                
                
                
             
         
        
            
            
            
                
                Tests: TestLineOfSight - validate reverse paths
Looks like some occlusion checks might fail reverse paths. That's an uh-oh.
Tests: ran above set, got a failure
                
                
                
                
             
         
        
        
            
            
            
                
                Final SIMD frustum culling implementation for x86/AVX and untested implementation for ARM/Neon
                
                
                
                
             
         
        
            
            
            
                
                Fix ARM/Neon SIMD (and non-SIMD) code for frustum culling.
                
                
                
                
             
         
        
            
            
            
                
                Tests: ServerOcclusionTests - generated data set now contains similar pairs
Interestingly, this trips up consistency test - will investigate
Tests: ran TestOcclusionLineOfSight_Consistency
                
                
                
                
             
         
        
            
            
            
                
                Detailed context when updating phrases
                
                
                
                
             
         
        
            
            
            
                
                Tests: PerfOcclusionLineOfSight - reset internal recent visibility cache between runs
Tests: ran the set
                
                
                
                
             
         
        
            
            
            
                
                Implement NativeArray.ReinterpretLoad() for NativeArray.ReadOnly to avoid triggering concurrency checks.
                
                
                
                
             
         
        
            
            
            
                
                Tests: ServerOcclusionTests - standardize test naming
Tests: ran test set
                
                
                
                
             
         
        
            
            
            
                
                Tests: ServerOcclusionTests.GeneratePairs - generate correct number of pairs
This further shrinks runtimes, as previously we generated waaaay too many
Tests: ran ServerOcclusionTests set
                
                
                
                
             
         
        
            
            
            
                
                Tests: optim TestOcclusionLineOfSight_PerfSerial/-Parallel
By properly constructing and caching base players - tests now take less than a second.
Tests: ran test set
                
                
                
                
             
         
        
            
            
            
                
                Tests: add TestOcclusionLineOfSight_PerfSerial/-Parallel
Both run for too long - likely due to how I create players for the tests. Will fix next
Tests: ran the new set
                
                
                
                
             
         
        
            
            
            
                
                Tests: TestOcclusionLineOfSight_Consistency - rset occlusion cache between serial and parallel runs
Tests: ran the test set
                
                
                
                
             
         
        
            
            
            
                
                Added crosshair codes. Can be generated from the current crosshair settings, and then easily loaded at a later time or shared with other people:
https://files.facepunch.com/cipeaX/2025/August/12_13-59-FrankGrasshopper.mp4
                
                
                        
                
                
             
         
        
            
            
            
                
                Tests: add ServerOcclusionTests.TestOcclusionLineOfSight_Consistency
Compares results between serial and batched versions.
Tests: ran the new test set
                
                
                
                
             
         
        
            
            
            
                
                Update: prep BasePlayer.OcclusionLineOfSight (both serial and batched) for use in tests
Tests: none, trivial change
                
                
                
                
             
         
        
            
            
            
                
                Play an on/off animation on the maps when the engine is toggled on or off
Map system refactor and storing in its own file
Folder cleanup
                
                
                
                
             
         
        
            
            
            
                
                Tests: rewrite ServerOcclusionTests to make ServerOcclusion usage clear
Is it ugly on some lines? Yes. But is it explicit and beautiful? Also yes.
Tests: ran the unit tests
                
                
                
                
             
         
        
            
            
            
                
                Fix unity_BaseCommandID not being set on Mac
                
                
                
                
             
         
        
            
            
            
                
                Fix stencil buffer incompatibility in Standard and Standard-Terrain
                
                
                
                
             
         
        
            
            
            
                
                Clean: propagate network time from FinalizeTickParallel
Tests: none, trivial change
                
                
                
                
             
         
        
            
            
            
                
                Optim: NetworkPositionTick - remove extra InvalidateNetworkCache
Cache has been previously invalidated in FinalizeTickParallel, so no need to discard it again
Tests: none, trivial change
                
                
                
                
             
         
        
            
            
            
                
                █▋▉ ██▄ ▅▍▇▄▊▄ ▊▍▍█ ▍▊▊▄▆▉▆▇ ▌▌█▆█ ▌ ▇▆▅▍█▊ ▇▍▌█▌▍▄.
                
                
                
                
             
         
        
            
            
            
                
                Optim: OcclusionSendUpdates can now reuse occlusion results
- Got rid of old OcclusionLineOfSight that used to send updates internally, as there's no need for it now
Tests: 2p session on Craggy with UsePlayerUpdateJobs 2
                
                
                
                
             
         
        
            
            
            
                
                Clarified in the tutorial that you must talk to the survivor (not just be in their proximity).