GithubHelp home page GithubHelp logo

rwmt / multiplayer Goto Github PK

View Code? Open in Web Editor NEW
449.0 449.0 88.0 13.59 MB

Zetrith's Multiplayer mod for RimWorld

License: MIT License

C# 99.88% Shell 0.08% Dockerfile 0.03%
hacktoberfest mod multiplayer rimworld

multiplayer's Introduction

banner

The RimWorld Multiplayer mod allows users to play full games of Rimworld cooperatively.

Links

Steam Workshop | Website | Discord | Documentation

Development

Git Releases | Installation | Hosting | FAQ | Contributing | DEV Wiki

Please do all pull requests to the development branch.

Donations

If you’re feeling generous these are people who have contributed greatly to the mod’s development and upkeep.

Zetrith - Creator, Core, Support
NotFood - Core, Mod Compatiblity, Compatibility Commissions
Sokyran - Core, Mod Compatiblity, Compatibility Commissions
Nebual - Core
Thomas107500 - Mod Compatiblity
Luz - Support, Admin
Mistress Mia - Support, Admin
Swept - Support, Admin, Website

Notes

Thanks to Pardeike for making Harmony and RevenantX for creating LiteNetLib

multiplayer's People

Contributors

bnelz avatar cameron-friel avatar dadavec avatar detiam avatar jyeguru avatar kuinox avatar linnun avatar lukaschristmann avatar luzbun avatar mattthewaz avatar mortuus-medicus avatar murmax avatar nebual avatar notfood avatar nylux avatar parexy avatar pecius avatar pickar2 avatar raznoo avatar ruyanve avatar sabership avatar sokyranthedragon avatar ssteel2 avatar sweptwastaken avatar switch123456789 avatar theklaus avatar txm3278 avatar vasilevp avatar zetrith avatar zombiefied7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multiplayer's Issues

Pawns won't sleep while in Async mode

Disclaimer - Playing with a ton of mods, 4s, 3s and lots of 0s. But, the only way to for sure prevent the issue is by not using async.

After some amount of time, the pawns will never elect to sleep again, and will constantly pass out exhausted. Loading an earlier save and hosting with async off fixes. All effected pawns get a 'canSleepTick' value in the save file. Uneffected pawns do not have that variable set in their block.
Setting to zero and re-hosting fixes, but it reoccurs unless async is off.
EDIT: took out < > around canSleepTick

Desync on the "Speech form the Throne"

Multiplayer game with 3 players.

When host activates the ability both clients will be de-synced.

If one of the clients tries to use the ability nothing happens and the client is getting de-sync.

Tested with
Multiplayer: v0.5.0.25
Rimworld: 1.1.2618 & 1.1.2610

Ability to have multiple teams/factions

The ability to split off and not work co-operatively would be much appreciated. Some major problems with "just pretending" right now is that your pawns are effected by moods that have nothing to do with your settlement. Take for example, I was playing a game with 3 friends all on separate tiles. One person started an organ harvesting op, and everyone was punished for it. So if it isn't possible to have different factions, it would be nice to not have these debuffs be applied to pawns on every tile.

Improvement: Forming caravan and trading dialog menu should not be forced onto other players (toggleable option)

Similar to how reforming caravans and trading outside of main settlement works, main-settlement trading and caravan forming should NOT force other players to have to participate.

It should pause the game as it does now to avoid weird behavior but players should be able to view pawns, quests, possibly build, queue up tasks etc. (if building and queuing up tasks could cause desync while one player is trading, this can be a "use with caution beta feature")

To simplify this, it could be a toggleable option when first hosting the game, something like: "Disable forced in-settlement caravan/trading dialog".

Thank you.

Anything involving forming a caravan results in a desync loop

I'm having an issue where the client seems to desync anytime a caravan from the initial base is formed. This happens on both regular time and async mode enabled and I can't figure out a way to fix the Rimworld instance (not even restarting), as every time a resync attempt occurs / the world tries to load again, the pawn is sent back on the caravan and the desync occurs again (pawns don't register as travelling in a caravan on host / client, depending on who settled it.) It doesn't matter what tile is being selected to travel to. If I manage to get both clients synced with an idle caravan on the world map by hosting the server after setting the caravan, if the host sets a destination for the caravan to travel to, the caravan doesn't register it on the client and a desync occurs instantly.

The only way to fix the issue is to restart the game on both client and host I believe.

There are no mods enabled other than Harmony and Multiplayer on both machines. Config files are all synced. Host in on Steam and Client is on GOG (but the error still occurs the other way around.) Host using the latest Workshop file, and GOG is using the latest Github download. Files were also reinstalled.

The client either gets hit with one of these three:

Random state from commands doesn't match
wrong random state on map 0
Map instnaces don't match (<-- this one happens when a caravan settles on a tile in the world. The area is settled but the client gets the desync which begins the desync loop.)

This happens 100% of the time under the same circumstances. I've tested on about 5 different worlds.

Problem is similar to the one this Discord user was having, except my game fails to catch up after the desync: https://discordapp.com/channels/524286515644203028/702190105607143424/717033695994970162

Caravan_Desync_Host.zip
Caravan_Desync_Client.zip

Giving speech seems to desync the game.

i wanted to ask other user in the discord before but after searching for like 30 mins for a green checkmark (what ever that may be) i have to go this way.

every time i used the royal feature giving a speech the game desynced. the game is modded so it would be much better if i could ask other user first if they have the same problem but it is as it is.

i have more stuff like rimatomic shouldn't be a "4" because the liberator doesn't work in multiplayer it's complaining that the scas isn't manned even if it's manned.

1.1 Royalty: error when casting Psychic Abilities

Apologies for not posting an error message, but it should be easy to reproduce:

  1. cheat in a Psychic Amplifier and use it on a pawn
  2. try casting Stun on another pawn

It didn't cause a desync or break the game, the ability just doesn't do anything, and a red error appears.

1.1 Error/Freeze on Research Completion

  • Running just Harmony, Core (no Royalty), and MP

Seems pretty consistent. Hosting a game with the arbiter and no other clients. When research completes, the notification window pops up as expected but the game no longer responds to UI inputs (you can x out just fine though) and the window popup sound loops endlessly. The game is basically softlocked here until what appears to be an autosave interval. After the autosave, the game resumes but immediately desyncs

0.5.1.0 Causes User Interface to dissapear

RimWorld 1.1.2647 Starting from the mods menu, only using the latest Harmony 2.0.1 and Multiplayer 0.5.1.0. Causes "Close" button to disappear when pressing on Multiplayer, attempt to create a colony even in singleplayer makes Storyteller menu to appear blank, loading existing save starts the game without any UI and empty small window in the middle. Debug log gets filled with the same exception multiple times during that.
1
2
3

Split Caravan is missing Travel Supplies tab

In a multiplayer game, when splitting a caravan, the dialog to select the subset of colonists+items for the new caravan is missing the travel supplies tab.
This means the split off caravan cannot be given any food and must starve.

SplitCaravan
Note: the items tab does not show the food/medicine/bedrolls.

Workaround: convert to single-player before splitting the caravan.

Can't start a new colony after installing this mod

After installing the 0.5.1.8 version of the Multiplayer mod i cannot start a new colony any more.
When i click on "New colony" i can choose a scenario but clicking "Next" doesn't do anything.
My game's version is 1.2.2753 and i have following other mods:
Harmony, ModManager, CommonSense, AllowTool, SimpleSidearms, SnapOut, WallLight, WorkTab & PickUpAndHaul.
I am sure this problem is because of the Multiplayer mod as after disabling it the game worked correctly.

Thanks for the support and the help!

Guaranteed De-sync on speeds above x1.

Test game condition:

Rimworld Version: v1.1.2610
Multiplayer Version: v0.5.0.25
Game is as Direct connect with static IP and proper port forwarding.
Internet connection was tested and no issues was detected (packet loss, latency & etc)
3 players on 3 maps with a total of 20 colonists.

If the game is set to run on a speed above normal like x2 or x3 players will start lagging in ticks behind the host.
on x2 speed it happens after few minutes of game play (ticks are growing, but slowly),
on x3 it is nearly instant.

The issue might be somewhat related to:
Zetrith/Multiplayer#79
Or
Parexy/Multiplayer#32

Since the host machine got AMD Ryzen Threadripper 2920X 12-Core Processor
No HW bottleneck was observed during game play session.
Tested the above and it seems it makes no difference on intel.

all of 3 players are on the high end HW, but both clients are on Intel based CPUs

the situation was somehow improved by removing excess of domesticated animals and cleaning up the maps from raiders bodies.

Monument desync on "Place blueprint"

Tried on both computer, re-downloading the game, different ressource for the build.

I'm bit confuse because NotFood say she doesn't have any problem with :/.
But that strange.. Could be one mod i downloaded without activate them ?

The save is fresh and full vanilla, i forced the quest in solo then host the game and accept the quest once i'm in MP with arbiter joined.

Reproduce:

  • Accept quest
  • Place the monument and wait for pawn place it
  • Use Blueprint menu and choose ressource
  • Desync happen

• 1 Rimworld version: [1.2.2723 rev661]
• 2 Multiplayer mod version: [0.5.1.8]
• 3 Does the issue/desync happen when only harmony and the mp mod is enabled? [Yes]
• 4 Have you both tried to resubscribe/redownload* the mods?: [Yes]
• 5 Have you both tried to delete the "data" folder found in rimworlds directory and verifed the integrity of the game afterwards?: [Yes]
• 6 Are you all running the same language for rimworld?: [Yes, English]
• 7
Desync-03.zip

[RW Royalty 1.2.2723 rev661, MP:0.5.1.9999] Bestowal ceremony

Desync while casting pulse abilities

Multiplayer game with 3 players.

De sync guaranteed to happen if one of the following pulse abilities is used:

Blinding Pulse
Berserk Pulse
Vertigo Pulse

After de-sync the host need to re host the game since clients will not be able to re sync on their own.

Tested with:
Rimworld Version: RimWorld v1.1.2610
Multiplayer version: v0.5.0.22

P.S. LOVE your mod !!!!!

Mod config sync fails when redirecting savedatafolder

When running with a relative config path (for example `"-savedatapath=..\Config") all files fail validation.
image
image

Note that the path also seems to be cut off weirdly. If I tell the client to sync, it restarts and no longer shows a conflict. However, it has created a strange folder structure, replicating Client 1's full path under Client 2's folder. Deleting this folder causes the mod sync error to reappear on next connect.
image

Running the connecting client with the absolute path (eg: "-savedatapath=D:\Games\Rimworld Multiplayer\Test\Game Client 2\Config") still behaves the same, confirming it is a host-side issue.

Running the hosting client with an absolute path, while the connecting client is using a relative path, works fine. This seems to be something in the way the host is providing the config data to the client to compare.

Currently working around this using Powershell's Resolve-Path in my launch script to force absolute paths on launch. In all tests above, the arbiter command line fix (from #124) is running on the host, however the issue can be repeated even without arbiter running.

Desync on Auto-Save

When the host completes an action that changes game data, e.g. adding a task to a workbench or forbidding an item, at the exact same time the save triggers, the game desyncs within a minute after the save. I can not say if this is an issue on the client also. The timing needed is within the milliseconds ballpark, to the user it feels as if the click actually triggered the save.

Now, I realize that this should be a once in a blue moon problem, but this tight timing happens far more often than is statistically probable. While inconsequential clicks, e.g. opening an info window, are not a problem, they too coincide with auto-saves often. Whatever triggers the check if an auto-save is due must be somehow tied to user action (among other things).

Any change made is present in the game after the save, but not in the save itself. I wonder if the action is not communicated to the client(s) or the arbiter due to the save freeze, or if things somehow involve the RNG and are communicated in the wrong order. I will try to verify the status of the action on the client at the next opportunity.

Publicize/Publicise Command Not Found

I was trying to get the project setup to poke around and see what I could help with, but ran into an issue with the Publicise tool used to build Assembly-CSharp_public.

What I was doing

I was following the setup steps from the hackmd book.

What I expected

The project to build successfully

What happened

1>------ Rebuild All started: Project: MultiplayerAPI, Configuration: Debug Any CPU ------
1>  MultiplayerAPI -> E:\Steam\steamapps\common\RimWorld\Mods\Multiplayer\Assemblies\0MultiplayerAPI.dll
2>------ Rebuild All started: Project: Multiplayer, Configuration: Debug Any CPU ------
2>  '"E:\Steam\steamapps\common\RimWorld\Mods\Multiplayer\Source\..\Publicise\Publicise.exe"' is not recognized as an internal or external command,
2>  operable program or batch file.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1328,5): error MSB3073: The command ""E:\Steam\steamapps\common\RimWorld\Mods\Multiplayer\Source\..\Publicise\Publicise.exe" "E:\Steam\steamapps\common\RimWorld\Mods\Multiplayer\Source\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll" "E:\Steam\steamapps\common\RimWorld\Mods\Multiplayer\Source\..\Publicise"" exited with code 9009.
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

What I suggest

I got the project to build using the Publicize tool from the repo https://github.com/jacobEAdamson/publicize. With a little renaming and moving the tool into the folder expected I got the project to build.

  1. Shouldn't this tool be provided in this repo?
  2. If not, could it be documented as a step in the book?

1.1 Desync when capturing a pawn

  • as reported by ass on the Discord
  • Only things I'm running are Harmony, Core, and MP

a desync right around when a colonist picked up a downed pawn to capture and started bringing it to a bed. I thought it was happening if no prisoner-designated beds existed before hosting the server but now after seeing the second behavior I can't reproduce that.
the pawn takes the capture order and the game desyncs when the pawn starts moving
Rehosting lets the capture continue
The captured still seems to be part of their original faction. Unless the prisoner status is the temp faction?
desync_before_capturing_pawn.zip

Desyncs when Traders/Raiders Arrive (unsure how to reproduce)

There have been several reports as of 1.1 of desyncs when Traders/Raiders arrive, though its unclear exactly why, as most don't experience that.

It may be related to 'Pause on Events' having a different setting between clients. That, along with some other settings like Pause on Load and Run in Background are supposed to be forced to specific values when Multiplayer is active, but those patches seem to be inconsistently working in 1.1...

Psycast issues & desync

(Fix task list if you want use it)
Desync :

  • FarSkip from caravan

NotWorking :

  • FarSkip from map
  • Neuroquake

Using FarSkyp from caravan is desyncing the game

• 1 Rimworld version: [1.2.2723 rev661]
• 2 Multiplayer mod version: [0.5.1.8]
• 3 Does the issue/desync happen when only harmony and the mp mod is enabled? [Yes]
• 4 Have you both tried to resubscribe/redownload* the mods?: [Yes]
• 5 Have you both tried to delete the "data" folder found in rimworlds directory and verifed the integrity of the game afterwards?: [Yes]
• 6 Are you all running the same language for rimworld?: [Yes, English]
• 7
Desync-07.zip


For psycast FarSkip from the map and Neuroquake nothing happen when we try using them

The pawn is Standing for 3/4 sec then Watching for targets

[RW Royalty 1.2.2723 rev661, MP:0.5.1.9999] Utility: SmokePop Belt and BroadShield

(Fix task list if you want use it)
Desync :

  • SmokePop Belt
  • BroadShield

Using them when drafted will cause desync, gui isn't synced


Report from discord:

For both:
Without desync trace:
https://discordapp.com/channels/524286515644203028/696348995030614036/744605888433750076
https://discordapp.com/channels/524286515644203028/696348995030614036/744476216609996861


Only for SmokePop Belt
Desync trace:
https://discordapp.com/channels/524286515644203028/696348995030614036/745057442513289227


Only for BroadShield

Desync trace:
https://discordapp.com/channels/524286515644203028/696348995030614036/745365460618313808

Add all supported Languages

  • English
  • French
  • German
  • Polish
  • Russian
  • Italian
  • Spanish - Spain & Mexico
  • Czech
  • Danish
  • Dutch
  • Hungarian
  • Japanese
  • Norwegian
  • Portuguese
  • Portuguese - Brazil
  • Simplified Chinese
  • Swedish
  • Traditional Chinese
  • Turkish
  • Ukrainian
  • Finnish
  • Korean
  • Romanian

[RW 1.2.2753r715 Royalty 1.2, MP:0.5.2.0] Linux / Windows refuse to connect (End of line encoding difference, unix (LF) / windows (CR LF))

When the multiplayer mod is comparing configs and ensuring the systems are synchronized it fails to account for differences in line encoding between platforms.

diff -ub shows no difference (-b ignores non-printing characters like line endings), and the difference in file-size also makes a strong case that the only difference is the line endings.

Examining the smaller two files with a hex-view also makes it clear that line endings are the cause of the difference.

543 ./Config/Mod_1127530465_RimatomicsMod.xml
556 ./Windows/Mod_1127530465_RimatomicsMod.xml

5119 ./HugsLib/SpottedMods.xml
5230 ./Windows/SpottedMods.xml

This is where the bug exists

var localFileContents = File.ReadAllText(localFileName);

I agree with this stackoverflow example, that a regular expression is the correct answer.

https://stackoverflow.com/a/8196219/825613 ( string result = Regex.Replace(input, @"\r\n?|\n", replacementString); )

I hereby assert that the following is obvious to anyone skilled in the 'art'. I refuse to attempt to claim any copyright or any other sort of rights in relation to it. I just want this mod to work.

var localFileContents = Regex.Replace(File.ReadAllText(localFileName), @"\r\n?|\n", "\n");
Additional documentation if necessary:
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.replace?view=netcore-3.1#System_Text_RegularExpressions_Regex_Replace_System_String_System_String_System_String_

Updating to 1.1

Current situation: Multiplayer works with minor issues, ready to ship.

Done...

  • Client/Multiplayer.cs
    • harmony.DoAllMpPatches() need checking
    • DoPatches() need checking
    • CheckInterfaceVersions() fails with any MPAPI mod user
  • Client/MultiplayerMod.cs
    • Arbiter doesn't re-launch when rehosting
    • LoadableXmlAssetCtorPatch, xmlAssetHashes has a concurrency issue
  • Client/Designators.cs
    • Harmony 2.x can't handle some designators patches.
  • Client/MpPatches.cs
    • MpPatch incompatible with Harmony 2.x
  • Client/ScribeUtils.cs
    • SaveLoad fails, XmlNodeWriter doesn't exist
    • Saving doesn't work
    • Hosting a 2nd time in the same game session crashes
  • Client/Sync/SyncSerialization.cs
    • Work table bills aren't working
    • Selecting a quest creates a bunch of spam
    • MakeGenericMethod fails under mono 4.7.2
  • Multiplayer.Common.ServerPlayingState
    • HandleSelected() needs to account for 1.1 bigger selection limit.
  • Client/Patches.cs
    • Drafting colonists and trying to issue orders causes SyncWorker not implemented
    • Colonists unable to drop weapons
    • DLC features need patching (Quests, Powers, etc)
  • Client/Blueprints.cs
    • Failing transpilers
  • Publisher
    • Convert to Task and publish to nuget for easier deployment
  • Client/DebugTools.cs has been excluded from build
    • Harmony transpilers need recheck
  • Client/Optimizations.cs
    • [x ] Evaluate if the optimizations are still required
  • Client/ClientNetworking.cs
    • A white window appears under Windows OS when Arbiter starts

For the future...

  • Synchronization
    • Consider removing SyncDelegate

[RW Royalty 1.2.2723 rev661, MP:0.5.1.9999] Quest issue: "Mission BanditCamp"

This quest send shuttle to pick some of you pawn. The shuttle travel the map and when it's the time to generate the bandit camp, we have this debug and shuttle stuck

This is 3 last report for this quest
https://discordapp.com/channels/524286515644203028/524286515644203030/744761888298238032

https://discordapp.com/channels/524286515644203028/524286515644203030/744330225482989588

https://discordapp.com/channels/524286515644203028/526116932655775744/744161856893222943

The debug log:

System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.TransportPodsArrivalAction_Shuttle.ShouldUseLongEvent (System.Collections.Generic.List`1[T] pods, System.Int32 tile) [0x00000] in <7b345446a85d4ed599f9c604ae61854b>:0 
  at RimWorld.Planet.TravelingTransportPods.Arrived () [0x0012f] in <7b345446a85d4ed599f9c604ae61854b>:0 
  at RimWorld.Planet.TravelingTransportPods.Tick () [0x00031] in <7b345446a85d4ed599f9c604ae61854b>:0 
  at RimWorld.Planet.WorldObjectsHolder.WorldObjectsHolderTick () [0x00029] in <7b345446a85d4ed599f9c604ae61854b>:0 
  at RimWorld.Planet.World.WorldTick () [0x00016] in <7b345446a85d4ed599f9c604ae61854b>:0 
  at (wrapper dynamic-method) Verse.TickManager.Verse.TickManager.DoSingleTick_Patch1(Verse.TickManager)
Verse.Log:Error(String, Boolean)
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch1(TickManager)
Multiplayer.Client.MultiplayerWorldComp:Tick()
Multiplayer.Client.TickPatch:TickTickable(ITickable)
Multiplayer.Client.TickPatch:Tick()
Multiplayer.Client.TickPatch:Prefix()
Verse.TickManager:Verse.TickManager.TickManagerUpdate_Patch2(TickManager)
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

[RimWorld + Royalty. 1.1.2654. Multiplayer: 0.5.1.5] Quest :Destroy camps for Royal favor

This is a link to my post on discord with the desync file + savefile :
https://discordapp.com/channels/524286515644203028/526116932655775744/735475916196544512

This is the reward letter
image

And the letter (no debug in)
image

And when you choose someone it desync for the other people

The debug of the quest:

https://pastebin.com/mcBvk0AY (Expired on 24/07/2021)

You can load the save with only Harmony, Multiplayer + base file it's the same

Issue with sorting storage

Hello, we have a problem when we change the sort of storage areas.
For example, the game crashes when I allow the pieces of stone to be stored in the storage areas.

There is the log:

RimWorld 1.1.2640 rev935
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489AD0090.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-000001648766D010.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489AC0080.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489BCB010.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489BDCA20.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489C22840.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489C39850.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-0000016489D24020.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-000001648768E190.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/data-000001648A146150.dll
Current API version: 0.1
Translation data for language French has 20 errors. Generate translation report for more info.

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Plugins: Failed to load 'simple_profiler' because one or more of its dependencies could not be loaded.

(Filename: C:\buildslave\unity\build\Runtime/Misc/Plugins.cpp Line: 292)

Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\simple_profiler
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/simple_profiler
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\libsimple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/.\libsimple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/libsimple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/libsimple_profiler.dll
Fallback handler could not load library D:/Jeux/RimWorld.v1.1.2640/RimWorldWin64_Data/Mono/libsimple_profiler.dll
Multiplayer version 0.5.0.25
Player's username: MajorAeon
Processor: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
Exception during Sync initialization: System.TypeInitializationException: The type initializer for 'Multiplayer.Client.SyncDelegates' threw an exception. ---> System.Exception: Couldn't find method or property b__58_2 in type RimWorld.Building_TurretGun
at Multiplayer.Client.Sync.RegisterSyncMethod (System.Type type, System.String methodOrPropertyName, Multiplayer.API.SyncType[] argTypes) [0x0006f] in <82d92488c9c049b7bc529604cdbe3d7e>:0
at Multiplayer.Client.SyncMethod.Register (System.Type type, System.String methodOrPropertyName, Multiplayer.API.SyncType[] argTypes) [0x00000] in <82d92488c9c049b7bc529604cdbe3d7e>:0
at Multiplayer.Client.SyncDelegates..cctor () [0x001ba] in <82d92488c9c049b7bc529604cdbe3d7e>:0
--- End of inner exception stack trace ---
at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(intptr)
at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (System.RuntimeTypeHandle type) [0x0002a] in <567df3e0919241ba98db88bec4c6696f>:0
at Multiplayer.Client.SyncHandlers.Init () [0x00037] in <82d92488c9c049b7bc529604cdbe3d7e>:0
at Multiplayer.Client.Multiplayer..cctor () [0x002c6] in <82d92488c9c049b7bc529604cdbe3d7e>:0

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Anotated patches
General designation patches
non-deterministic patches
non-deterministic patches
floating point patches
map time gui patches
Mod patches
The Arbiter 0 Net client connected
ArgumentNullException: Value cannot be null.
Parameter name: src
at System.Buffer.BlockCopy (System.Array src, System.Int32 srcOffset, System.Array dst, System.Int32 dstOffset, System.Int32 count) [0x00003] in <567df3e0919241ba98db88bec4c6696f>:0
at LiteNetLib.Utils.NetDataReader.GetRemainingBytes () [0x00020] in <33d01d33713f4808bb562d0819377e58>:0
at Multiplayer.Client.MpClientNetListener.OnPeerDisconnected (LiteNetLib.NetPeer peer, LiteNetLib.DisconnectInfo info) [0x00000] in <82d92488c9c049b7bc529604cdbe3d7e>:0
at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00089] in <33d01d33713f4808bb562d0819377e58>:0
at LiteNetLib.NetManager.PollEvents () [0x0003b] in <33d01d33713f4808bb562d0819377e58>:0
at Multiplayer.Client.OnMainThread.Update () [0x00014] in <82d92488c9c049b7bc529604cdbe3d7e>:0

(Filename: <567df3e0919241ba98db88bec4c6696f> Line: 0)

MP Compatibility Mod

What does it mean to have MP compat (3) and MP compat (4). I have downloaded the mp compatibility mod but the numbers are still [1]/ [2] / [3]

Colorblind cursor mode?

I'm moderately colorblind, and the red cursor of the other players is almost indistinguishable for me.

Is there any way to change the color to something else? I'd prefer something blue or high value green, but a configurable option would be good too.

Feature: Auto-sync Mod Configs on Connect

One source of desyncs + user friction is the need to sync up the mod configs from the more complex mods like Simple Sidearms.

Building on #41, it'd be neat to synchronize those on connect too - possibly any unknown file in the Config/HugsLib dir, excluding a whitelist of client-only mods like RimHUD/KeyPrefs.xml/Knowledge.xml

Example of problem:

  1. A stacking mod is used, like https://steamcommunity.com/sharedfiles/filedetails/?id=826366050
  2. Host configures the stack size to be 20x
  3. Client is using the default of 10x
  4. the game appears to work in sync, until a pawn goes to stack something above 10, at which point they'll desync.

Possible solution shapes:

  1. (status quo) instruct users, via FAQ's, to manually sync most xml files in AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Config with their clients, redoing it if they edit anything
  2. Get those mods to sync their configs using the MultiplayerAPI (we might need to add more helpers to facilitate that)
  3. Transfer configs from host -> client on connect, forcing a restart if any configs changed
  4. Transfer configs from host -> client... somehow triggering the mods to reload their configs?? Can that ModManager help with this?

along with some sort of 4. backup the client's configs, and let them restore them... somewhen.

Technical observations

  • Most mods seem to load their config from disk on initialization (on the main menu), before any connection can occur
  • Most mods either use Rimworld's builtin Mod.GetSettings or HugsLib's equivalent - maybe we can patch those to invent a reload()?

"multiplayer" doesn't appears

When i'm playing and activate the mod, the tab "multiplayer" isn't displayed. What do I do? I have the harmony and i'm in the correct version of the game.

Arbiter does not join when redirecting savedatafolder

Reproduced on vanilla Rimword+Royalty 1.2.2753 (both Steam and non-Steam) on Windows 10 20H2 with only Harmony and Multiplayer (both latest versions) enabled.

Steps to reproduce:

  • Reset Rimworld to vanilla, and enable only Harmony and Multiplayer (to ensure no mod conflicts)
  • Run Rimworld with -savedatafolder=Local
  • Start a new colony (Any settings, just get to the ingame map)
  • Host a server: LAN + Run Arbiter
  • Notice that The Arbiter never joins the game

The abiter_log.txt shows the following relevant lines:

Command line arguments: -batchmode -nographics -arbiter -logfile arbiter_log.txt -connect=127.0.0.1:55054 -savedatafolder="Local"
RimWorld 1.2.2753 rev705
Save data folder overridden to "Local"
Critical error in root Start(): System.ArgumentException: Illegal characters in path.
  at System.IO.DirectoryInfo.CheckPath (System.String path) [0x0002f] in <567df3e0919241ba98db88bec4c6696f>:0 
  at System.IO.DirectoryInfo..ctor (System.String path, System.Boolean simpleOriginalPath) [0x00006] in <567df3e0919241ba98db88bec4c6696f>:0 
  at System.IO.DirectoryInfo..ctor (System.String path) [0x00000] in <567df3e0919241ba98db88bec4c6696f>:0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo..ctor(string)
  at Verse.GenFilePaths.get_SaveDataFolderPath () [0x000ec] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.GenFilePaths.FolderUnderSaveData (System.String folderName) [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.GenFilePaths.get_ConfigFolderPath () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.GenFilePaths.get_PrefsFilePath () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Prefs.Init () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Root.CheckGlobalInit () [0x0004f] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Root.Start () [0x0000a] in <6326ac03f61f45efb3178f3bfd084139>:0 
 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Critical error in root Start(): System.ArgumentException: Illegal characters in path.
  at System.IO.Path.Combine (System.String path1, System.String path2) [0x0003e] in <567df3e0919241ba98db88bec4c6696f>:0 
  at Verse.GenFilePaths.FolderUnderSaveData (System.String folderName) [0x00005] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.GenFilePaths.get_SavedGamesFolderPath () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.GenFilePaths.get_AllSavedGameFiles () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.SaveGameFilesUtility.GetAutostartSaveFile () [0x00009] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Root_Entry.Start () [0x0001e] in <6326ac03f61f45efb3178f3bfd084139>:0 
 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

This is then followed by a the following entries endlessly repeating forever:

Root level exception in Update(): System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.MusicManagerEntry.StartPlaying () [0x000a1] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at RimWorld.MusicManagerEntry.MusicManagerEntryUpdate () [0x0001b] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Root_Entry.Update () [0x00017] in <6326ac03f61f45efb3178f3bfd084139>:0 
 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Root level exception in Update(): System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.ResolutionUtility.Update () [0x0001f] in <6326ac03f61f45efb3178f3bfd084139>:0 
  at Verse.Root.Update () [0x00000] in <6326ac03f61f45efb3178f3bfd084139>:0 
 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Have confirmed that The Arbiter works perfectly if the savedatafolder is not set, however this means it is not possible to have a "clean portable multiplayer copy" in order to keep config/mods/etc clean and always matching.

I have not been able to determine if this is an issue with the Rimworld core, as it only affects The Arbiter. The actual client loads from the specified folder just fine and multiplayer connects and works.

Download out of date

Please add a released version for 1.2. It works on Steam workshop but the download says it's for 1.1 only

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.