~/hailcpy
all projects
shippedrustpythontypescriptreverse-engineeringnetworkingdiscord

GameTools

A management + analytics platform for community-hosted Battlefield servers, built by reverse-engineering EA's protocols. Used by 100+ admins; backing APIs serve 50k+ players.

discord community
18k members
public api traffic
1M+ req / day
blaze throughput
~15 MB/s
subscription revenue
$400–500 / mo
server-manager.mp4youtube ↗
// muted demo · servers list → live admin actions → streaming audit log

The problem

EA's Battlefield titles run on official servers that are overrun with cheaters, so players move to community-hosted ones to actually enjoy the game. The catch: every admin function - kick, ban, swap map, view live players, pull stats - only exists inside the in-game admin UI. That UI is buggy, partial, and effectively abandoned the moment EA stops supporting a title. BF5 didn't ship admin tooling to community hosts at all.

Community admins were moderating blind, and players had no way to look up real stats outside the game.

What I built

A complete external management + analytics platform for these community servers - every admin function, every player stat, every audit decision, lifted out of the game and into a proper web app, mobile, and Discord. Designed and built like a serious admin tool: identity, RBAC, evidence-backed actions, append-only audit logs.

How

EA exposes no public APIs for any of this. A small group of us reverse-engineered the surface:

  • HTTP gateway - captured with Fiddler (SSL pinning disabled), replayed, documented.
  • Blaze - EA's proprietary TCP wire protocol that carries the actual server/player data. No spec, no proto files. We mapped the encoding, type system, and message shapes by combining packet capture with live memory reads against running clients.

Then I built the platform alone:

  • Blaze SDK in Rust - the platform sustains ~15 MB/s of decoded Blaze traffic per active region. Anything slower stalled the live player views, which forced Rust on the wire layer.
  • API + workers - FastAPI gateway in front of Rust workers, MongoDB + Postgres for state, Redis for hot caches, Kafka fanning out Blaze fetches across a worker pool. The public stats APIs on top serve 1M+ requests / day.
  • Frontend - Next.js + TypeScript for the manager and the public stats site.
  • Identity & permissions - Discord OAuth for sign-in, then a custom RBAC layer that pulls Discord roles into fine-grained per-server permissions. Admins can define their own roles.
  • Accountability - every action (kick, ban, role change, config) writes an append-only audit log and streams into the community's Discord in real time. Bans require evidence uploads before they commit.
  • Discord bot - same functions, surfaced inside chat for admins who live there.
  • Auto-ban engine - rule engine over the live stats stream that flags or bans on configurable thresholds.

Player tracker

Per-player profile: every reported match, full stats, analytics, suspicion ratings.

player-tracker.mp4youtube ↗
// muted demo · player profile → match history → suspicion ratings

Where it landed

The community I lead is now 18k Discord members. The manager runs 100+ admins across community servers; the public stats APIs serve 50k+ players and absorb 1M+ requests / day. A queue-skip VIP subscription on the manager pays for the infra at $400–500 / month.

This is the project I'd point at to answer "what does end-to-end ownership look like for you, outside of a job?" Reverse-engineering, protocol design, Rust on the wire, a real product layer, a real community, real money.