Table of Contents

Class CrossplayLibraries

Namespace
Valheim.Testing.GameSessions
Assembly
Valheim.Testing.GameSessions.dll

Whether a Linux runtime can load crossplay. The game's PlayFab Party library (libparty.so in the runtime's Plugins folder) needs system libraries a bare Linux host may lack, libpulse0 and libpulse-mainloop-glib0 among them. Without one, Unity logs Failed to open plugin, the game's first PlayFab call fails with DllNotFoundException: libParty.so, and a -crossplay server retries its network every 30 s and never opens a lobby. The check asks the host's own loader (ldd, with the launch's library path) before anything starts, and a refusal names each missing library and, where known, the Debian or Ubuntu package that provides it.

public static class CrossplayLibraries
Inheritance
object
CrossplayLibraries

Properties

Packages

The Debian and Ubuntu package for each library libparty.so needs that a minimal install may lack.

public static IReadOnlyDictionary<string, string> Packages { get; }

Property Value

IReadOnlyDictionary<string, string>

PartyLibraries

The dedicated server's library, relative to its runtime. A client plugin cannot satisfy a server preflight.

public static IReadOnlyList<string> PartyLibraries { get; }

Property Value

IReadOnlyList<string>

Methods

Missing(string)

The libraries ldd reports as not found, in its order, each once.

public static IReadOnlyList<string> Missing(string lddOutput)

Parameters

lddOutput string

Returns

IReadOnlyList<string>

Refusal(string, string, IReadOnlyList<string>)

The refusal for missing libraries of library on where.

public static string Refusal(string where, string library, IReadOnlyList<string> missing)

Parameters

where string
library string
missing IReadOnlyList<string>

Returns

string

RequireAsync(IGameHost, string, TimeSpan, CancellationToken)

Refuses a Linux runtime on host (a bash host) whose libparty.so is absent or cannot load, naming what is missing; returns the library it checked. A host without ldd is refused too: nothing else there can prove the library loads.

public static Task<string> RequireAsync(IGameHost host, string runtime, TimeSpan timeout, CancellationToken cancellation = default)

Parameters

host IGameHost
runtime string
timeout TimeSpan
cancellation CancellationToken

Returns

Task<string>