HPGModerationKit
In DevelopmentApril 18, 2025
The fourth HPG package — content moderation for online games. Born from a real fear: launching a multiplayer game and not regulating conversation, inviting creeps and inappropriate uploads. Moderation is not a feature — it is a responsibility that comes the moment you let strangers interact.
Purpose
If Hot Potato Games launches multiplayer games with chat, user-generated content, or image uploads, moderation is not optional — it is a prerequisite. HPGModerationKit is supposed to handle text filtering, image screening, and report management. The fear that drove it is real: an unmoderated game with children playing is a liability and an ethical failure.
Stack
What I Learned
- Content moderation in online games has three layers: (1) Automated filtering — profanity lists, regex patterns, AI-based toxicity scoring for text; perceptual hashing and image classification for uploads. Catches the obvious violations instantly. (2) User reporting — let players flag content and other players, queue reports for review. Catches what automation misses. (3) Human review — a real person reviews flagged content and makes judgment calls on edge cases. Catches what both automation and reporting miss. All three layers are required. None alone is sufficient.
- Profanity filters are trivially circumvented by determined users (l33tspeak, spacing, Unicode homoglyphs). The real tools are AI-based toxicity classifiers (like Google's Perspective API or OpenAI's moderation endpoint) that score text on toxicity, threat, harassment, and sexual content regardless of spelling. These are not perfect but they catch the intent, not just the words.
- Image moderation is the harder problem. Users uploading profile pictures, in-game screenshots, or custom content need every image screened before it is visible to others. Services like AWS Rekognition, Google Cloud Vision, or Azure Content Safety can classify images for explicit content, violence, and other categories. The pipeline: upload → screen asynchronously → approve or reject → only then display. Never show unscreened user content.
- The legal dimension: COPPA (Children's Online Privacy Protection Act) applies to any online service directed at children under 13. If Hot Potato Games has players under 13 (and a game with potatoes almost certainly will), COPPA compliance requires: parental consent for data collection, no targeted advertising, and robust content moderation. The fine for COPPA violations is up to $50,120 per violation. This is not theoretical risk.
- The ethical dimension is simpler: if you build a space where strangers interact, you are responsible for what happens in that space. Not moderating a game with children is like opening a playground and not supervising it. The code to detect bad content is a technical problem. The commitment to actually implement it is a moral one.
Key Insights
- Moderation is the unsexy infrastructure that makes multiplayer games viable. Nobody downloads a game because it has great moderation. But everyone uninstalls (or writes a 1-star review, or contacts the press) when moderation is absent. Moderation is like plumbing — invisible when it works, catastrophic when it does not.
- The fear that drove this package is the right fear to have. Too many indie game developers launch multiplayer features without moderation because "we will add it later." Later is too late when the first inappropriate message is sent to a child. Moderation is a launch requirement, not a post-launch feature. HPGModerationKit existing before any HPG multiplayer game launches is the correct sequencing.
- AI-assisted moderation has made this tractable for solo developers and small teams. Pre-AI, content moderation required either a word list (trivially circumvented) or a human moderator team (expensive). Now: an API call to a toxicity classifier, an API call to an image screener, and a reporting queue with human review for edge cases. The technology stack is accessible. The responsibility is non-negotiable.
This post was composed through a conversation between Brett Owers and Claude Code (Anthropic). The content reflects Brett's recollection of each project and the lessons drawn from it. Some details may be approximate or omitted — the purpose is to paint an honest picture of a software engineer's development over time, not to serve as a precise historical record.