Game databases have a data-integrity problem that looks deceptively simple: users want complete tables, while the primary sources are incomplete.
For a new or Early Access title, the tempting implementation is to copy a value from a video, a beta screenshot, or another guide and render it with the same confidence as publisher-confirmed data. That produces a tidy UI and a weak reference.
I used a stricter model while building the independent WARDOGS Fieldguide: every claim belongs to an evidence grade, and unknown is a real value rather than an empty authoring task.
type EvidenceGrade = "official" | "confirmed" | "beta-observed" | "unknown";
type Fact<T> = {
value: T | null;
grade: EvidenceGrade;
sourceUrl?: string;
observedAt?: string;
note?: string;
};
That small distinction changes the whole publishing workflow.
An official store statement can be shown directly. A value visible in a dated beta frame can be useful, but it gets a beta label and does not silently survive into the launch build. A repeated community claim with no traceable source remains unknown. The interface renders the gap honestly instead of coercing it into a number.
The same rule applies at page level. A launch guide can say that WARDOGS supports up to 100 players, uses three teams, puts one randomized 2 × 2 km Control Zone inside a 256 km² map, and awards the match to the first team reaching 100 points. Those are sourced facts. A complete weapon-price table is not, because the official material does not publish one.
The public WARDOGS database is the resulting example. It is less “complete” than pages that guess, but it is easier to update and audit:
- Store the claim with its evidence grade.
- Keep the source URL and observation date beside the value.
- Render unknowns explicitly.
- Downgrade beta observations when the build changes.
- Never promote a repeated secondary claim without finding its origin.
This pattern is useful beyond games. Any product catalog, compatibility matrix or living documentation set benefits when uncertainty is modeled instead of hidden.
Top comments (0)