Hampalyzer — TFC Statistics

The Hampalyzer is a Half-Life GoldSrc server log parser, specifically targeting the Team Fortress Classic mod.

To parse a game, upload one or two log files.

If you upload two log files at a time, Hampalyzer will try to combine statistics and consider the two log files as part of a two-round match.

You must select one or two .log files.

Find an issue? File it on GitHub, or message @Hampster on Discord.

Here's a link of features that are upcoming, rougly ordered by priority (ease of implementation vs. utility):

  1. Merge with master and remove beta branch (requires updating deploy scripts)
  2. Administrivia update:
    • Update backup scripts (DB + files)
    • Add match force-reparse reparse link (visible to admin-only)
    • Add match invalidation link (visible to admin-only); disqualify log from counting against stats (also add some UI to note this on match page)
  3. Statistics update (full reparse after each):
    • Add engineering stats to player page (built guns, gun uptime, dets, etc.)
    • Add 'time conced' stat to defense summary per-player (?)
    • Fix bug that prevents flag returns due to timeout not showing
    • Fix bug for parsing Copper (#59)
    • Fix bug for parsing Baconbowl (#48)
    • Add chat logs (#4)
    • Show flag carrier kills on summary view (#30)
  4. Update to Bootstrap v5 (currently v4; will enable easier theming)
  5. Global statistics (maps played, matches played per-user, best teammates, etc.)
    • Start with global statistics, with a 'dashboard' overall view
    • Move onto player-specific queries (for top 100 players?)
    • Likely use PostgresSQL MATERIALIZED VIEW to minimize db load, re-run cron job to update nightly
  6. Enable programmatic access to match information
    • Requires API access key/mechanism
    • Requires some sort of "cost" to limit DOS; implement backoff
    • Consider 'admin' UI interface for DB monitoring/key managment
  7. Support for flag location naming (e.g., "flag dropped top-ramp")
    • Requires per-map work to captured named 3D boxes (already done for schtop; took 30 minutes)
    • Requires psql version 14 to support 3D queries; should populate flag locations into flag drop events into match summary.
  8. Support for demo uploads alongside matches
    • Consider using WebHL, which itself is a fork of hlviewer.js. Seems to not support HLTV replay, unfortunately. If it works, then could click on any event in a match summary to jump to that location in the HLTV and show it in the browser.

Database statistics: currently tracking (loading...)