How dzima92/far-lone-sail-coop works
FAR: Lone Sails LAN Co-op is a BepInEx Unity plugin for two-player cooperative play. The player-facing workflow starts in the in-game panel or hotkeys: one player hosts, the other discovers or enters an address and joins; CoopManager handles sessions and messages, then applies remote player, vehicle, item, and interactive-part state in the game. Separate sync modules cover buttons, levers, hoses, covers, and live vehicle details. The README documents discovery, server lists, pause coordination, teleport, and startup resume behavior; those capabilities are represented where implementation evidence is limited. Edges are limited to relationships visible in excerpts, the source index, or README.
Main entry points: CoopManager.cs Co-op session · FarCoopPlugin.cs Plugin bootstrap · GameAccess.cs Game object access · VehicleSync.cs Vehicle physics
Components 20
Plugin and session
- Plugin bootstrap
FarCoopPlugin.cs - Co-op session
CoopManager.cs
Networking
- Transport and discovery
Net/CoopNet.cs - Peer connection
Net/Connection.cs - Message protocol
Net/Protocol.cs - Sync clock
Net/NetClock.cs
Players and input
- Partner input
PartnerInput.cs - Partner body
PartnerPuppet.cs - Remote avatar
RemoteAvatar.cs
World synchronization
- Vehicle physics
VehicleSync.cs - Items and boxes
ItemSync.cs - Live vehicle parts
LiveSync.cs - Vehicle buttons
ButtonSync.cs - Fuel hose
HoseSync.cs - Vehicle cover
CoverSync.cs
Runtime support
- Game object access
GameAccess.cs - Telemetry
Telemetry.cs - Vehicle inspection
VehicleProbe.cs - Window placement
WindowPlacer.cs
Other components
- Game player
Connections 31
- Game player → Plugin bootstrap: starts plugin
README.md - Plugin bootstrap → Co-op session: creates session
FarCoopPlugin.cs - Game player → Co-op session: hosts or joins
README.md - Co-op session → Transport and discovery: starts discovery
CoopManager.cs - Co-op session → Peer connection: sends frames
CoopManager.cs - Co-op session → Message protocol: dispatches messages
CoopManager.cs - Peer connection → Message protocol: classifies messages
Net/Connection.cs - Co-op session → Sync clock: updates sync
CoopManager.cs - Plugin bootstrap → Partner input: installs patches
FarCoopPlugin.cs - Co-op session → Partner input: reads input
CoopManager.cs - Co-op session → Partner body: manages body
CoopManager.cs - Co-op session → Remote avatar: tracks players
CoopManager.cs - Partner input → Partner body: blocks controls
PartnerInput.cs - Co-op session → Vehicle physics: syncs physics
CoopManager.cs - Co-op session → Items and boxes: syncs items
CoopManager.cs - Co-op session → Live vehicle parts: syncs parts
CoopManager.cs - Plugin bootstrap → Vehicle buttons: installs patches
FarCoopPlugin.cs - Plugin bootstrap → Fuel hose: installs patches
FarCoopPlugin.cs - Plugin bootstrap → Vehicle cover: installs patches
FarCoopPlugin.cs - Vehicle physics → Sync clock: buffers poses
VehicleSync.cs - Vehicle physics → Game object access: finds bodies
VehicleSync.cs - Items and boxes → Game object access: scans objects
ItemSync.cs - Live vehicle parts → Game object access: resolves parts
LiveSync.cs - Remote avatar → Game object access: reads character
RemoteAvatar.cs - Co-op session → Telemetry: records events
CoopManager.cs - Co-op session → Vehicle inspection: inspects vehicle
CoopManager.cs - Plugin bootstrap → Window placement: places window
FarCoopPlugin.cs - Game player → Co-op session: opens panel
README.md - Game player → Co-op session: teleports partner
README.md - Co-op session → Co-op session: coordinates pause
README.md - Plugin bootstrap → Co-op session: skips resume
README.md