Getting started
Bloodpoint Incentives is a small, self-hostable web app that shows the live bloodpoint incentives for Dead by Daylight matchmaking servers: the bonus awarded for playing the under-populated role, broken down per region and per platform.
It is a fan project that reads Dead by Daylight's private matchmaking API with a real game account and republishes the result through its own cache-only API, so public traffic is fully decoupled from Behaviour's servers.
Unofficial fan project
This is not affiliated with or endorsed by Behaviour Interactive. Agents talk to Dead by Daylight's private API using a real game account, so they are deliberately gentle with it. Use at your own risk.
The two pieces
The system is made of two roles that you run yourself:
- The hub, a single Go service. It owns the registry of agents (which token covers which region+platform), aggregates incoming readings (keeping the most recent per region+platform), persists history to SQLite, and serves the React dashboard, the REST API, and the live stream. The browser only ever talks to the hub.
- Agents, one or more Node processes. Each agent polls a single region on a single platform, learns its assignment from the hub using its token, and reports each reading back to the hub. Several agents can cover the same target redundantly. The hub keeps whichever reported most recently.
agent (eu-central-1, Windows) ─┐
agent (us-east-1, Windows) ─┼──> hub ──> browser (SPA, live via SSE)
agent (us-east-1, Windows) ─┘ │
redundant, same coverage └─ REST API + OpenAPI docsUnder the hood the hub is a Go service (Go 1.25, the Huma framework over chi, pure-Go SQLite via modernc), and agents are Node processes that log into Steam to discover the live client build and read incentives.
The quickest path to a running hub
The fastest way to stand everything up is Docker Compose. It pulls the published hub and agent images and wires them together from a single .env file:
cp .env.example .env # one file drives everything
# Fill in AGENT1_TOKEN + AGENT1_STEAM_USERNAME/PASSWORD (+ SHARED_SECRET) and AGENT1_REGION
docker compose up -dThis brings the hub up on http://localhost:3000 along with one agent that reports to it. On first run the hub has no admin yet, so it shows a /setup page to create one.
For the full walkthrough (the compose file, volumes, environment, and the first-run admin) see Running the hub. To add the agent side, see Running an agent.
Where things live
- The live app is at https://bpincentives.com.
- The interactive API reference is the API Reference, generated from the hub's OpenAPI 3.1 spec. Your own hub also serves the same interactive docs at
/docsand the raw spec at/openapi.json.
Next steps
- How it works, the aggregation model, hub-owned cadence, persistence, and live updates.
- Running the hub, deploy the hub with Docker Compose.
- Running an agent, contribute coverage for a region.
- Configuration, every environment variable, grouped and explained.
- Authentication and API keys: accounts, second factors, the optional site gate, and programmatic access.
- Using the API and the Forecasting model.