Commit Graph

3865 Commits

Author SHA1 Message Date
eero
bdd6c52e4e Revert "Refactor ServerEntityEventManager event processing"
This reverts commit de65cd88bc.
2025-12-23 00:16:02 +08:00
eero
de65cd88bc Refactor ServerEntityEventManager event processing
Introduces async event processing with cancellation support using SemaphoreSlim and CancellationTokenSource. Improves client event handling logic, separates in-game and mid-round sync clients, and adds proper disposal of resources. Enhances robustness and maintainability of event management.
2025-12-23 00:07:47 +08:00
NotAlwaysTrue
83ca51a99b Fixed compile errors :( 2025-12-22 22:58:22 +08:00
NotAlwaysTrue
1def7b7b8d add catch code for previous commit :( 2025-12-22 22:54:33 +08:00
NotAlwaysTrue
dadd6c598f try-finally multiple UniqueEvents.ToList() to avoid issues(Destination array was not long enough. Check the destination index, length, and the array's lower bounds) 2025-12-22 22:43:02 +08:00
NotAlwaysTrue
b891ec7793 Add a try-finally in HumanPrefab to fix an issue causing issue(Destination array was not long enough. )
Fixed another Collection was modified in SubmarineBody.Update()
2025-12-22 21:51:07 +08:00
eero
5b823d8684 Clarify thread safety in update methods
Updated comments in GameScreen.cs to indicate that StatusEffect.UpdateAll and Character.UpdateAnimAll are not thread-safe and must be executed on the main thread. Also removed a non-English comment from MapEntity.cs for consistency.
2025-12-22 18:07:17 +08:00
eero
b146fa326d Refactor MapEntity.UpdateAll for improved parallelism
Rewrites MapEntity.UpdateAll to use more granular parallelism, reducing contention and improving performance by parallelizing hull, structure, and gap resets, while keeping order-dependent and non-thread-safe updates sequential. Updates GameScreen to pass ParallelOptions to UpdateAll.
2025-12-22 17:48:14 +08:00
NotAlwaysTrue
bab02fca8a Tried to fix all errors realted to UniqueEvent and Events(Collection was modified) 2025-12-22 17:16:49 +08:00
NotAlwaysTrue
0b6882c37f Reduced max threadcount for main thread to avoid issue 2025-12-22 17:00:03 +08:00
NotAlwaysTrue
70a039da83 Added a command to show server perfomence (ShowServerPerf)
Removed unwanted PhysicsTask that was accideltally readded via revert action
Removed a parallel operation for SE.UpdateAll and ME.UpdateAll.
Cancelled roll back for ServerEntityEventManager
2025-12-22 16:57:58 +08:00
NotAlwaysTrue
9c2f300325 Rolled back ServerEntityEventManager 2025-12-22 15:56:29 +08:00
eero
4d4f1f8351 Parallelize game update loops for performance
Refactored GameScreen update logic to use Parallel.Invoke and Parallel.ForEach for physics bodies, submarines, particles, level, characters, map entities, and status effects. This change aims to improve performance by leveraging multi-core processing. Also removed a debug Console.WriteLine from GameMain.
2025-12-22 15:47:15 +08:00
eero
b1a9757b40 Revert "Enable and improve threaded physics execution"
This reverts commit 7d9642a5b1.
2025-12-22 10:07:24 +08:00
NotAlwaysTrue
d98f9de5d4 Updated PM, uses 60s average to match message update time, modified message to display Server Running Time(Total Time Elapsed) in h:m:s.ms format
Readded perviously removed update interval condition
2025-12-22 00:24:33 +08:00
eero
7d9642a5b1 Enable and improve threaded physics execution
Activated the RUN_PHYSICS_IN_SEPARATE_THREAD directive and refactored the physics threading logic. Added cancellation support, improved error handling, and used synchronization primitives to coordinate physics updates. These changes aim to improve performance and stability when running physics in a separate thread.
2025-12-22 00:16:25 +08:00
NotAlwaysTrue
220ccb2eac Updated CreateEvent() to make it thread safe 2025-12-22 00:07:01 +08:00
NotAlwaysTrue
f87e943a1a Move a lot of thing around to fix collection was modified.
Note: For now I can only adjust orders and cannot make some real thing. It will take time to check and refactor everything necessary.
2025-12-20 14:16:51 +08:00
NotAlwaysTrue
2f845b40ca Moved Item related stuff to the end of MapEntity.UpdateAll to avoid issues
Added a threadlock to avoid some issue(someday i will take care of)
Add a function that automatically log server performence every 60s
2025-12-20 00:08:42 +08:00
NotAlwaysTrue
fff157d5ca Added a Performence Monitor for debug
Many multi-threading work in ServerSource
2025-12-19 13:43:12 +08:00
Evil Factory
c38d519ee6 Merge branch 'master' of https://github.com/Regalis11/Barotrauma 2025-12-18 08:15:42 -03:00
Regalis11
4dc0ce9a2f Release 1.11.5.0 - Winter Update 2025 Hotfix 1 2025-12-18 12:26:30 +02:00
Evil Factory
352625af28 Merge remote-tracking branch 'upstream/master' 2025-12-08 12:35:44 -03:00
Markus Isberg
598966f200 Release 1.11.4.1 (Winter Update) 2025-12-08 14:56:47 +00:00
Evil Factory
0d223636f6 Merge branch 'master' of https://github.com/regalis11/Barotrauma 2025-10-22 10:55:51 -03:00
Regalis11
7e25111487 Release 1.10.7.2 - Autumn Update 2025 Hotfix 4 2025-10-22 14:54:03 +03:00
Evil Factory
9799a2a97b Merge remote-tracking branch 'upstream/master' 2025-10-10 08:41:26 -03:00
Markus Isberg
b732009056 Hotfix 1.10.7.1 2025-10-10 10:43:19 +00:00
Evil Factory
e902ba673d Merge remote-tracking branch 'upstream/master' 2025-10-02 08:12:37 -03:00
Regalis11
6c1b18a56d Release 1.10.7.0 - Autumn Update 2025 Hotfix 2 2025-10-02 12:31:41 +03:00
Evil Factory
da13162c60 Merge branch 'master' of https://github.com/Regalis11/Barotrauma 2025-09-25 09:00:20 -03:00
Regalis11
b2d91cde7c Release 1.10.6.0 - Autumn Update 2025 Hotfix 1 2025-09-25 11:11:35 +03:00
Evil Factory
cfab935b75 Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop 2025-09-17 08:30:35 -03:00
Regalis11
caa0326cf8 Release 1.10.5.0 - Autumn Update 2025 2025-09-17 13:44:21 +03:00
EvilFactory
b8fd8980a7 Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop 2025-07-01 17:55:43 -03:00
Regalis11
6661bb607b Release 1.9.8.0 - Summer Update Hotfix 1 2025-07-01 11:40:07 +03:00
EvilFactory
2368640841 Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop 2025-06-17 15:45:16 -03:00
Regalis11
ea5a2bc693 Release 1.9.7.0 - Summer Update 2025 2025-06-17 16:38:11 +03:00
Ydrec
8af2267c53 Add ScriptClr convesion for GUITextBlock.ClickableArea.OnClickDelegate (#254) 2025-05-31 16:43:26 -03:00
EvilFactory
90a1453755 Upgraded MonoMod.RuntimeDetour to 25.2.3 2025-05-04 10:12:15 -03:00
EvilFactory
64faf5c967 Merge branch 'master' of https://github.com/Regalis11/Barotrauma 2025-04-29 07:27:36 -03:00
Regalis11
ec9e29af07 Release 1.8.8.1 - Calm Before the Storm Hotfix 1 2025-04-29 12:46:51 +03:00
EvilFactory
4916de359c Upgrade HarmonyX to 2.14.0 2025-04-18 19:33:03 -03:00
EvilFactory
5e321a5abd Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop 2025-04-16 18:08:37 -03:00
Regalis11
1deef20f21 Release 1.8.7.0 - Calm Before the Storm Hotfix 1 2025-04-16 12:46:39 +03:00
EvilFactory
126253d81d Trigger push 2025-04-10 11:34:53 -03:00
EvilFactory
ca3e99a095 Fixed CI 2025-04-10 11:07:29 -03:00
EvilFactory
546450712d Fixed compiler errors 2025-04-10 10:55:39 -03:00
EvilFactory
103871a4e9 Merge branch 'master' of https://github.com/Regalis11/Barotrauma into develop 2025-04-10 10:37:09 -03:00
Markus Isberg
5762420f84 Merge branch 'dev'
# Conflicts:
#	Barotrauma/BarotraumaClient/ClientSource/Characters/Animation/Ragdoll.cs
#	Barotrauma/BarotraumaClient/ClientSource/Characters/Character.cs
#	Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs
#	Barotrauma/BarotraumaClient/ClientSource/Characters/Jobs/JobPrefab.cs
#	Barotrauma/BarotraumaClient/ClientSource/Characters/Limb.cs
#	Barotrauma/BarotraumaClient/ClientSource/DebugConsole.cs
#	Barotrauma/BarotraumaClient/ClientSource/GUI/TabMenu.cs
#	Barotrauma/BarotraumaClient/ClientSource/GUI/TalentMenu.cs
#	Barotrauma/BarotraumaClient/ClientSource/GameSession/RoundSummary.cs
#	Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemComponent.cs
#	Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemContainer.cs
#	Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Wire.cs
#	Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs
#	Barotrauma/BarotraumaClient/ClientSource/Map/Structure.cs
#	Barotrauma/BarotraumaClient/ClientSource/Map/Submarine.cs
#	Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs
#	Barotrauma/BarotraumaClient/ClientSource/Networking/Primitives/Peers/ClientPeer.cs
#	Barotrauma/BarotraumaClient/ClientSource/Networking/RespawnManager.cs
#	Barotrauma/BarotraumaClient/ClientSource/Particles/Particle.cs
#	Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleEmitter.cs
#	Barotrauma/BarotraumaClient/ClientSource/Physics/PhysicsBody.cs
#	Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs
#	Barotrauma/BarotraumaClient/ClientSource/Screens/LevelEditorScreen.cs
#	Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen/MainMenuScreen.cs
#	Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs
#	Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs
#	Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundManager.cs
#	Barotrauma/BarotraumaClient/ClientSource/Steam/WorkshopMenu/Mutable/InstalledTab.cs
#	Barotrauma/BarotraumaClient/LinuxClient.csproj
#	Barotrauma/BarotraumaClient/MacClient.csproj
#	Barotrauma/BarotraumaClient/WindowsClient.csproj
#	Barotrauma/BarotraumaServer/LinuxServer.csproj
#	Barotrauma/BarotraumaServer/MacServer.csproj
#	Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs
#	Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs
#	Barotrauma/BarotraumaServer/ServerSource/Events/EventActions/ConversationAction.cs
#	Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs
#	Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs
#	Barotrauma/BarotraumaServer/ServerSource/Networking/ServerSettings.cs
#	Barotrauma/BarotraumaServer/WindowsServer.csproj
#	Barotrauma/BarotraumaShared/LocalMods/[DebugOnlyTest]Character override and variant tests/README.txt
#	Barotrauma/BarotraumaShared/LocalMods/[DebugOnlyTest]Character override and variant tests/filelist.xml
#	Barotrauma/BarotraumaShared/SharedSource/AchievementManager.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/EnemyAIController.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveCombat.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveDeconstructItem.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFindSafety.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveGoTo.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveOperateItem.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveReturn.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/AI/PetBehavior.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/CharacterInfo.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionHusk.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionPrefab.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/Jobs/JobPrefab.cs
#	Barotrauma/BarotraumaShared/SharedSource/Characters/Params/CharacterParams.cs
#	Barotrauma/BarotraumaShared/SharedSource/ContentManagement/ContentPackage/ContentPackage.cs
#	Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs
#	Barotrauma/BarotraumaShared/SharedSource/DisembarkPerks/DisembarkPerkPrefab.cs
#	Barotrauma/BarotraumaShared/SharedSource/Enums.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/ConversationAction.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/NPCChangeTeamAction.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/EventManager.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/Missions/AbandonedOutpostMission.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/Missions/Mission.cs
#	Barotrauma/BarotraumaShared/SharedSource/Events/MonsterEvent.cs
#	Barotrauma/BarotraumaShared/SharedSource/GameSession/AutoItemPlacer.cs
#	Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs
#	Barotrauma/BarotraumaShared/SharedSource/Items/Components/GeneticMaterial.cs
#	Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/Holdable.cs
#	Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemContainer.cs
#	Barotrauma/BarotraumaShared/SharedSource/Items/Components/Turret.cs
#	Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/Levels/Level.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/Map/Location.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/Map/LocationType.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/Outposts/OutpostGenerator.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/SubmarineInfo.cs
#	Barotrauma/BarotraumaShared/SharedSource/Map/WayPoint.cs
#	Barotrauma/BarotraumaShared/SharedSource/Networking/EntitySpawner.cs
#	Barotrauma/BarotraumaShared/SharedSource/Networking/NetworkMember.cs
#	Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs
#	Barotrauma/BarotraumaShared/SharedSource/PerformanceCounter.cs
#	Barotrauma/BarotraumaShared/SharedSource/Serialization/XMLExtensions.cs
#	Barotrauma/BarotraumaShared/SharedSource/StatusEffects/StatusEffect.cs
#	Barotrauma/BarotraumaShared/SharedSource/Tags.cs
#	Barotrauma/BarotraumaShared/SharedSource/Text/TextManager.cs
#	Barotrauma/BarotraumaShared/changelog.txt
2025-04-10 14:35:30 +03:00