10,828 Commits over 3,867 Days - 0.12cph!
Subtracting
78457 (as far as I can tell LinuxHeadlessSimulation is the same as CloudRendering)
Replacing BuildTarget.StandaloneLinux64 with BuildTarget.LinuxHeadlessSimulation for server builds, which has no documentation anywhere (# of Google results: 6) and appears to potentially represent a third way of enabling headless mode on Linux
Subtracting StandaloneBuildSubtarget.Server
Let's try setting script defines in BuildPlayerOptions
Subtracting
78442 because SwitchActiveBuildTarget does not work when running the editor in batch mode
Ah, yes:
EditorUserBuildSettings.SwitchActiveBuildTarget( buildTargetGroup, buildTarget );
EditorUserBuildSettings.standaloneBuildSubtarget = standaloneBuildSubtarget;
Repklacing BuildTargetGroup with NamedBuildTarget which as far as I'm concerned is the exact same thing, but BuildTargetGroup is missing some things that NamedBuildTarget contains (like the headless server)
Build server as StandaloneBuildSubtarget.Server
Disabling graphics jobs on macOS as a test (crash investigation)
Fixed CLIENT / SERVER switch (accidentally included in commit)
Disabling GPU skinning as for some reason it takes up to 20ms on the GPU
Enabling incremental GC on macOS as a test (other platforms already had it enabled)
Fixed reflection probe instances ignoring "occlusion culling" and "culling distance" parameters that were set on the prefab
Enabling graphics jobs inside the editor (they were already enabled in builds, so this should result in a more similar behaviour in the editor)
Enabling native Apple Silicon build
Splitting network thread into two threads (read thread and write thread)
Removing locks in GetStat, GetLastPing and GetDebug since they're only called from the main thread, which is the only thread that can disconnect the peer
Fixed bushes spawned through the decor system not casting any shadows
Full game manifest update
Reserialize prefabs (these changes can be overwritten if you have changes of an affected prefab on a branch)
Added 1 second timeout to all AutoResetEvent.WaitOne calls (large enough to notice something is wrong, but never deadlock)
Ensure everything is cleaned up / reinitialized after disconnect / reconnect
NetRead and NetWrite use less space while pooled
Decryption is running in its own thread (separate from network thread) -- this allows us to add multiple decryption threads in the future
EACServer uses ConcurrentDictionary to manage its client IDs
Replacing Thread.Sleep with AutoResetEvent
Block main thread if worker thread can't keep up
Added client.maxsendqueue and server.maxsendqueue convars
Added some comments to network threading
Replacing lock-synchronized queue with concurrent queue
Replaced Stopwatch.Reset + Stopwatch.Start with Stopwatch.Restart
Enabled by default inside editor
Added client.maxreceivequeue and server.maxreceivequeue convars
Ensure maxreceivetime is still respected on the main thread even with multithreading enabled
Rearranging and simplifying some things, cleaning up, removing duplicate code
Sleep network thread when read queue is at capacity and write queue is empty (i.e. we're waiting for the main thread to catch up with us)
Steam networking log tweak to be more in line with Raknet
Fixed client main thread accessing peer directly in some console logs
Startup parameter to enable network thread (-networkthread)
Encryption support (forgotten file)
Baseline (disabled by default)
BuildingProximity.GetProximity: additional checks added in early December now only run on the server (fix attempt for FPS drop when using building planner)
Fixed xmas dungeons not disabling their environment volume trigger when entering the pool on the client