Heartbeat
Prevents Steam lobbies from expiring during long sessions, fixing the "Couldn't connect to the lobby" error shown in-game.
| Date uploaded | a month ago |
| Version | 1.2.0 |
| Download link | WhozScott-Heartbeat-1.2.0.zip |
| Downloads | 126 |
| Dependency string | WhozScott-Heartbeat-1.2.0 |
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.2100README
Heartbeat
Keep your On-Together lobby alive during long sessions.
Heartbeat helps prevent the in-game "Couldn't connect to the lobby" error by periodically refreshing the Steam lobby while you are hosting.
What It Does
- Keeps long-running lobbies joinable by writing a small Steam lobby heartbeat on a timer.
- Refreshes lobby metadata so the lobby name and social tags stay fresh in Steam's listing cache.
- Starts immediately when a lobby is detected. No waiting for the first full interval.
- Only runs on the host because Steam only allows the lobby owner to update lobby data.
- Does not touch gameplay, saves, UI, timers, or player data. It only updates Steam lobby metadata.
Why You Want It
If you leave an On-Together lobby running for many hours, Steam's lobby listing can become stale. The lobby may still exist, but players can start seeing "Couldn't connect to the lobby" when trying to join later.
Heartbeat keeps that Steam lobby listing refreshed so friends can keep joining during long co-working, focus, or dedicated-server-style sessions.
Config
The config file is generated at:
BepInEx/config/com.ontogether.lobbyheartbeat.cfg
General
-
LobbyHeartbeatEnabled:
true
Turns the heartbeat on or off without uninstalling the mod. -
LobbyHeartbeatIntervalMinutes:
2
Minutes between heartbeats.1to2is recommended for very long sessions. The value is clamped from0.25to10. -
ColorConsole:
true
Shows Heartbeat's console messages in purple text. Turn this off if your console shows raw color codes.
Lobby
-
RefreshExistingData:
true
Re-writes the lobby's current name and tags on every heartbeat so Steam keeps every field fresh, not just the internal heartbeat key. -
ManageLobbyName:
false
If enabled, Heartbeat forces the Steam lobby name to the value inLobbyNameon every heartbeat. -
LobbyName: (empty)
Custom lobby name used whenManageLobbyNameis enabled. -
TagFocus / TagMature / TagChill / TagBreak / TagModded: (empty)
Optional tag overrides. Leave these empty to preserve whatever the game already set.
How To Use
- Install with Thunderstore Mod Manager / r2modman, or install manually with BepInEx 5.
- Launch On-Together.
- Host a lobby.
- Heartbeat will automatically detect the lobby and keep the Steam listing refreshed.
If you join someone else's lobby, Heartbeat will stay idle. That is expected: only the lobby host can refresh Steam lobby data.
Manual Installation
- Install BepInEx 5 for On-Together.
- Download the latest Heartbeat release.
- Extract the zip into your On-Together game folder so it merges into
BepInEx/. - Confirm the plugin exists at:
BepInEx/plugins/Heartbeat/LobbyHeartbeat.dll
Notes
- Heartbeat is a lobby-listing keepalive, not a gameplay/networking overhaul.
- For normal use, leave the interval at the default
2minutes. - For testing, you can temporarily set the interval to
0.25minutes.
CHANGELOG
Changelog
1.2.0
- Lobby config actually works now: The
[Lobby]options described back in 1.1.0 were never wired up in the shipped DLL. They exist for real in this version (ManageLobbyName,LobbyName,RefreshExistingData,TagFocus,TagMature,TagChill,TagBreak,TagModded). Tag overrides are optional — leave them empty to preserve whatever the game set. - Owner-aware: Only the lobby host writes heartbeats now (Steam only lets the owner update lobby data), so clients no longer waste calls.
- Per-lobby tracking: The immediate first heartbeat now fires again whenever you start or join a new lobby in the same session, not just once at startup.
- Safer lobby parsing: Lobby codes are parsed with
TryParse, so an unexpected value is skipped quietly instead of throwing. - Interval clamping: Interval is clamped to 0.25–10 minutes to match the documented range.
- Clearer logging: Logs when a lobby is detected, when it ends, when you're not the host, plus a per-lobby heartbeat counter.
- No hard game dependency: Game and Steam access now go through reflection, so the mod is more resilient to On-Together updates.
- Config moved:
LobbyHeartbeatEnabledandLobbyHeartbeatIntervalMinutesnow live in a[General]section (previously[Steam]).
1.1.0
- Immediate first heartbeat: Timer now fires instantly when a lobby is detected instead of waiting for the full interval.
- Lobby metadata refresh: Each heartbeat re‑sets lobby name and tags (focus, mature, chill, break, modded) so Steam doesn't drop the listing after 14+ hours.
- New config options:
LobbyName,TagFocus,TagMature,TagChill,TagBreak,TagModdedin the[Lobby]section. - Default interval lowered to 2 minutes for better reliability during very long sessions.
1.0.0
- Initial release of Heartbeat.
- Adds a periodic lobby heartbeat to keep Steam lobbies from expiring during long sessions.
- Config options:
LobbyHeartbeatEnabled,LobbyHeartbeatIntervalMinutes.