Game Entity

The Game entity is the core of the data model. Every board game, expansion, promo, and accessory is represented as a Game with a type discriminator that indicates its role.

Fields

FieldTypeRequiredDescription
idUUIDv7yesPrimary identifier, time-sortable
slugstringyesURL-safe human-readable identifier (e.g., twilight-imperium)
namestringyesPrimary display name
typeenumyesGame type discriminator (see below)
descriptionstringnoFull text description
year_publishedintegernoYear of first publication
min_playersintegernoPublisher-stated minimum player count
max_playersintegernoPublisher-stated maximum player count
min_playtimeintegernoPublisher-stated minimum play time in minutes
max_playtimeintegernoPublisher-stated maximum play time in minutes
community_min_playtimeintegernoCommunity-reported minimum play time in minutes
community_max_playtimeintegernoCommunity-reported maximum play time in minutes
weightfloatnoCommunity-voted complexity weight (1.0 - 5.0 scale)
weight_votesintegernoNumber of weight votes cast
ratingfloatnoCommunity average rating (1.0 - 10.0 scale)
rating_votesintegernoNumber of rating votes cast
image_urlstringnoURL to the primary box art image
thumbnail_urlstringnoURL to a thumbnail version of the box art
created_atdatetimeyesWhen this record was created (ISO 8601)
updated_atdatetimeyesWhen this record was last modified (ISO 8601)

Type Discriminator

The type field classifies what kind of product this Game represents:

TypeDescriptionExample
base_gameA standalone game that can be played without any other productCosmic Encounter, War of the Ring, Wingspan
expansionRequires a base game to play; adds content or rulesCarcassonne: Inns & Cathedrals, Scythe: Invaders from Afar
standalone_expansionPart of a game family but playable on its ownDominion: Intrigue, Star Realms: Colony Wars
promoA small promotional addition, typically a single card or tileAzul: Special Factories Promo
accessoryA non-gameplay product associated with a game (sleeves, organizer, playmat)Terraforming Mars Playmat
fan_expansionCommunity-created content, not officially publishedGloomhaven: Homebrew Class Pack (fan)

For detailed classification criteria, decision trees, and grey zone rules, see Entity Type Criteria.

Type Hierarchy

flowchart TD
    G[Game Entity]
    G --> BG[base_game]
    G --> EX[expansion]
    G --> SE[standalone_expansion]
    G --> PR[promo]
    G --> AC[accessory]
    G --> FE[fan_expansion]

    BG -.- note1["Playable alone"]
    EX -.- note2["Requires a base game"]
    SE -.- note3["Playable alone AND part of a family"]
    PR -.- note4["Small add-on, usually a single component"]
    AC -.- note5["Non-gameplay product"]
    FE -.- note6["Community-created, unofficial"]

Dual Playtime Fields

The Game entity carries two sets of playtime fields, reflecting the reality that publisher estimates and actual play times often diverge significantly:

  • min_playtime / max_playtime: What the publisher prints on the box. These tend to be optimistic and assume experienced players. A game listed as “60-90 minutes” often takes 120+ minutes for a first play.
  • community_min_playtime / community_max_playtime: Derived from community-reported play logs. These reflect what players actually experience. See Play Time Model for details on how these are computed.

Both sets of fields are available for filtering. The playtime_source filter parameter controls which set is used. See Filter Dimensions.

Weight and Rating

Weight is a community-voted measure of complexity on a 1.0 to 5.0 scale:

RangeInterpretationExamples
1.0 - 1.5Very light – minimal rules, suitable for non-gamersUno, Codenames
1.5 - 2.5Light – simple rules with some decisionsTicket to Ride, Azul
2.5 - 3.5Medium – meaningful strategic depthWingspan, Everdell
3.5 - 4.5Heavy – complex rules and deep strategySpirit Island, Terraforming Mars
4.5 - 5.0Very heavy – steep learning curve, long playtimeTwilight Imperium, Mage Knight

The weight_votes field indicates how many community members contributed to the weight score. A weight of 3.5 with 5,000 votes is far more reliable than 3.5 with 12 votes.

Rating is a community average on a 1.0 to 10.0 scale, with rating_votes tracking the sample size. The specification does not define a Bayesian average or geek rating equivalent – those are derived values that belong in application logic, not the data model. The raw average and vote count are the source data.

Example

{
  "id": "01967b3c-5a00-7000-8000-000000000001",
  "slug": "spirit-island",
  "name": "Spirit Island",
  "type": "base_game",
  "description": "Powerful spirits have existed on this island...",
  "year_published": 2017,
  "min_players": 1,
  "max_players": 4,
  "min_playtime": 90,
  "max_playtime": 120,
  "community_min_playtime": 90,
  "community_max_playtime": 150,
  "weight": 3.89,
  "weight_votes": 5127,
  "rating": 8.31,
  "rating_votes": 42891,
  "image_url": "https://example.com/images/spirit-island.jpg",
  "thumbnail_url": "https://example.com/images/spirit-island-thumb.jpg",
  "created_at": "2026-01-15T10:00:00Z",
  "updated_at": "2026-03-01T14:30:00Z"
}