


Локальный мост между 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 раз в секунду (только при изменении)
localhost (по умолчанию порт 8181).ws://localhost:8181 и обновляет картинку.⚠️ Сервер слушает только localhost — мост работает на той же машине, где запущена игра. Это не сетевая трансляция между разными ПК.
Каждое сообщение — объект с "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 записей) |
Spring -> Spring+Turret, Manticoil -> Manticoil+Turret). Без ToilHead —
имена как обычно. Определяется через рефлексию, жёсткой зависимости нет.Требуется BepInExPack.
Через мод-менеджер (r2modman / Thunderstore Mod Manager): найди LCBridge
и установи — BepInEx подтянется автоматически.
Вручную:
LCBridge.dll в …/Lethal Company/BepInEx/plugins/.overlay/overlay.html.overlay.html, размер 1920x1080.После первого запуска 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.
MIT.