#Lobby Control & Matty's Fixes
1 messages ยท Page 6 of 1
please disable the Db logging in AsyncLoggers
on it
or use AsyncLoggers_Experimental but i will push it to release really soon so not really needed
no problem, it's a bug i've already fixed but as the version has some other changes i'm still testing
@fallen talon soo i'm not using vscode but Rider from JetBrains and neither the nuget package nor the dotnet terminal command works fror downloading it ๐
thx for the help in advance
the only thing I'm seeing being an issue @unreal oriole is that adding a network prefab using native NetCode will break vanilla compatibility
So that might not be an option
oh... yeah i'd like to keep vanilla comp if possible
I have an idea of how to fix it but haven't had time to implement that yet
not really necessary but would be nice if possible
I develop using rider :)
aye
I'm interested in this though - which command did you try and what error did it yield ?
dotnet tool install -g Evaisa.NetcodePatcher.Cli this just returns that no dotnet is present, which i belive is an issue with CMD not using the project dotnet installation probably
while nuget says:
also differently from Netcode Validator i guess i have to manually add the Components to the gameObjects and sync them with the network object ๐ค
auto correct brother is expierimental still okay to use or should i move to original
at the moment they are aligned
i will always keep experimental at least in line with the release branch
I'm not sure of the extent of what runtime validator lets you do, but native NetCode is quite strict
netcodeValidator.BindToPreExistingObjectByBehaviour<PlayerNetworking, PlayerControllerB>();
netcodeValidator.BindToPreExistingObjectByBehaviour<ShotgunNetworking, ShotgunItem>();
it allowed me to do this and not have to create the *Networking objects as it would create them himself ๐ค
that also would likely break vanilla compatibility
Just in a much harder to identify way ๐
rip
Wat
Oh
Oh god
Is your code on GitHub
I see the issue ๐ญ๐ญ
bestie have you heard of 'SDK-style' projects
i havent pushed this changes to github yet. but yeah the PostBuildTarget has to be rewritten at one point
i just retrofitted the one from ShipLobby
no that's fine
that's not causing this
You're using an old csproj format
Well, 'style'
as i said all this files come from ShipLobby origianlly.. i need to take my time and redo the project files
At the top of the csproj remove the Import line
Then change the Project line to read
i've had so many issues
Duplicate 'Compile' items were included
๐ค
Remove all the explicit compile tags
They are implicit now
Where is it used ...
Convert packages.json to <PackageReference> tags inside an ItemGroup in the csproj
Then delete packages.json
i do not have the packages.json
Good
Delete all the property groups at the top of your csproj
Add a single one in their place
nop
Set
- AssemblyName (you know)
- Product (mod name, can have spaces)
- Version (whatever)
- do not set output type
- set TargetFramework to netstandard2.1
- set LangVersion latest
we're not there yet lol
and screenshot the result
Abso-fucking-lutely
TargetFrameworkVersion specifies a version of '.Net Framework' to use with your project
but we want to use Netstandard, not net framework
thanks for the help btw... one day i would have had to do all this, but i was procastinating ๐
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootNamespace>AdditionalNetworking</RootNamespace>
<AssemblyName>AdditionalNetworking</AssemblyName>
<Product>Additional Networking</Product>
<Version>0.1</Version>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>Letest</LangVersion>
</PropertyGroup>
<ItemGroup>
<Content Include="GameDirectory.targets"/>
<Content Include="PostBuildEvents.targets"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.1" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="TeamBMX.LobbyCompatibility" Version="1.0.1" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>
<Import Project="PostBuildEvents.targets"/>
<!-- Embedded Debug -->
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>embedded</DebugType>
<PathMap>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))=./</PathMap>
</PropertyGroup>
</Project>
Remove the Import project tag that imports Microsoft.csharp.targets
No worries lmao, I've been fixing people's build system setup since December
now complains in the AssemblyInfo
Delete it
Delete the whole properties folder
i mean it's my fault for not starting from the template but forking from a decently old mod
It compiled ๐ช
now to see if it worked time to dnspy
Meh, it's nice to pick up where someone left off and fix them up
Are you spying with rider's decompiler
dnSpy
Did you definitely refresh the caches
i never had the file open in DnSpy till now
nvm was reading from obj
:)
yeah the one in bin has the patch
obj is intermediate files
bin output
both should be excluded from version control
yeah they are excluded
ok and it correctly used the patched one for the zip file
yeah adding the component with AddComponent does not sync it with the NetworkObject ๐ค
i guess i should make somehow static Rpcs and passing the networkObject they refer to as the first parameter ๐ค
non
Make your own network prefab
instantiate it when the session starts
and you can use NetworkObjectReference params to refer to other network objects if you need to
yeah that's what i'm doing now i belive ๐ค
looks good so far
with now i mean now that i'm rewriting
Aye
When you setup the new prefab, there's a big gotcha
which is assigning the globalObjectIdHash on the network object
It isn't done for you when you AddComponent at runtime
yeah i do not know how to do that so, once i finish this part i was going to ask how to do it
basically you use BepInEx's assembly publicizer to make the field public, and assign it as usual
one sec
no i mean even making the prefab itself
oh, I see
You can new GameObject at runtime
Unity says it's ill advised but 
i do already use the assembly publicizer. made things so easy to reference instead of having to use Reflection
yeah it's crazy
basically
- make a new GameObject (your container) with hide flags 'hide and don't save';
Object.DDOLit; disable it - make a new GameObject (your prefab) with a recognisable name, and set its parent transform to the container transform
- add a network object component to the prefab and set its object id
- add your behaviour to your prefab
I think that's it
when you suggest to do so?
like MoreCompany does in [HarmonyPatch(typeof(NetworkSceneManager), "PopulateScenePlacedObjects")] ?
that is for adding network behaviours to existing in-scene placed network objects
I create my prfab in the plugin Awake
Register it in GameNetworkManager.Awake, then spawn it at... StartOfRound.Start
I think
@fallen talon something like this?
Remove the setactive false for the prefab
mmk
other than that, yeah looks ok
then how do i spawn it in the StartOfRound Start?
i instantiate the prefab as is?
also i do acces the components with a static Instance property it should work right?
do not mind the comment i have to change it
Latest version of lobby control isn't loading. I can provide logs if you need more info.
AsyncLoggers is failing to move the DB and that is cascading to other mods
Getting the same error for matty's fixes
user AsyncLoggers Experimental or disable DBLogging till i push it to release
Copy that, thank you!
np
Experimental seems to be working. No errors in the log and mod is functioning as expected.
@fallen talon if i run the NetworkObject.Spawn() on the host it works but then it complains on the clients as the prefab cannot be found ๐ค
is there a way for me to initialize it w/o having to Spawn it?
you have to register the prefab
with (something) AddPrefab
on all clients
๐ค no way ( even using the publicizer ) to mark the NetworkObject as spawned w/o actually running the Spawn? ( like MoreCompany does for the extra players)
what benefit would there be to doing so?
the object would not exist on the clients' machines so there would be nothing to receive RPCs
trying vanilla comp ๐ if not i'll go the prefab way
yeah i'm trying to have it as clientOptional
even if there were, I don't think it'll work with people that do have the mod
imagine you were spawning 1000 of these at the same time
how is NetCode supposed to know which instances should represent the same network object across the network
nvm going the perab way... sadly i still cant find how to register the prefab ๐ค
ok got it with a postfix in NetworkManager :/
@fallen talon really thanks for the help and the moral support ๐
now it's all on me and my ability to code decently ๐
Aye I do mine in a postfix to one of GameNetworkManager's lifetime methods
but it's same kinda thing
can confirm this prevents vanilla clients from connecting :/
Aye
ping me if you'll ever find a way to avoid that ๐
I've an idea for a library that allows registering 'mod-specific' prefabs
which would get around it
But I don't have time presently
[Netcode] NetworkConfig mismatch. The configuration between the server and client does not match
no i do understand why. and it makes sense
it would be nice if i had a way to add my components w/o making prefabs but while i could do it for the ShotgunItem i cannot add it to the Player Object as it does not have a prefab
you can use the more company method for editing in scene placed objects
and there is a prefab somewhere, it's just not used all the time
if i do that in the PopulateScenePlacedObjects will it correctly attach the components to the networkObject?
yes it will - however you'll still be breaking vanilla compatibility (potentially)
uh? does unity complain if a client receives an Rpc for a non existing component?
network behaviours are assigned an index based on a traversal of the network object's children and their components
I think it's breadth first
So if you add a network behaviour to the root GameObject, it's possible that you offset the indexes of some of the vanilla behaviours
public ushort NetworkBehaviourIdCache;
this one?
which means that RPCs intended for another behaviour, get received by your behaviour instead
as the variable name implies that is just a cache value
mmm ๐ค
and RPCs from your behaviour are received by a vanilla behaviour
(when playing with a vanilla client)
so although it appears to work, it actually fucks a lot of shit up potentially
yeah, just trying to find it in code
ik i'm trying to do stuff i'm not supposed to
but isn't that 90% of what modding is ๐คฃ
thanks ๐ฌ
๐
i'll have to wait for your library then i guess ๐ค
will work as a Everyone mod for now
@unreal oriole
Matty Fixes: Error report when trying to read the Pentagram from Scarlet Devil Mansion.
A non-interactive texture used to spawn enemies.
[18:21:54.6282042] [Error :Matty's Fixes] Pentagram crashed! System.InvalidOperationException: Nullable object must have a value.
at System.Nullable1[T].get_Value () [0x00008] in <787acc3c9a4c471ba7d971300105af24>:IL_0008 at MattyFixes.Patches.ItemPatches.CalculateColliderBounds (UnityEngine.GameObject go) [0x00272] in <0546a62864534675ab1f246fbe6d32dd>:IL_0272 at MattyFixes.Patches.ItemPatches.StartPrefix (GrabbableObject __instance) [0x001be] in <0546a62864534675ab1f246fbe6d32dd>:IL_01BE [18:21:54.6493922] [Error :Matty's Fixes] Bomb Failed to mark prefab Mesh Readable! System.ArgumentException: Mesh 'BlueWirePath' index buffer is null at (wrapper managed-to-native) UnityEngine.Mesh.GetIndexBufferImpl(UnityEngine.Mesh) at UnityEngine.Mesh.GetIndexBuffer () [0x00012] in <e27997765c1848b09d8073e5d642717a>:IL_0012 at MattyFixes.Patches.ItemPatches.MakeReadableMeshCopy (UnityEngine.Mesh nonReadableMesh) [0x00088] in <0546a62864534675ab1f246fbe6d32dd>:IL_0088 at MattyFixes.Patches.ItemPatches.MakeMeshReadable (UnityEngine.GameObject go, System.Boolean updateOriginal, System.Collections.Generic.Dictionary2[TKey,TValue] reverseMap) [0x0004b] in <0546a62864534675ab1f246fbe6d32dd>:IL_004B
at MattyFixes.Patches.ItemPatches.StartPrefix (GrabbableObject __instance) [0x00125] in <0546a62864534675ab1f246fbe6d32dd>:IL_0125
Lobby Control: Error report, disliked Weather Tweaks. End of round break, unable to pull the lever. Lobby Control v2.3.5/WeatherTweaks 0.4.6
[18:21:54.6493922] [Warning:Matty's Fixes] Bomb Added to the ignored Meshes!
that's perfectly fine MattyFixes intercepted the error and handled it
oh wait no pentagram is failing.. let me chec
bomb is handled
๐ it's an exception while logging another exception... all fine you can ignore it. problem is somewhere else
probably on WeatherTweaks
another option that should completely avoid adding a new NetworkBehaviour would be to just manually add the messages to the vanilla ones like I did in NutcrackerFixes
it's a lot more work than using a code generator though of course
it would be cool if those patchers supported generating messages and attaching them to existing behaviors
yeah i'm deciding if it is worth going the full manual way or not ๐ค
on another note @fallen talon any idea why after your changes to the csprj i get this errors compiling?
Error CS7069 : Reference to type 'Label' claims it is defined in 'mscorlib', but it could not be found
use nuget package references to reference BepInEx instead of local .dll references
you can publicize a package reference
add that file to your project root (with the .sln)
Then remove the BepInEx, harmony references and package reference BepInEx.Core , version 5.4.21
now it's complaining about the AssemblyInfo Attribute and MonoMod crashes on boot ๐ค
Warning CS0436 : The type 'IgnoresAccessChecksToAttribute' in 'C:\Users\frnmt.nuget\packages\bepinex.assemblypublicizer.msbuild\0.4.1\contentFiles\cs\any\IgnoresAccessChecksToAttribute.cs' conflicts with the imported type 'IgnoresAccessChecksToAttribute' in 'MonoMod.Utils, Version=25.0.3.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in 'C:\Users\frnmt.nuget\packages\bepinex.assemblypublicizer.msbuild\0.4.1\contentFiles\cs\any\IgnoresAccessChecksToAttribute.cs'.
Remove the monomod reference
i do not have monomod references
show me your whole csproj
thanks
Remove the Import line at the top of the csproj
I don't think you need the system.runtime reference
I don't think you need the ReferencePath thing
Don't think you need the PathMap thing either
you have References in your post build event file ๐ญ๐ญ
Move all the references to csproj
nothing changed
Correct
Send me the new iteration of the csproj, preferably with a .txt extension
(mobile OS when magic header: ๐๐)
oh this warning can be safely ignored
sorry, I thought it was a compile error
it's breaking the boot tho
MonoMod crashes on boot?
I mean, it isn't
once i try to load the mod ingame
hahaha
i remvoed the other mods so ( about LobbyControl ) only a Parameter __runOriginal does not contain a valid index from Harmony appears ๐ค
once i fix this i'll try and report the monomod error from async
sounds like your monomod hookfiles need regenerating
โ
Wait, from Harmony??
What on earth have you done
yeah from harmony... i'm doing one mod at a time
I don't think runOriginal is a thing
can you ctrl F for __runOriginal in your code

is it a ref bool
nope a normal bool
oh well i removed it and it works now... but kinda would like to still have it ( it was a nice redundancy check if another mod was suppressing the call )
aye
back to Async... BepInEx is not publicized even with the Nuget.config
you need the publicize = true
I know why it is but is tricky to explain
BepInEx.baselib
Add that package reference and publicize it
that compiled ๐
and no monomod errors
ok monomod errors come from @brisk sierra MonoMod_Debug_Pattcher ๐ค
Lol
yeah, see the message that I posted #1220288559760805988 message
why did i even had LethalLib in my debug profile... nothing was uisng it ๐
problem solved... it was not a problem ๐
really thanks @fallen talon ๐
now i would be happy to remove the Attribute warning but evrything is working so i can just ignore my OCD and leave it be ๐
you can ignore particular warnings in MSBuild by setting some property
what did i break again ๐ณ
too late.. it was alsready diagnosed to not be neither of us fault ๐
@fallen talon reporting in case you're still intrested:
i've got it working using a mixed approach
i do create the prefab "GlobalObject" but i do not register it as a NetworkPrefab, instead i add it with a postfix in PopulateScenePlacedObjects
this means that if the host has the mod the Object gains a NetworkObjectID otherwise it stays with id 0
id 0 is invalid so no broken rpc is sent to a vanilla host. and i keep track on the host side of which clients report having the mod so i do not send Rpcs to clients that do not have it
so far it seems to be working as expected ๐ค
that's an interesting approach, I like it
Perhaps I can do that for csync as a stopgap
it does throw the "cannot find prefab" error on vanilla clients but they proceed without issues so it seems to be all fine
for the sake of modpack makers and hopefully vanilla speedrunners, i've released:
TooManyItems
small mod containing a standalone version of Lobby Control Item Limit remover ( both saved and synced items ) and Matty's Fixes OutOfBoundsFix ( prevent items from falling below ship )
first like let's go
it's not even on r2 yet ๐
๐
also MIT license if anybody ,in a future where i'm not modding anymore, wants to keep it alive
@unreal oriole Did you break something?
Cus lobbies are being hard capped at 4 right now
When a 5th joins they instantly get kicked
What have you done sir?
@unreal oriole I should also state the new update made TwoRadarMaps throw some pretty big stack traces too, I think your new radar patch might have been conflicting with it
when does it print those errors and do you have an example log?
Let me reupdate it rq
I do quite a lot of patches to things relating to the radar map, but I didn't recognize what issue LobbyControl is fixing with the recently added patch yet
On startup
This error under it
Idk why 2.3.6 is breaking more than 4 people from joining though that's a big issue too
does an error not coincide with that too? seems like there probably would be one
I never got one earlier when a 5th person tried to join
I looked
They would just join and then instantly get dced
oh curious
It's weird that it's breaking your mod like that though
https://github.com/mattymatty97/LTC_LobbyControl/blob/lobby_control/LobbyControl/src/Patches/JoinPatches.cs There's the new code though
You may be able to see what got brokey
XD
it surprises me that it didn't happen sooner given that Matty already had a fix for a radar bug in this mod
I touch just about every single function related to radar targets to fix the vanilla bugs with it
Haha
Yeah and sadly there's no config option to disable the radar patch in Lobby Control rn either for compat
@unreal oriole You may wanna add the option to disable Lobby Control's radar fix so it doesn't break TwoRadarMaps
I'll take a look first and see if we're duplicating patches here
we might be, i'll add a config swich for it
what i do is in PlayerControllerB.SendNewPlayerValuesClientRpc i remove
and replace it with
@solar monolith ๐ค
about the player count i have not changed anything from the previous Experimental release ( well other than the csprj files, but thoose should not cause this kind of issue )
@fallen talon right?
any logs for this problem?
Like I said it wouldn't throw any errors
It would just insta kick the 5th player that tried to join
no i need the normal info/debug lines around the time the 5th joined
Well I don't have the logs anymore unfortunately v.v
ah, this is actually pretty similar to the patch I applied, hadn't got to my PC to check what I did all that time ago lol
mine uses a function I wrote to find the index of the transform, but honestly your solution using the existing function is nicer and I should've thought of doing that lol
only downside is it breaks the assumption that something will assign to TransformAndName.name there
not sure what the best way to make the second patch that runs fail silently if the other already did it
yeah because i Nop the shit out of the original call
๐คฃ
why not just delete the instructions though?
I guess it's a bit more of a pain and doesn't really matter though
i prefer to keep the index values.. i know of some mods that patch using specific instuction numbers instead of iterating ๐
if you really wanted to make my life miserable though you could look at the other bug fixes that I have in https://github.com/Zaggy1024/LC_TwoRadarMaps/blob/main/TwoRadarMaps/Patches/PatchVanillaBugs.cs lmao
I refuse to acknowledge it if someone does that
I didn't know that was a thing and I will promptly forget that I heard you say that
but yeah, I should definitely make my patch work the way yours does, there's no reason for me not to I think
as far as the function called anyway
it took me a while to figure out too.. originally i was iterating over all the radar targets and re-assigning the names based on the components of the transform ( in Matty Fixes ) but that somehow was still not working ๐ค
huh, that's odd
also did you figure out why the names become mismatched? it (or one of the causes at least) is a pretty fun one
yeah it's the damned radar boosters
(also got flagged by automod for that message ๐ญ)
what a stupid way of ensuring the boosters are at the end of the list
I don't think it's so much ensuring they're at the end of the list as it is ensuring that they have a consistent order across clients
but yeah it's a bit of a silly mistake
I was a bit confused reading your changelog though since I think it mentioned late joining?
yeah the name mismatch only happens if late joining
oh no that's not true
as before the first land there is no way to enable a booster ๐
wait huh?
you cannot grab a booster before landing
the players' network IDs don't depend on the order in which they join
unless another mod allows it
so I'm not sure what landing has to do with it
you can repro the issue by just having two players join a lobby in orbit and then spawning a radar booster and activating it
it sorts them based on the GameObject NetworkID that is based on the host ๐ค
can even go to the test map with dev tools to pick it up so you can do it in orbit
and activating it
that's the point you cannot in vanilla before landing
you cannot even grab it
sure, but what does that have to do with late joining? the players can already be in the lobby and it'll do it
oh wait you mean because the names don't get replaced I suppose
it's odd because I'm pretty sure I saw it happen without joining after the sorting happened, but maybe that was due to some code I had in TwoRadarMaps
the bug happens only if you join a lobby with a radar booster active... that is only possible when late joinig ( or if a mod like GI allows you to pick up the booster before landing )
the radar booster doesn't have to be active, it just has to have been activated in the past
instead of "you" is better to say "a player"
but yeah
in vanilla, I suppose I see what you mean
iirc the reason why it happened more often for me was because of another vanilla bug fix, where I would sort the transform list immediately on load to keep the order consistent
since otherwise you can switch and it'll keep the same target
I had forgotten that part
I think what I can do to make it soft fail in TwoRadarMaps is check if there's still an assignment to TransformAndName.name in the function, and if not, I can print nothing if your mod is present and print an error if not
and perhaps same on your end?
i mean i just plan on putting a config toggle and allow users to just toggle it off if they have TwoRadarMaps
hmm I see
I'd rather it require no user input so maybe I'll soft depend so that I can always load after and check that
a config option will just lead to more questions from users
either "do i leave this option on?", "what does this option do?" or "why am I getting this error in TwoRadarMaps??"
yeah without soft depending there is no way to ensure either of us load before the other ๐
right, but if we both check the same thing then it's the same effect
I'm fine with either solution
it's easy enough on my side since I have a lot of utilities for transpilers
if I just
- soft depend on LobbyControl
- check if there is no
stfld TransformAndName.name - check if there is a call to
ManualCameraRenderer.ChangeNameOfTargetTransform()
then it should be fine, and I can add checks for any other mods adding a similar patch easily
and I'll also know if an update breaks either patch
up to you, i'll add my config toggle anyways
the other thing i still need to find how to fix is the spectator boxes and the "Unknown" names :/
I've only ever seen Unknown perhaps one time where a player actually successfully joined (not even sure about that instance), idk how that happens
didn't you try to make a patch for that already? or was that in the unreleased networking mod?
yeah i did try to wait for steam to respond with the new player name ( NameFix patch in Matty Fixes ) but many people reported that was not working
and as i do not know of a reliable way of replicating the issue + only happens in online mode
do you know where the "Unknown" string is coming from? I would've expected it to default to the unset name of "Player #[0-9]"
it's quite tricky to debug
is it associated with any mods or does it happen on vanilla? it's bizarre that I've never seen it really
it comes from steam api, steam has not received thr player values yet ( as the request is async but zeekers does not wait )
so the default strting is "Unknown"
i'll send you the code line in a few min
the new Friend(ulong).Name getter doesn't wait for a response?
the string itself is in the native code of Facepunch so i had to dig in the documentation to find it ๐
nope
if steam has the friend in cache it just returns the cache otherwise it send a request and returns "Unknown" until it has a proper value
but I suppose it might use some sort of cache for the logged-in player on Steam?
oh
I see
that would make sense why I don't see it then, I never play with randoms lol
I wonder, have you sniffed for the packet it sends to request the username? if it's on its own domain, maybe you could just block it in hosts
...if that would still let you launch the game lol
the request is a task you can wait for and once it completes in theory the original Frined object has all the values
how did you use the task? using Unity's async functionality?
๐ .
i poll it in StartOfRound.LateUpdate ๐
it's quite the bad system ik
but was there as Experimental
i'm an idiot.... i'm supposed to .Start the task ( or schedule it as a Corutine ) right?
hmmm
honestly I'm not experienced with using async, so I'm not sure
I think that would make sense, though, I would assume the await keyword would call that itself
it is syntactic sugar after all (afaik)
I wonder if you can call StartCoroutine(Task) and have it automatically wrap that in an Enumerable
goggling a bit it seems to be ConfigureAwait instead ๐ค
wait, what is that supposed to do in this case?
that sounds like it applies when awaiting it, to keep the continuation on the thread that the task was run on? but maybe I'm misreading
all this just makes me wish they'd used the promises model instead lol
async is cool when you can just propagate the asynchronicity all over the place
somewhere else they said to use
hmm
@unreal oriole Hopefully you can reproduce the issue where players get insta kicked with more than 4 players
i do not have friends ๐ญ, well i do but not enough to get to 5 ๐
I'm gonna guess you accidentally changed something when you did the new radar patch
Would testing it in lan work though?
Or does it have to be online?
lan uses a different system and normally bypasses all checks
hmm, that seems weird to me if the RequestInfoAsync method is already supposed to run off the main thread, but honestly none of this makes much sense to me lmao
async is confusing as hell to me
I guess check the code between 2.3.5 and 2.3.6 it's probably an unintentional edit that's forcing the lobby to 4 players somehow
hard agree
i like to explicitly tell if stuff needs to run on another thread
and be able to start/stop the thread/executor myself
I just find promises to make much more sense to me
For all we know it could be due to 2.3.6 breaking TwoRadarMaps somehow
you call a function, it starts running off the main thread, then you can immediately chain some action to run after that function finishes
simple
litterally the only addition is the RadarPatch
reading the code can be kinda ugly with all the indented chained function calls, but logically it makes sense and as long as you have an event loop you shouldn't end up with all this async virus crap
Yeah so quite possibly it's due to it breaking TwoRadarMaps
Since both mods are attempting to patch the radar
it shouldn't be, that error should be harmless
well
actually I suppose the patches stop in TwoRadarMaps where that one fails, but I'm not sure how that could cause issues when I don't touch anything related to the lobby size
(barring errors when joining on either the host or the client)
It could be the method Matty is using is failing to register more than 4 people on the radar, and when a 5th person joins they get kicked due to it
I'll have to test if it's fixed later after Matty pushes the update that allows me to disable his radar patch
were you using Exprimental before or stable?
I had to roll back to 2.3.5 to fix the issue
So you broke something I just dunno what
Lol
no i mean before checking the 2.3.6 were you using stable 2.3.5 or Expreimental 3.6.0?
Stable 2.3.5
I stopped using Experimental after you deprecated it
Lol
So are you saying the breaking change might have been in Experimental first?
it might but i can't find where
Cross check your code differences, there is some code on your github you changed 5 days ago
https://github.com/mattymatty97/LTC_LobbyControl/blob/lobby_control/LobbyControl/src/Patches/LobbyPatcher.cs My guess if it isn't the changes to the radar it's something in this
@unreal oriole what about calling directly into Steamworks.SteamFriends.RequestUserInformation() in a coroutine until it returns false, then getting Friend.Name?
https://github.com/mattymatty97/LTC_LobbyControl/blob/lobby_control/LobbyControl/src/Patches/SavePatches.cs I doubt the changes to this would cause the insta kick issue
looks like that's what RequestInfoAsync() does anyway, so it running as a task is pretty much pointless except it makes it harder for you to wait for it
But it was changed 5 days ago as well
It's most likely something in JoinPatches or LobbyPatcher
@vagrant root did you check if the players having trouble joining were getting errors on their ends?
I should've asked specifically about that before but I didn't think of it
I asked and they said the only thing they got was the warning of MoreCompany's error being supressed
humm
Something is broken and doesn't wanna toss an error
if it was anything to do with missing radar targets, I wouldn't really expect it to cause the player to disconnect, but it also should print an error if it did
i'd need to see the logs... the only thing i removed from v2.3.5 was actually the code that was casuing the lobbies to be half the size ๐
but i completly removed all the code about it so it is as it was abck in v 2.1.x
Can you check the log from my friend earlier that I sent to flip in TooManyEmotes?
#1184362437550555176 message this one
Maybe you'll find something
But I know it never sent anything in my logs
I checked
Let me see if loading up in a lobby solo says anything, cus it wouldn't log anything earlier I checked the log literally right after someone joined and got kicked too
and nothing was logged
as fas as i can see there is an exception from Weather Tweaks but then the disconnection is because the host closed the game ๐ค
[00:29:30.2103413] [Info : Unity Log] disconnecting client id: 0
[00:29:30.2103413] [Info : Unity Log] Host disconnected!
[00:29:30.2103413] [Info : Unity Log] False
[00:29:30.2103413] [Info : Unity Log] Host quit! Ending game for client.
there are so many NREs in your logs... it's incredible you can still play ๐
i mean in this log the client joins correcntly playes and disconnects once the host disconnects...
this does not show any of the 5th player failing to join
Cus someone kept dcing
I told you
it doesn't log the 5th
Idk why
๐คทโโ๏ธ
Hold on one sec
was this from your pov? no as this seems from Player (3)
Yeah that wasn't my pov
Like I said I don't have the logs anymore
XD
I should have saved them but it never logged anything
Unless you got 4 people that feel like popping into a lobby rn
Gonna be hard to maybe get anything
Lmfao
coughDbLoggingcough
Well excuse me for disabling it cus it kept leaving partially written files behind on top of the full log
Lol
๐ jokes aside, well see
you can tweak the size ( i agree 100Mb is a bit too much ) and it will only keep two files.. same as the normal LogOutput ๐ค
just a bit more compact and easy to navigate
@steady gulch do you still have your player-prev.log? You were the 5th that tried to join that game and you kept getting kicked maybe you have something
was it v49 or v50 btw?
v49
double weird
if (going to break)
dont;
Skill Issue
Btw
The errors she got
The 2nd one was when kicked
So
What did you do sir?
XD
Yeah but why is it happening only after the 2.3.6 update?
and only with 2.3.6
๐
I get that second error
simply for just leaving a save
and I think i've had it for a while and just haven't thought anything of it
So maybe Lobby Control made MoreCompany throw an exception and cus Lobby Control supresses them
....
Gdi Matty
XD
nah i suppress only one specific exception in AddPlayerChatMessageClientRpc
Hmmmm
I did find where it started appearing after sifting through my old codes, though it started with the error only appearing once but idk if that is relevant
Lobby Control Experimental v3.7.0
config toggle for RadarFix
small code cleanup
Let's see if disabling the Radar Fix fixes it later shall we
XD
If it does I'mma be like
"Matty how?"
i'd be super confused too
just pushed out an update for TwoRadarMaps that adds that soft dependency and skips the patch silently if LobbyControl is present
that should hopefully allow TwoRadarMaps to fully function alongside LobbyControl again
i'm waiting to locate the player limit problem before pushing mine to stable
no worries, the config option shouldn't really be necessary now
still good to have it obviously
also not sure if you saw this message, but perhaps it could solve your "Unknown" player problem? #1211989201793449994 message
it being set up as a task is kinda funny because all the task does is poll that off the main thread
maybe? i've pushed the Task.Run one to Matty Fixes and will wait a bit for reports if it is working or not
there's no point in polling it off the main thread if you still have to poll on the main thread lmao
how are you setting the name after Task.Run()?
i.e. how do you synchronize back to the main thread?
i poll it on the main thread because i do not want to get in a race condition with another player joining and both of them trying to write the same things
so i just have it run in the lateUpdate in sync with the rest of the unity calls
wait, I'm confused, that's basically what I'm suggesting, but without cutting out the middleman (task thread)
on the main thread i check if the task is completed and if it is then run the code for changing the name
the Task is a lie, it doesn't even really have anything to do off the main thread except poll every 50ms or something: https://github.com/Facepunch/Facepunch.Steamworks/blob/master/Facepunch.Steamworks/SteamFriends.cs#L268-L282
๐คฃ wow Steam
I'd also suggest starting a coroutine on the PlayerControllerB, then you don't have to keep a dictionary and all that boilerplate
Enumerable UpdateName(PlayerControllerB player, SteamId steamID)
{
yield return new WaitUntil(() => !RequestUserInformation(steamID, true));
drawTheRestOfThePlayerName();
}
it looks like on the Steam API side, there actually is a callback, so I'm not sure why Facepunch doesn't use that
probably just because it's easier to poll it, which is kinda fair, but it would be nice if it exposed that callback so you could just react to that
(if Unity had a way to synchronize to the main thread anyway)
or... this docs comment seems to indicate it has a callback, but I can't find a reference to it anywhere else in the includes
there is indeed an event
because things don't really map from native c to the library XD... as this is not using a type at all
the headers are C++, I would've expected to see a typedef or something 
and i belive that event is the one https://thunderstore.io/c/lethal-company/p/Lauriichan/FriendPatches/ uses
oh nice
yeah they just never start the request ๐
so they only receive updates for the actual friends you have on steam and not the other players in the lobby
oh I see
also i decided to also request the avatar as it will be needed in the spectator menu
as we're already in an async context waiting a bit more is not an issue
would probably be good to check whether that callback runs on the main thread before using it though, I'm guessing that it doesn't since the Facepunch.Steamworks library doesn't look like it has Unity-specific functionality
ah I see
fair enough
i'm not going to use the callback and have to try and figure out which player the Friend object blelongs to tbh
yeah
I wouldn't either really
polling it is fine, it'll only run for a short time after a join
should i add some kind of delay between polling?
I personally wouldn't unless the function call really takes a while
you could profile it to make sure it's quick, but I would imagine it just has to read some thread-shared bool and return it
it'll be kinda rough if it is slow, though, because that'll mean that if you poll and wait x seconds and poll again, it'll have a really ugly effect on frametimes
I think Zeekers and a lot of modders have a bad habit of thinking that just because they make something run less often it's fine for it to take a while
I see my frametime spike to double its normal value periodically way more often than I'd like
the way the AI does its calculations once every 200ms for example
i belive too but have no real way to profile it tbh
just toss it in a manual loop with yield return null and then StopWatch it
oh wait
I forgot you can't test it waiting
in that case I would just leave it as you wrote it and hope for the best lol
maybe if you know someone that commonly has that issue though, you could print out an average runtime for the function when it finishes and get that from them
anywho though I need to stop rambling so much and get off of here lol
i mean 90% of the cases it is going to return immediatly as all players will have each other as friends... some random latejoining might slightly slow down on join but it will not be called that frequently anyways ๐ค
yeah, hopefully even if it is somehow a long-running function it'll still end the coroutine fairly quickly
I'm sure it's fine
i just had a bunch of steam errors while booting and was so worried... turns out i started my debug instance with Steam closed ๐คฃ
[10:54:23.6859710] [Warning:Matty's Fixes] Late Friend update Completed Player 0 (||xxxxxxxxxxxxxxxxx||) has name The__Matty
at least for the localhost it seems to be working w/o any slowdowns
So was this an issue anyone else is having? #1211989201793449994 message I was holding off on updating to 2.3.6, but I haven't seen anyone else mention anything about that
@unreal oriole esperimental build is super brokey
So something is fucked with your radar patch for sure
Cus I had it disabled
and noone could join
Good job
XD
Wait @solar monolith I just saw your TwoRadarMaps update go live was this cus of you? XD
oh I..guess so
it shouldn't patch if you have LobbyControl though 
that is the error I was fixing though, yeah
it didn't stop my friends from joining, though, they just didn't have names
So I have Lobby Control installed and the fix to prevent multiple players from connecting at once enabled, but some of my friends still end up joining into the black screen, even if they were apparently the only person joining at that time?
I was under the impression the join queue is intended to fix that
You can try increasing the time but I've noticed it isn't helping me that much, I think I'm just gonna start using LobbyInviteOnly instead to make things easier
that's not lobby control, it's matty fixes NameFix patch throwing a fit with More Company
Okay got you
But still
Why with the radar patch disabled do people get insta kicked when trying to join?
You majorly broke something with your radar patch
fr
no idea why yet tho, i've just woken up and am from mobile in bed ๐๐
Yeah cus with 2.3.6 at least 4 people could join then the 5th got insta kicked
i need logs for that. still
with Experimental and the radar patch disabled
insta kick
Again it logged nothing
What I sent you
Is what it logged
LOL
Something is mad brokey sir.
i need the info lines! not the missing errors ๐
i need to see what went well and check where it stops sending the info lines
I add the Experimental build to my pack
and you hop on with me
XD
Cus you should get the logs pretty easily since it'll insta kick you
XD
no shit Sherlock ๐คฃ
but well, things have to break for me to be able to fix them no? ๐
Yeah this is why you just attempt to join my lobby lol
018ec6bb-a46e-2361-cad6-7258dc274f5b
XD
let me get out of bed ๐๐ด
v50 o v49?
v49
swapping back
Got it
Idk why but TooManySuits somehow got disabled
๐ค
So reenable that if it's disabled on your end
XD
do you need to invite me?
need to see host logs then.. on client side it just says that the host refused the connection
I added LobbyInviteOnly cus I can't seem to ever configure the lobby delay properly and people overlap constantly
It doesn't even say you tried to join
Hmmmm
You reenabled TooManySuits right?
yeah
what i find wierd is that if RadarPatch is disable it litterally does not touch the code ๐ค
@solar monolith can you confirm this would not do anything if the config is false ๐ค
yeah that should do it
it was like this already tho
I'm gonna guess the issue with people getting kicked earlier
was a mix of MattyFixes Name Patch and the NRE from TwoRadarMaps
5th player issue though still unsure about
But the person who got kicked instantly when they tried to join as the only person was @tidal shadow
i'm moving the Queue code from Postfixes to Finalizers so even if another mod breaks the Rpc i'm waiting for Lobby Control should still be able to detect it has run and not kick players ๐ค
I had some funky stuff going on when opening the lobby for the new fifth player when the other fifth left, every other person joining kicked another one 
That might work
if you are in v50 that's a vanilla "bug"
zeekers put code to prevent backfilling
thanks zeekeers
so i'll have to patch it once v50 releases
The code is actually useful
Because if someone joins when the ship is landing it closes out the lobby
Rather than getting all the networking issues and desyncs
I found that out when someone joined once after I pulled the lever
then when it landed
the Lobby closed
sent us all back to main menu
it's not the join while landing fix tho.. this is littrally about players in orbit even before starting the game
Yeah I get you
also correct me if I'm wrong but is it lobby control that's making desynced players drop their inventory?
ty
@unreal oriole fix for shovels turning invisible when?
an eyeless dog killed my friend cause of this once
it's better on as it prevents worse issues tbh but you can disable it and the bugged player will not be able to pick up anything untill you type lobby forcedrop in the terminal ( or he relogs )
It's always weird seeing someone randomly holding an invisible shovel, or worse they have nothing in their hand and you just hear the sound of the shovel
Ohhhh thanks for elaborating, I'll look into that
btw this behaviour is the normal vanilla bug and not from my mod
showels do not use the use rpc sadly so not
I wonder if the golden shovel mod avoids the bug somehow
the new AdditionalNetworking in theory will fix any desync issues
but it is highly experimental atm... still would love feedback on it ๐
basically makes so the clients explicitly tell what's in their inventory and what slot they are on instead of relying on the other side to guess ๐
wait so that's confirmed now, that TwoRadarMaps patches failing caused the disconnects?
I think so yeah, cus when Matty joined my lobby with experimental installed with the RadarFix disabled he didn't dc
MattyFixes namefix stuff was failing to create corutines on the playerobject because MoreCompany disables them btw @solar monolith ๐คฆ , i had to create the corutines on the StartOfRound instead
I think the Name Fix in MattyFixes caused the dc when TwoRadarMaps threw the NRE earlier
cus you said it would cause names to not work
it's the same issue as the wall player bug... MoreCompany for "performance" reasons sets the playerobjects to Inactive
well it causes the patch in TwoRadarMaps not to work, but it shouldn't prevent Matty's mods from working
Idek anymore
it could have been that cus the code was throwing a NRE some patch in Matty's mods kicked the player
oh but wouldn't the be active by the time the name needs to be gotten? I thought the steam name code ran after the players get teleported
apparently no. they activate the object way later
wowee
that's some interesting behavior indeed
I guess it doesn't really matter where the coroutine runs though
any idea what happens if a player joins, DCs and then is immediately replaced by another before the first name request finishes?
will the name be guaranteed to be correct?
the second corutine should be scheduled and complete after the first ๐ค
maybe i shuld cancel the corutine if user DCs
yeah, if the second is cached it presumably completes first
not a pressing matter but i will make sure to handle it in the next iteration
there you go ๐
Okay what did you change?
handles this edge case
Ahhh
Lunxara would you mind testing the Networking mod too today?
You released a new mod?
oh i never posted it here
it's the mod i was having lordfire helping set up
it even allows people to not desync while having this settings from GI
set to different values from each other
it is in higly experimental state tbh... i'm 70% sure it will break somehow XD
i'm starting to have quite few mods under my name ๐
I never got this to work for some reason
normally you can't as the position of items in the inventory is only guessed by the clients so, having the values not aligned will 100% cause desyncs
I'll see if it works okay though
this mod should fix that by making the client tell everybody else how it's inventory is laid out
At least if it breaks you'll hopefully be there to catch the error
I mean I never got it to work even for myself
It would just place the item in my held slot instead
Maybe an incompatibilty with Hotbar Plus
at <t:1712779200:t> sure
I was gonna say
It's already almost <t:1712773800:t> XD
shh...
i forgot i need to account for my timezone in the site i use to get timestamps
It's all good lol
I'm guessing your mod gets rid of the need for the syncing patch for shotguns in NutcrackerFixes
yeah shotguns have a specific rpc for ammo and safety
If anything I just dislike how cracked Nutcrackers are sometimes cus of NutcrackerFixes lol
Yesterday I had a Nutcracker shoot 3 times before reloading
XD
tho opposite of NutcrackerFixes, which is server-authoritative, this is owner-authoritative. meaning a potential cheating client could spoof infinite ammo ๐
Lol
but i mean, cheating is a whole other topic. and i do not plan on making any anti-cheat mod for a while ๐
i should make that mod ๐ค, shotgun minigun. with a mag of 30 rounds ๐คฃ
So btw should anything in Lobby Control be disabled for compat with AdditionalNetworking or no?
nope
if AdditionalNetworking works as intended noone of LobbyControls InventorySync patches should trigger
here you go ๐คฃ
The way it's head keeps spinning
The nutcracker's ai can't even properly react to this
i can crank it up even more ๐
sadly nvidia does not record audio for some reason ๐คท
yeah no that's as fast as they can shoot
gotta replace the reload animation with something else yknow 
wot that is probably not NutcrackerFixes
it doesn't do anything with ammo until someone picks it up
So is the fifth player joining issue fixed on the current versions of MattysFixes and Lobby Control?
we've not been able to reproduce it yet so,it's unknown if it is even an issue or not
Hey got a job for you, you should see what flip changed in the new update for TME that murdered my network earlier
XD
He seems to not be sure why it happened
But it did, and it was bad.
I since made the decision to remove it and go back to BadAssCompany
I'll have to link you the part of the vod later where it happened
@unreal oriole weird bug
But it seems enemies like Coils can't target other players when outside, any idea what might cause that?
WAIT
invisible shovel is not a mod problem??
cuz sometimes my shovel is invisible
and i cant use it
until i drop it and randomly shows up a few seconds later
sup, isnt this mod supposed to fix the "spawn in a wall" issue when players join at the same time ? because i had it with friends, with this mod enabled
it has some code to mitigate it, but we've never been able to fully fix it as it's not a bug from the game itself but comes from MoreCompany
Lobby Control JoinQueue system is the one responsible to ensure only one player at a time can join. but depending on the ping and hardware of the connecting client they might not complete the connection in time before another player is allowed to join.
try increase the connection_delay_ms value until you find a good value
too high values will have your players wait a lot in the loading screen
i'll try to do that, thanks
lobby control was causing people to not hear each other talking and making people invisible I disabled it
I've also had an issue where I couldn't hear another player (others in the game could hear that player). I didn't check to see if it was Lobby Control causing it, though.
Yes @unreal oriole Lobby Control is causing major error
Well yea I switched to late and control company and it fixed that issue
if you don't have a log for me to debug i can't do much, but me and many others have been playing without any issues using Lobby Control so i actually doubt it's caused by the mod
i will still try to find the issue but you need to give me something to start with
@vagrant root i rememebr you had something similar happen a long time ago, but was caused by the SCP mod and dying again from the SCP fixed it ๐ค
Yeah it was somehow for a friend, but I don't think the SCP mod actually caused it tbh cus we've taken off from aggroed shy guys plenty of times and never reproduced it
i seem to be only be able to reload one shell in the shotgun
I have had this before, idk what causes it
I get this in the log
@unreal oriole Are you ever gonna fix this? XD
Pretty sure that's related to LGU is it not?
๐
yeah thoose are bugs from their side. there would be no errrors of people just marked the meshes are readable in editior ๐
Btw @solar monolith TwoRadarMaps seems to throw this if you disconnect and rejoin a lobby
line below that should say Bomb added to broken meshes
@empty nest bls fix
i mean even base game should do it ๐
i'm just using a "hack" to read an unreadable mesh and create a new readable one to replace the first...
but it does not work everywhere
I highly doubt that's the first error in the log
No it's not, the other mod that didn't like leaving and rejoining a lobby was Insanity Display
lol
yeah.... that is probably not my problem then lol
I can't do anything about it if Terminal.Start() never finishes
it didn't like the fact that the entire game was broken in fact
could be any number of things
some value lingering from a previous game most likely
Probably
@unreal oriole So what all did you fix with AdditionalNetworking? lol
problems with reserved items, and added boombox track sync ๐
What am I supposed to do? 
Fix the readable mesh error with the bomb sir
So I have no idea what to change.
Yeah I'm sure Matty could tell you what needs changed
well i do not really know how the editor works.. i know that you need to mark the mesh as readable ๐ค should be a tickbox somewhere in the mesh editor
And is it just the blue wire thing?
Or the whole thing?
Or the blue wire is just the first thing it finds?
if you do the whole thing my mod will be able to avoid touching it
i only knwo it fails on the blue wire but other things after the blue wire might break too
Oki, will look at the whole thing
yeah first thing it cannot convert that findes
Don't even know why it's not readable.
Probably was an oversight
So this thing over here?
And it's only the bomb or you can't tell?
pentagram too but that's not yours right?
i mean tbh it would be awesome if all grabbables were readable... so my hackpatch does not need to run and try to spoof GPU memory ๐
Yeah, that's what I am doing right now.
if any of the items are metallic ( can get lighting ) that will also fix the particles
and the zero surface area spam when they are targeted
Okay, I think got all of them if not most.
Gonna have dinner soon so I don't know if you wanna test it or if you can wait til I come back.
In case you want to, here's the asset bundle! leaves
No more bomb error
You fixed it
c;
So time for you to push it to Thunderstore when you get back it seems
as i was saying it's such a simple fix on their ( modders/zeekers ) side. while it's super complicated on mine
@solar monolith Got some good news, TwoRadarMaps no longer throws that error after the new update WhiteSpike pushed for LGU, so I guess it was a bug from LGU lol
@unreal oriole so can confirm it was TwoRadarMaps that prevented a 5th player from joining before, using 2.3.6 rn with the latest version of TwoRadarMaps and we got a group of 5 with no issues
@solar monolith so I guess the radar patches just hated each other before you fixed compat XD
weird
just for the sake of the records:
All my mods work in v50
in the next few days i'll post a new version of LobbyControl as there is now a better way to handle the Transparent Player
it's LethalMatt's
ooooooooooh
ty discord
I have been summoned
vandalism of your doc is happening a bit methinks
Moderating the doc has been nightmarish, the doc has taken on a life of its own
Unluck
Hey there, I had an issue occur while playing with Lobby Control (among other mods) enabled on v50. I'm not positive that it's actually caused by Lobby Control (I'm thinking it was actually TooManyEmotes, but I disabled four mods, those being TooManyEmotes, TooManyEmotes Scrap, Lobby Control, and Matty_Fixes), but it was among the mods I disabled and never ran into the issue again. Info on the issue is here, to avoid repeating it: #1184362437550555176 message
In my uneducated opinion given the nature of the warnings being spammed it was most likely TME's doing but I just wanted to drop it in here just in case
What kind of vandalism
Just did a glance over and things are fine for the most part
Had 2 cases one just completely deleted everything, other was just more mild
Well for one earlier today literally half of the document got blanked out lmao
Both were reverted to a previous version
Someone keeps marking my unreleased mod as working which is hilarious
Saw some instances of people replacing mod names with nonsense
love to see the double CelestialTint
I mean there's always the option of just locking it and having some select people edit it or something ig
At the point where the bulk of mods are probably on there and most work (but that's also a reason to just let it implode)
V50 doesn't change a whole awful lot that most mods work so I'm fine continuing to let the community freely edit it
Kinda amazing it has lasted this long tbh
Version history and revert function does wonders
please do not give the blame to "all" the mods, just stating you disabled a bunch of them and they are all the casue will not help diagnosing the issue and will only make other people avoid all the mods you list as the cause
in this specific instance it definitely seems to be caused by TooManyEmotes while stopping an emote
So what was changed in the new experimental build lobby man?
๐
dropped v49 support