Game Metadata Contents
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, so 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":
[
{
"language": "en",
"title": "Cave Story"
}
]
}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 |
| 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
{
"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"
]
}