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. 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
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
- StreamOverlays (Zehs) — обязательно: часть функций оверлея не работает без него.
Через мод-менеджер (r2modman / Thunderstore Mod Manager): найди LCBridge
и установи — BepInEx и StreamOverlays подтянутся автоматически.
Вручную:
- Установи 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.
- Обязательная зависимость: StreamOverlays (Zehs) — нужен для части функций оверлея.
- Мягкие (необязательные): BrutalCompanyMinusExtraReborn, WeatherTweaks / WeatherRegistry (mrov), ToilHead (определяется в рантайме).
- Оверлей — любой Chromium-браузер и OBS Browser Source.
Лицензия
MIT.
Сообщество GDLP · Games Don't Like People
- Сайт турнира: https://solo00n.github.io/GDLP-tournament/
- Twitch: sOOlon