201,363 Commits over 4,171 Days - 2.01cph!
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
█▋▉ ██▄ ▅▍▇▄▊▄ ▊▍▍█ ▍▊▊▄▆▉▆▇ ▌▌█▆█ ▌ ▇▆▅▍█▊ ▇▍▌█▌▍▄.
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).
bug fix: incorrect button prompt was displayed for opening the inventory on this tutorial text only.
Clean: remove couple TODOs
- one was just completed
- another was overzealous
Tests: none, trivial changes
Optim: SendNetworkPositions - reuse occlusion query results
Tests: 2p on Craggy with UsePlayerUpdateJobs 2
merge from gesturewheel_cinematic_fix
Fixed cinematic gestures not showing in the gesture menu when using ShowAdminCinematicGesturesInBindings
When updating the phrases we now save their context for later use
Some cleanup in phrases update code
Update: move ServerUpdateOcclusionParallel inside FinalizeTickParallel
- FinalizeTickParallel invalidates players network cache - with UsePlayerUpdateJobs 2 we can skip it later, but 1 is has double-invalidate
This increases the coverage of OcclusionFrameCache, allowing to simplify a bunch of code.
Tests: 2p on Craggy with UsePlayerUpdateJobs 0, 1, 2 and disconnects. 0p server with UsePlayerUpdateJobs 1, 2
Merge: from connectedplayer_rewrite
Got far enough along in this direction and things seem to work
Bugfix: ServerUpdatePlayerTick - restore Player.serverTickInterval functionality
Got lost during the rewrite
Tests: 2p on Craggy with UsePlayerUpdateJobs 2
fix mannequin prefab rendering
Rename BlockFace -> BlockFaceDefinition so I can make runtime types with normal names
restore_old_sorting -> main
Baked defaults into play prefab
Define sockets for square floor
Changed default orderBy string to match new intended behaviour
Restore default sorting to be ping then pop (like the old menu)
Define faces and edges for a normal wall
Proper MVP implementation of "full base heating"
- add ability to define faces & edges of each building block
- draw gizmos to visually confirm what you are defining
Fixed notify LOD notifing the wrong object
Added toggleable working lighting, needs some work to make it prettier
Left mouse button when holding a water jug / water bucket now pours (up to) 5% of the container's max amount from its inventory. Still needs animation setup. A gradual pour over time rather than a throw of a smaller amount may be nicer, needs more thinking.
Video: https://files.facepunch.com/jacob/1b1111b1/Unity_Q6cXeVt4NE.mp4
WIP crosshair customization, added the following convars to control the appearance and behaviour of the crosshair:
- mode: 0=static, always visible | 1=static, hidden during ADS | 2=dynamic, adjusts to accuracy, hidden during ADS
- style: 0=full | 1=no dot | 2=only dot | 3=T-shape no dot | 4=T-shape with dot
- color: 0=white | 1=green | 2=blue | 3=red | 4=yellow | 5=magenta | 6=cyan
- dotsize: Size of center dot [0-5]
- spacing: Distance of the outer lines to the center dot [0-3]
- outline: Outline enabled [true/false]
- outlinecolor: 0=black | 1=green | 2=blue | 3=red | 4=yellow | 5=magenta | 6=cyan
Demo: https://files.facepunch.com/cipeaX/2025/August/11_19-02-AttractiveLacewing.mp4
Hackweek XIII | Sparrow Missile Tiki Torch - Initial prefab setup as campfire, new model with different fire effect, lights up and extinguishes correctly, set up namings and item