Initial commit: DeathWatch, an Elden Ring death counter for OBS

Reads the game's process memory read-only (AOB signature scanning,
re-resolved every tick — never a cached pointer) and serves a live
death counter as a browser-source overlay plus a status panel.

Supports co-op: each player runs the program locally, one acts as
hub. The peer link is authenticated (HMAC challenge/response, no
token on the wire, constant-time compare) but not yet encrypted —
see CLAUDE.md's TODO section for the planned TLS+pinning split.

Zero external dependencies — including a hand-rolled WebSocket
implementation — so the whole thing ships as one .exe.
This commit is contained in:
emmatherock committed 2026-09-17 21:10:22 -03:00
commit e1f7e6f529
18 files changed
+3690

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
{
"_language": "English",
"overlay.deaths": "deaths",
"overlay.boss": "boss",
"overlay.offline": "no connection",
"overlay.waiting": "waiting for the game…",
"overlay.you": "You",
"overlay.partner": "Partner",
"panel.title": "Elden Ring",
"panel.subtitle": "Death Counter · live reading",
"panel.total": "Total deaths",
"panel.raw": "Read from process",
"panel.slot": "Save slot",
"panel.boss": "⚔ In a boss fight",
"panel.partners": "Partners",
"panel.obsUrl": "URL for OBS (Browser Source)",
"panel.copy": "Copy",
"panel.copied": "Copied",
"panel.copyManual": "Select and copy",
"panel.obsHint": "Paste this URL into a Browser source in OBS. Transparent background, updates on its own as long as this console window stays open.",
"panel.build": "Build",
"status.connecting": "Connecting…",
"status.waitingGame": "Waiting for you to open Elden Ring…",
"status.menu": "Elden Ring open — main menu or loading screen",
"status.live": "Live — reading Elden Ring",
"status.noServer": "No connection to the local program",
"peer.playing": "playing",
"peer.menu": "in the menu",
"peer.offline": "no connection"
}
+30
View File
@@ -0,0 +1,30 @@
{
"_language": "Español",
"overlay.deaths": "muertes",
"overlay.boss": "jefe",
"overlay.offline": "sin conexión",
"overlay.waiting": "esperando al juego…",
"overlay.you": "Vos",
"overlay.partner": "Compañero",
"panel.title": "Elden Ring",
"panel.subtitle": "Death Counter · lectura en vivo",
"panel.total": "Total muertes",
"panel.raw": "Leído del proceso",
"panel.slot": "Slot de guardado",
"panel.boss": "⚔ En combate contra jefe",
"panel.partners": "Compañeros",
"panel.obsUrl": "URL para OBS (Browser Source)",
"panel.copy": "Copiar",
"panel.copied": "Copiado",
"panel.copyManual": "Seleccioná y copiá",
"panel.obsHint": "Pegá esta URL en una fuente Navegador de OBS. Fondo transparente, se actualiza sola mientras esta ventanita de consola siga abierta.",
"panel.build": "Compilación",
"status.connecting": "Conectando…",
"status.waitingGame": "Esperando a que abras Elden Ring…",
"status.menu": "Elden Ring abierto — menú o pantalla de carga",
"status.live": "En vivo — leyendo Elden Ring",
"status.noServer": "Sin conexión con el programa local",
"peer.playing": "jugando",
"peer.menu": "en el menú",
"peer.offline": "sin conexión"
}