You are viewing a potentially older version of this package. View all versions.
Solon-LCBridge-1.1.1 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. Read-only.

Date uploaded 3 weeks ago
Version 1.1.1
Download link Solon-LCBridge-1.1.1.zip
Downloads 21
Dependency string Solon-LCBridge-1.1.1

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.

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

Вручную:

  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.
  • Мягкие (необязательные) зависимости: BrutalCompanyMinusExtraReborn, WeatherTweaks / WeatherRegistry (mrov), ToilHead (определяется в рантайме).
  • Оверлей — любой Chromium-браузер и OBS Browser Source.

Лицензия

MIT.


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

CHANGELOG

Changelog

Формат основан на Keep a Changelog, проект придерживается семантического версионирования.

[1.1.3]

Исправлено

  • Хроника по дням (timeline). Раньше день нумеровался внутри квоты (0–3) и сбрасывался каждую квоту, из-за чего дни разных квот схлопывались, и забег показывал меньше дней, чем было (6 вместо 9 за 3 квоты). Теперь используется сквозной номер дня за всю компанию (gameStats.daysSpent) — дни идут 1..9 и не схлопываются.
  • Пропуск дней при мгновенном отлёте. Запись дня теперь делается только при реальной посадке на луну (когда её название известно). Прилёт + мгновенный отлёт рычагом больше не ломает и не «стакает» записи хроники.
  • Лимит длины timeline поднят с 60 до 120 записей (на случай насыщенного забега).

[1.1.2]

Изменено

  • StreamOverlays (Zehs) добавлен в обязательные зависимости на Thunderstore (Zehs-StreamOverlays-1.6.2) — теперь ставится автоматически вместе с модом. Часть функций оверлея требует StreamOverlays.

[1.1.1]

Изменено

  • StreamOverlays (Zehs) — обязательная зависимость для части функций оверлея. Жёсткая авто-установка прописана в манифесте Thunderstore (Zehs-StreamOverlays-1.6.2); в коде указана как SoftDependency, чтобы LCBridge не блокировался при несовпадении GUID.
  • Переписаны README и описание под реальные возможности: точная схема JSON-полей, порт по умолчанию (8181), работа только через localhost, список зависимостей.
  • Обновлена иконка (фон в стиле оверлея, угловые рамки, scanline-эффект).

[1.1.0]

Все данные читаются из read-only геттеров игры — в игру ничего не пишется.

WebSocket-мост

  • Локальный WebSocket-сервер на localhost (порт настраивается, по умолчанию 8181).
  • Рассылка JSON раз в секунду, только при изменении состояния.

Монстры

  • Списки монстров снаружи и в комплексе (monstersOutside / monstersInside).
  • Подсчёт уникальных особей за забег по instanceID (run.monsters[].count).
  • Топ-монстр (topMonster) и «убийца» (topKiller).
  • Единый резолвер имён врагов; поддержка ToilHead (суффикс +Turret).

Ловушки

  • Ванильные турели, мины, шипастые потолки — числом по типам (traps).

Лут

  • Накопительный подсчёт скрапа по уникальным предметам: сумма не падает после продажи Компании. Деньги по квотам и профит по лунам считаются от неё.

Погода и события

  • Погода с поддержкой WeatherTweaks / WeatherRegistry, иначе ванильная (weatherFull).
  • Текущее событие Brutal Company (brutalEvent), если мод установлен.

Аналитика забега (run)

  • Разбивка по квотам (деньги, время, смерти), по лунам (визиты, профит, время), пик монстров, время внутри/снаружи, общее время, таймлайн событий.