Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305Zehs-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.2README
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 подтянется автоматически.
Вручную:
- Установи BepInExPack для Lethal Company.
- Скопируй
LCBridge.dllв…/Lethal Company/BepInEx/plugins/. - Запусти игру один раз — создастся конфиг.
Настройка оверлея (для стримера)
- Файл оверлея —
overlay/overlay.html. - В OBS: Источники → + → Браузер (Browser Source) → локальный файл
overlay.html, размер1920x1080. - Запусти Lethal Company с установленным LCBridge — мод поднимет WebSocket, оверлей подключится сам.
- Помести источник оверлея поверх игрового захвата в сцене.
Конфигурация
После первого запуска 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
- Сайт турнира: https://solo00n.github.io/GDLP-tournament/
- Twitch: sOOlon
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)
- Разбивка по квотам (деньги, время, смерти), по лунам (визиты, профит, время), пик монстров, время внутри/снаружи, общее время, таймлайн событий.