Solon-LCBridge icon

LCBridge

Local Lethal Company -> stream overlay bridge over WebSocket: monsters (in/out), weather (WeatherTweaks), traps, cumulative loot, per-quota & per-moon run analytics, top monster/killer. Pairs with StreamOverlays.

Last updated 2 hours ago
Total downloads 5
Total rating 0 
Categories Mods Tools Misc Client-side AI Generated
Dependency string Solon-LCBridge-1.1.2
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305
Zehs-StreamOverlays-1.6.2 icon
Zehs-StreamOverlays

[v40/v81] Display real-time game stats on your stream using browser sources. Shows the player count, current moon, weather, day count, quota, and ship loot. Works with OBS, Streamlabs OBS, and similar software for Twitch, YouTube, TikTok, Kick, and more.

Preferred version: 1.6.2

README

LCBridge

Локальный мост между Lethal Company и стрим-оверлеем.

LCBridge — плагин на BepInEx, который раз в секунду собирает состояние игры и рассылает его в формате JSON по WebSocket. На другом конце — HTML-оверлей, который рисует эти данные поверх стрима. Создан для турниров и стримов сообщества GDLP (Games Don't Like People).

Мод только читает состояние игры (через геттеры и Harmony-патчи) и ничего в неё не записывает.


Как это работает

Lethal Company (+ LCBridge)  --WebSocket-->  overlay.html (в OBS)
        ws://localhost:8181  ->  JSON раз в секунду (только при изменении)
  • Внутри игры поднимается WebSocket-сервер на localhost (по умолчанию порт 8181).
  • Раз в секунду собирается состояние и шлётся подключённым клиентам — но только если оно изменилось (без лишнего спама).
  • Оверлей подключается к ws://localhost:8181 и обновляет картинку.

⚠️ Сервер слушает только localhost — мост работает на той же машине, где запущена игра. Это не сетевая трансляция между разными ПК.


Что отдаёт мост (поля JSON)

Каждое сообщение — объект с "type":"bridge" и полями:

Поле Значение
deaths смертей за забег (суммарно)
alive / total живых игроков / всего в команде
health здоровье локального игрока
moonName текущая луна
weatherFull погода (приоритет WeatherTweaks-комбо, иначе ванильная)
brutalEvent событие Brutal Company (если мод установлен)
onMoon / loading / inGame флаги состояния игры
resetToken счётчик сбросов (новый забег)
levelScrap стоимость скрапа на текущем уровне
topKiller / topMonster кто чаще убивал / какого монстра видели чаще
deadliestEvent самое смертоносное событие забега
monstersOutside / monstersInside списки монстров снаружи / в комплексе
traps ванильные ловушки на уровне (напр. ["Turret x2","Landmine x4"])
run вложенная аналитика забега (см. ниже)

Объект run:

Поле Значение
quotas[] по каждой квоте: i (номер), money (заработано), sec (время), deaths
moons[] по каждой луне: name, visits, profit, sec (сортировка по профиту)
monsters[] до 20 монстров: name, count (уникальных особей), sec (время присутствия)
peak пиковое одновременное число монстров
inside / outside секунд проведено в комплексе / снаружи
runSec общее время забега
timeline[] хроника событий забега (до 60 записей)

Возможности

  • Монстры. Списки врагов снаружи и в комплексе; подсчёт реального числа уникальных особей за забег (по instanceID); самый частый монстр и «убийца».
  • ToilHead. Если установлен — турель на голове добавляет суффикс к имени (Spring -> Spring+Turret, Manticoil -> Manticoil+Turret). Без ToilHead — имена как обычно. Определяется через рефлексию, жёсткой зависимости нет.
  • Ловушки. Ванильные турели, мины, шипастые потолки — числом по типам.
  • Лут (накопительно). Сумма собранного скрапа считается по уникальным предметам и не падает после продажи Компании, поэтому деньги по квотам и профит по лунам считаются корректно.
  • Погода. Текущая погода с поддержкой WeatherTweaks / WeatherRegistry (комбо-погода), иначе ванильная.
  • События. Мягкая интеграция с Brutal Company (текущее событие).
  • Аналитика забега. Деньги, время, смерти (по всем игрокам), разбивка по квотам и лунам, таймлайн.

Установка (для игроков)

Требуется:

  • BepInExPack
  • StreamOverlays (Zehs) — обязательно: часть функций оверлея не работает без него.

Через мод-менеджер (r2modman / Thunderstore Mod Manager): найди LCBridge и установи — BepInEx и StreamOverlays подтянутся автоматически.

Вручную:

  1. Установи BepInExPack для Lethal Company.
  2. Скопируй LCBridge.dll в …/Lethal Company/BepInEx/plugins/.
  3. Запусти игру один раз — создастся конфиг.

Настройка оверлея (для стримера)

  1. Файл оверлея — overlay/overlay.html.
  2. В OBS: Источники → + → Браузер (Browser Source) → локальный файл overlay.html, размер 1920x1080.
  3. Запусти Lethal Company с установленным LCBridge — мод поднимет WebSocket, оверлей подключится сам.
  4. Помести источник оверлея поверх игрового захвата в сцене.

Конфигурация

После первого запуска BepInEx создаёт конфиг в BepInEx/config/. Параметр:

  • [Server] WebSocketPort (по умолчанию 8181) — порт WebSocket-сервера. Если меняешь — укажи тот же порт в оверлее. Удобно править через LethalConfig, если он установлен.

Сборка из исходников

Проект на C#, таргет .NET Standard 2.1, зависит от BepInEx и игровых сборок (LethalCompany.GameLibs.Steam).

dotnet build -c Release

На выходе — bin/Release/LCBridge.dll. GUID плагина: gdlp.lcbridge.

Структура: .csproj в корне, исходники в src/. Не держи в одной папке дубли .cs — компилятор соберёт каждый класс дважды и упадёт с CS0101/CS0111.


Совместимость

  • Lethal Company + BepInEx.
  • Обязательная зависимость: StreamOverlays (Zehs) — нужен для части функций оверлея.
  • Мягкие (необязательные): BrutalCompanyMinusExtraReborn, WeatherTweaks / WeatherRegistry (mrov), ToilHead (определяется в рантайме).
  • Оверлей — любой Chromium-браузер и OBS Browser Source.

Лицензия

MIT.


Сообщество GDLP · Games Don't Like People