diff --git a/metadata/README.md b/metadata/README.md index f3cfedf..65e0f28 100644 --- a/metadata/README.md +++ b/metadata/README.md @@ -1,43 +1,22 @@ # Metadata definitions -# TODO -* Decide on a file structure. This shouldn't be one giant json file, but it needs to be split in - useful ways. - -## Image -A stored copy of a game's disk image. For example: - - Star Fox 64 (U) v1.2.z64 - - Star Fox 64 (U) v1.2.v64 - - * UUID - - A unique identifier for this specific data object. - * format - - The format this image is stored in. For example: bin, iso, chd, z64, v64 - * sha1sum - - The sha1sum hash of this specific image. - * release - - The release that this image was taken from. - * dump credit - - Where the hash came from, who dumped it, etc - -## Release -A single release of a game. For example: Star Fox 64 (U) v1.2 +## Platform +A single set of hardware and/or software that shares compatibility. For example: + - Nintendo Entertainment System + - Microsoft Windows 7 + - Microsoft Windows 98 - * UUID * name - - The release's name in the language and script it was released in. - * region - - The official release code for the game. - * version - - The release version of the game. Some are verison numbers, some are just sequential - release numbers. - * disambiguation (can be empty) - - If this release is different in a way that isn't region or version, that information goes - here. - * release group - - The UUID of release group that this release belongs to. - * platform - - The UUID of the platform that this release is built for. + - The English name of the platform. As with release group names, this is mostly for + hand-editing data. + * regional_names + - A hash map with the keys being language identifers (en-US, jp, fr, etc) and the values + being the platform's name in the language and script it was released in. + * shortcode + - A small, three to five letter code for the platform. This must be unique among other + platforms. + * release groups + - A list containing release groups for this platform. ## Release group A container for all languages and versions of a release. For example, the Star Fox 64 release @@ -47,46 +26,55 @@ A container for all languages and versions of a release. For example, the Star F - Star Fox 64 (J) v1.0 - Lylat Wars (E) v1.0 - * UUID * name - The English name for the release group. This is largely for contributors to quickly understand the raw data, as frontends should ideally pull the name from a configured region or something. + * releases + - A list containing all releases in this release group. -## Platform -A single set of hardware and/or software that shares compatibility. For example: - - Nintendo Entertainment System - - Microsoft Windows 7 - - Microsoft Windows 98 - * UUID +## Release +A single release of a game. For example: Star Fox 64 (U) v1.2 + * name - - The English name of the platform. As with release group names, this is mostly for - hand-editing data. - * regional_names - - A hash map with the keys being language identifers (en-US, jp, fr, etc) and the values - being the platform's name in the language and script it was released in. - * shortcode - - A small, three-letter code for the platform. This is essentially for directory names. + - The release's name in the language and script it was released in. + * region + - The official release code for the game. + * version + - The release version of the game. Some are verison numbers, some are just sequential + release numbers. + * disambiguation (can be empty) + - If this release is different in a way that isn't region or version, that information goes + here. + * images + - A list of all images of this release. +## Image +A stored copy of a game's disk image. For example: + - Star Fox 64 (U) v1.2.z64 + - Star Fox 64 (U) v1.2.v64 + + * format + - The format this image is stored in. For example: bin, iso, chd, z64, v64 + * sha1sum + - The sha1sum hash of this specific image. + * dump credit + - Where the hash came from, who dumped it, etc + * patches (can be empty) + - A list of patches that are intended to apply to this image. ## Patches Unofficial patches or mods for a game, usually called romhacks. - * UUID * name - The patch's name in it's original language. * file sha1sum - The patch file's sha1sum. - * target image - - The UUID of the image that the patch is intended to be applied to. # Design notes * This spec is designed with the intent to be imported into databases while also being reasonably hand-editable for contributors. -* Everything has a UUID because formats and hashing algorithms change, and this should be made as -long-term and language-agnostic as is reasonable. - * Releases have multiple images to account for different formats. The z64 and v64 images of the same N64 game are different files with different hashes.