201,394 Commits over 4,171 Days - 2.01cph!
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
Indirect Instancing Integration Candidate 1
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
update media_projects/hackweekaug2025_media
merge from main -> media_projects
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