Jump to content

Game Metadata Contents: Difference between revisions

From Game Discovery Project
No edit summary
 
Line 62: Line 62:
|-
|-
| Trailers || "trailers" || String Array || URLs to videos
| Trailers || "trailers" || String Array || URLs to videos
|-
|Platforms
|"platforms"
|String Array
|E.g. "windows", "mac", "linux", "android", "ps5", etc.
|-
|-
| News Feed || "newsFeed" || String || URL for an RSS feed for news/updates about the game
| News Feed || "newsFeed" || String || URL for an RSS feed for news/updates about the game

Latest revision as of 23:37, 18 August 2025

The Game Metadata file should contain the essential details about a game. For example: title, developer, publisher, description, genre, URL(s) to buy or download, etc. We should include information that would be useful to a potential player when browsing games to check out. We can look at existing platforms like Steam and itch.io for inspiration.

We'll need to decide exactly which details we want to include and how they should be represented in JSON.

Considerations

Some details will be relatively straightforward to represent (e.g. title is a string property) but others will require more discussion (e.g. is genre a string property? an array of strings? an id/enum of some kind? does it need its own property or should be it be lumped into a more generic property like "tags" the way Steam handles it?).

Even a simple detail like game title may not be as straightforward as it first appears. Should the metadata include localized titles when available? If so, how does that change the JSON format?

Localization

The metadata schema should provide a way to include localized properties. You should also be able to specify what language the base properties are in. We shouldn't assume the base language will always be English.

{
    "title": "洞窟物語",
    "language": "jp",
    "localization": {
        "en": {
            "title": "Cave Story"
        }
    }
}

Schema Identifier

If we use a common file format like JSON it might be useful in some cases if the file includes something to identify it as a "Game Metadata" file specifically. We could include something like this in the metadata:

"schema": "game-metadata"

Should we formalize the schema even further with JSON Schema or is that overkill?

Schema Version

The JSON schema for Game Metadata could evolve over time and we may want to be able to identify which version of the schema was used for a particular file. We could also include the schema version in the metadata, like so:

"schema-version": "0.1"

Contents

Metadata Contents
Item JSON Name Type Notes
Title "title" String
Description "description" String
Developer "developer" String
Publisher "publisher" String
Links "links" String Array URLs to personal websites or store pages
Genre "genre" String Array
Tags "tags" String Array
Cover Art "coverArt" String URL to an image
Screenshots "screenshots" String Array URLs to images
Trailers "trailers" String Array URLs to videos
Platforms "platforms" String Array E.g. "windows", "mac", "linux", "android", "ps5", etc.
News Feed "newsFeed" String URL for an RSS feed for news/updates about the game

Details

Cover Art / Screenshots / Trailers

Should we attempt to set any guidelines for these assets or is it anything goes?

News Feed

By providing an RSS feed for news and updates, applications that surface this data could present a more up-to-date view of the game and provide an experience that is closer to something like Steam.

Possible Inclusions

Price

Game price is an important detail when considering games to buy. However, there are some challenges with including price in the metadata:

  • Multiple currencies (which ones to include?)
  • Price differences between platforms (for games that are available in multiple places)
  • Temporary discounts
  • Multiple SKUs (e.g. standard edition vs special edition)

Maybe we can specify a means of including the price anyway, but try to make sure there's a disclaimer of some kind in applications that surface this data?

Age Rating

Need to investigate best practices around game ratings. Many small indie games won't have ratings data though. In that case, should we include a way to specify a custom rating?

Example

{
    "schema": "game-metadata",
    "schema-version": "0.1",
    
    "title": "Hollow Knight",
    "description": "Forge your own path in Hollow Knight! An epic action adventure through a vast ruined kingdom of insects and heroes. Explore twisting caverns, battle tainted creatures and befriend bizarre bugs, all in a classic, hand-drawn 2D style.",
    "developer": "Team Cherry",
    "publisher": "Team Cherry",
    "links": [
        "https://www.hollowknight.com/",
        "https://store.steampowered.com/app/367520/Hollow_Knight/",
        "https://www.gog.com/en/game/hollow_knight"
    ],
    "genre": [
        "Metroidvania",
        "Platformer",
        "Singleplayer"
    ],
    "tags": [
        "2D",
        "Indie",
        "Exploration"
    ]
}