-
Notifications
You must be signed in to change notification settings - Fork 47
Writing Game Description Files
This page was written by post-editing, we are looking for volunteers who are fluent in both Chinese and English to help us with delicate human translation.
A general game description file addition process is shown in the figure below. Depending on the qualifications of the game and the richness of the game materials, we divide several stages to prepare and compose the files and then add them in FGI. You can advance to any suitable stage depending on how much information you have.
If you find any discrepancy with this guide when referring to certain game description files, please always follow this guide.
flowchart LR
A(Start) --> threshold
subgraph threshold [JUDGING GAME QUALIFICATION]
B(("Does the game <br> meet the criterion?"))
end
B --- Yes --> meta
B -- No --> Z
subgraph meta [WRITING A META GAME DESCRIPTION FILE]
C[Determine game identifier] --> D[Create a description file] --> E[Fill in name attribute] --> F[Optionally fill in replaced-by attribute] --> G[Fill in description attributes] --> H[Fill in authors attribute] --> I[Fill in tags attribute] --> J[Fill in links attribute] --> K[Fill in media attributes]
end
meta --> local
subgraph local [CREATE LOCALIZAED GAME DESCRIPTION FILES]
L[Localize name] --- M[Localize descriptions] --- N[Localize links name]
end
local --> cooperate
subgraph cooperate [COLLABORATING WITH OTHERS]
V[Submit a pull request] --> X
W[Sending description files <br> directly to us] --> X
X((Review and Revision))
end
X -- Yes --> Y[The game was added to FGI] --> Z(End)
X -- No --> Z
- Judging Game Qualification
-
Writing a Meta Game Description File
- Using Python Library to Pre-generate Data Files
- Understanding FGI Games Database
- Requirements for Writing Description Files
- Game Identifier
- Name Attribute (name)
- Replaced-by Attribute (replaced-by)
- Description Attributes (brief-description | description | description-format)
- Authors Attribute (authors)
- Tags Attribute (tags)
- Links Attribute (links)
- Media Attributes (thumbnail | screenshots)
- Create Localizaed Game Description Files
- Appendix
If the game you want to request does not meet the admittance criterion, we will close the pull request.
- The game is a video game. That is, an electronic device must be the means of playing the game, while the player is the fundamental power source driving the game course, except for visual novels.
- The game is quite original. That is, the game cannot be a derivative work that is not expressly authorized by the author, except for derivative works are allowed by the author.
- The game is featuring furries as an important topic. That is, in the main plot of the game, furries are an important factor in the course of the game. Alternatively, in the main scenario of the game, furries are an important part of the game's scenes. FGI refers to "furries" as creatures or machines with non-human physical characteristics, and the degree of bestiality of their forms is higher than the kemonomimis.
- The game is available for public access. That is, the game has been officially released or there is a public test version.
We can use GameYamlSpiderAndGenerator to help generate a basic YAML data file.
It can help editors improve their efficiency in writing data files and reduce time spent on repetitive tasks.
- Install Python 3.11+ or above
- Install GameYamlSpiderAndGenerator
pip install gameyamlspiderandgenerator -i https://pypi.org/simple
python -m gameyamlspiderandgenerator https://store.steampowered.com/app/290340/Armello/
If you encounter network connectivity issues, you can try to write your own configuration file to specify a proxy.
For more information: Wiki
FGI extracts the game's metafile and its localization files to generate its website pages. The former is stored in games/games, and the latter is stored in the subfolder for each language under games/games/l10n.
If you want to modify an existing game page, you only need to edit the corresponding description file. If you want to create a new game page, you need to create a new description file.
Unless otherwise noted, each attribute below must be written in the metafile.
For example, the metafile for Adastra is "Adastra.yaml" under games/games, and the localization file for Simplified Chinese is "Adastra.yaml" under games/games/l10n/zh-cn.
The content of each attribute (e.g. name, description, link) in the metafile is filled in English by default. Even if the game does not have English translation, you need to create the metafile under games/games first, and then create localization files. However, this does not mean that all information in the description file must be translated into English. If there is no suitable translation, the metafile is allowed to contain text in the game's native language.
For example, although the original language of Once Upon a Breeze is Chinese, you must first create a metafile to fill in the English content, and then create a localization file for Chinese.
No purely machine-translated localization files may be provided. For Chinese, if you provide a localization file in Simplified Chinese or Traditional Chinese only, FGI will automatically provide (converted by OpenCC) a localization file in another form of Chinese.
There are two ways to refer to images and videos by FGI:
- Internal reference via filename.
- External reference via URI.
Thumbnails and avatars are always stored in games repository and referenced internally via filename. Other assets such as screenshots, videos are always referenced externally via URI.
URI must not contain query strings and must contain a recognizable media format suffix.
For example,
example.com/image.cgi?filename=picture.png
andexample.com/image.psd
are invalid URIs for FGI.
Game description files are YAML formatted and their content formatting (such as the number and placement of spaces for indentation) must conform to YAML syntax, otherwise the file will not be processed properly by FGI. While there is very little YAML syntax to understand when filling out and modifying description files, we recommend that you refer to or adapt existing description files if you are not familiar with YAML.
FGI repositories already use .gitattributes to require git to use LF line breaks type, and LF line breaks type must be used within description files.
Furthermore, to enhance the readability of the description files, a blank line should be inserted after each primary attribute.
The game identifier (ID) is a string used to refer to a game, and its game description file and corresponding resource folder are named as such.
Each game identifier is unique and non-repeatable, and may only contain letters (upper and lower case), numbers and low line _
(U+005F) from the ASCII character set, and may not begin with a single low line.
The game identifier is taken in first place to the official English name of the game (preserving the original case).
For example, the game identifier for Mercury Abbey is "Mercury_Abbey" and its metafile and localization file are both "Mercury_Abbey.yaml".
In case of regional differences in the official English name of the game, it is taken in the following order of priority:
- The English form of the region where the most creators live most permanently (the region where English is the official language).
- The English form of the region where the most creators were born (the region where English is the official language).
- The English form of the region where the developer vendor is located.
If the game has no English name:
- When the original name is in Japanese, the identifier is written by its rōmaji, and the initial letter of each phrase is capitalized.
For example, the game identifier for『オスケモアイランドの秘密』is "Osukemoairando_No_Himitsu".
- When the original name is in Chinese, the identifier is written by its pinyin, and the initial letter of each phrase is capitalized.
For example, the game identifier for《〈苦〉〈黏〉〈寒〉〈毒〉四部曲》is "Ku_Nian_Han_Du".
If the name of the game contains spaces or special symbols, they should be replaced by an low line. Multiple low lines should be combined into a single low line.
For example, the game identifier for Them's Fightin' Herds is "Thems_Fightin_Herds".
If the name of the game is duplicated or confusing with the game already added to FGI, two low lines should be added after the game identifier, and then the developer (group, vendor) name suffix should be appended.
The identifierization of the name of the developer (group, vendor) should refer to above rules.
For example, Shelter 2 by Might and Delight is not a sequel to Shelter by rausmutt, so the game identifier for the former is "Shelter_2__Might_and_Delight".
name: # Name of the game
This attribute is required.
The name of the game should be given priority to the official English name (preserving the original case), followed by the most widely distributed English translation. If the game does not have an English name, the original language name is used. No aliases from any source may be used.
For example, the value of『ポリドッグパトロール』name attribute should be filled with
Polidog Patrol
.
If there is a regional difference in the English name of the game, it should be taken in accordance with the relevant rules in Game Identifier.
If the name has a colon :
(U+003A) or a apostrophe '
(U+0027), the name should be enclosed in quotation marks "
(U+0022).
For example, the value of 9:22 name attribute should be filled with
"9:22"
.
To make it easier for non-Japanese users to search for games with Japanese names, you can refer to the relevant rules for game names in Game Identifier and Name Attribute in Create Localizaed Game Description Files to attach rōmaji to that name.
For example, the value of『バカ部』name attribute could be filled with
Bakabu / バカ部
.
replaced-by: # Identifier of a game
This attribute is optional.
If the game has been discontinued and FGI has added its remake version, this attribute should be added to the old game metafile and fill in the identifier of the new game.
Adding this attribute will remove the game from the FGI games list, but it will remain in the site search results and general search engine results. FGI will indicate at the top of the game page that this game has been replaced, with a link to the new game.
For example, after discontinuing the development of the adventure game Elysium Above, it was remade as a strategy game. So we added replaced-by attribute to the old version.
brief-description: # Brief description of the game
This attribute is optional.
The brief description attribute carries a brief textual description of the game and is used in the standard view of the FGI game list and in the description
metadata of the game page HTML. If this attribute is not added, FGI will automatically extract the first 480 single-byte characters from the full description as a brief description.
The brief description should be shorter than the full description, and if the full description is less than 480 single-byte characters, the brief description attribute may not be added. The number of characters in the brief description is recommended to be more than 200 single-byte characters, less than 400 single-byte characters, and shall not exceed 480 single-byte characters.
description: |
First paragraph
Second paragraph
…
This attribute is required.
The full description attribute carries a complete textual description of the game. The description should be written on a new line after description: |
and each paragraph must be preceded by two blank spaces.
In terms of content, both brief and full descriptions should:
- Take the official words first.
- No spoilers about key plot points or the plot after choosing a particular branch.
- Do not contain sensitive information or violate local laws and regulations in the target language.
description-format: # plain | markdown
This attribute is optional.
The formatting of full description attribute supports Markdown, which is enabled by adding markdown
to description-format
attribute. We do not recommend inserting media into description attributes, but if necessary, follow the rules for referencing media in Understanding FGI Games Database.
authors:
- name: # Author A name
role: [ role ]
- name: # Author B name
role: [ role 1, role 2 ]
# …
This attribute is required.
The author attribute starts with authors:
and the entries are added in order of importance and popularity of authors. If the author(s) of the game are in one or more teams, all non-core author entries should be replaced by the respective team entries, with the team entries topped in order of importance and popularity.
If the author is already added in FGI Author Database, the value of the name
sub-attribute must be taken from the value of the name
attribute in the corresponding author description file. In other cases, the official name of the most widely known author should be filled in directly.
Each author must assign at least one role, with multiple roles for a single author separated by a comma plus a space ,
(U+002C, U+0020).
- producer
- animator
- artist
- character-designer
- musician
- programmer
- publisher
- scenographer
- screenwriter
- translator
- voice-actor
- others
If the author is not a core author of the game and is not associated with another game in FGI, and FGI does not have an author description file for that author. Then you should add standalone
attribute to the entry for that author and enable it with a true
value.
This attribute is optional.
- name: # Author name
standalone: true
avatar: # Avatar reference path
link-uri: # Author social platform links
role: [ role ]
You can use avatar
sub-attribute to specify an avatar image for the author. The naming, specification of this image should follow the rules for avatars in Writing Author Description Files, and store it in the games/assets folder named by the game identifier (if it does not exist, you need to create it yourself).
You can also use link-uri
sub-attribute to link a social platform page for the author, and the author's name will be hyperlinked in that game page.
The attributes above are optional.
tags:
Tag Category A:
- Tag 1
- Tag 2
…
Tag Category B:
- Tag 14
…
…
This attribute is required.
Tags are abstract summaries of a game. Adding well-defined tags to games helps FGI to better categorize games and optimize filtering and searching functions. The tags attribute starts with tags:
, and then adds tag categories in turn, and then adds specific tags under each category in turn.
This tag category is required.
Used to indicate the type of game. Where yiff
and gore
tags are added, the game page will display a sensitive content warning.
Click here to see the tags under this category
- action
- adventure
- board
- business-sim
- casual
- comedy
- dating-sim
- fighting
- horror
- music
- puzzle
- roguelike
- role-playing
- shooter
- sports
- strategy
- tragedy
- visual-novel
- non-indie
- bara (games with more gay-oriented content)
- yuri (games with more lesbian-oriented content)
- yiff (games with adult content)
- gore
This tag category is required.
Used to indicate the species type of main characters in game.
Click here to see the tags under this category
- cat
- cheetah
- leopard
- lion
- lynx
- tiger
- coyote
- dog
- fox
- raccoon-dog
- wolf
- crocodile
- lizard
- snake
- turtle
- badger
- ferret
- otter
- weasel
- dolphin
- frog
- orca
- shark
- humankind
- mixed (cross-species hybrid)
- non-anthro (pure animal)
- bat
- bear
- beaver
- bird
- eagle
- cattle
- dragon (western dragon)
- hedgehog
- horse
- hyena
- kangaroo
- lung (eastern dragon)
- mouse
- monkey
- opossum
- pig
- rabbit
- raccoon
- red-panda
- rhino
- panda
- sheep
- goat
This tag category is optional.
Used to indicate the appearance, sexual behavior, and sexual preferences of the main characters displayed in the game.
Click here to see the tags under this category
- futanari
- males-only
- females-only
- shota
- loli
- muscle
- anal
- blowjob
- group
- fisting
- face-fucking
- frottage
- cockslapping
- masturbation
- handjob
- rimjob
- footjob
- paizuri
- brain-fuck
- slit-vore
- cock-vore
- rape
- human-on-furry
- animal-on-furry
- transform
- transfur
- bondage
- master-slave
- dominance-submission
- public-use
- exhibitionism
- netorare
- mind-break
- mind-control
- corruption
- parasite
- drugs
- body-swap
- time-stop
- guro
- tentacles
- body-modification
- conjoined
- muscle-growth
- inflation
- absorption
- vore
- petrification
- stomach-deformation
This tag category is optional.
Used to indicate information about the game engineering or status.
Click here to see the tags under this category
Tag | Feature |
---|---|
freeware | Main content free (demo version not included) |
3d | The game is mainly presented in 3D |
pixel-art | The game is mainly presented in pixel-art |
grayscale | The interface of this game has no or very little color and is mainly presented in grayscale |
uncensored | Images, CGs, models, etc. have not censored (consider this tag only when yiff exists) |
full-audio | This game offers a full audio experience with voiceovers or/and more. |
Tag | Feature |
---|---|
multiplayer | The game is multiplayer or includes multiplayer mode |
co-op | The game has cooperative game mode (this tag is depend on tag multiplayer ) |
pvp | The game supports player versus player gameplay (this tag is depend on tag multiplayer ) |
online | The game includes online functions, such as paid purchase points, online ranking system, etc |
Tag | Feature |
---|---|
multiple-endings | The game has multiple different endings |
multiple-series | The game is included in a series of connected worldviews or plots |
homophobia | The game include homophobia contents |
outside-furry-fandom | The game is a work born outside the furry fandom |
not-only-furry-topic | The game is not designed with furries as the dominant topic |
unofficial | The game is a unoffical work |
moddable | The game is moddable |
Tag | Feature |
---|---|
engine-renpy | The game is developed using RenPy |
engine-unity | The game is developed using Unity |
engine-rpg-maker | The game is developed using RPG Maker |
engine-godot | The game is developed using GoDot |
engine-ue4 | The game is developed using Unreal Engine 4 |
engine-tyranobuilder | The game is developed using TyranoBuilder |
adobe-flash | The game is developed using Adobe Flash |
drm | The game has used Digital Rights Management to restrict players |
Tag | Feature |
---|---|
unpublished | The game has not been released |
work-in-process | The game is in the development (beta) stage |
suspended | The game development has been suspended |
died | The game development has been aborted or suspended for more than 2 years without signs of updates |
expired | The official way to download the game is no longer available |
geographical | The game publishers implement overly different services in different regions |
centralized | The main function of the game depends on a centralized server and the server cannot be deployed by the player |
This tag category is required.
Used to indicate the official or unofficial supported languages of the game.
Click here to see the tags under this category
Tag | Language |
---|---|
ar | Arabic |
cs | Czech |
da | Danish |
de | German |
en | English |
en-unofficial | English (unofficial) |
es | Spanish |
fi | Finnish |
fr | French |
hu | Hungarian |
it | Italian |
ja | Japanese |
ja-unofficial | Japanese (unofficial) |
ko | Korean |
nl | Dutch |
no | Norwegian |
pl | Polish |
pt | Portuguese |
ru | Russian |
sv | Swedish |
tr | Turkish |
zh | Chinese |
zh-unofficial | Chinese (unofficial) |
This tag category is required.
Used to indicate the platform on which the game is distributed (available).
Click here to see the tags under this category
Tag | Platform |
---|---|
website | Official website |
steam | Steam |
itchio | itch.io |
google-play | Google Play |
apple-appstore | App Store |
afdian | AFDIAN |
patreon | Patreon |
epic | Epic Games Store |
gog | GOG.com |
microsoft-store | Microsoft Store |
booth | BOOTH |
digiket | DiGiket |
e-shop | Nintendo eShop |
This tag category is required.
Used to indicate the operating system or platform supported by the game.
Click here to see the tags under this category
Tag | OS or Platform |
---|---|
web | Platform built with Web technology |
shockwave-flash | Shockwave Flash |
windows | Microsoft Windows |
android | Android |
ios | iOS |
macos | Mac OS X、OS X、macOS |
linux | GNU/Linux |
xbox | Microsoft Xbox |
playstation | Sony PlayStation |
psp | Sony PlayStation Portable |
psv | Sony PlayStation Vita |
nintendo-switch | Nintendo Switch |
wii-u | Nintendo Wii U |
3ds | Nintendo 3DS |
2ds | Nintendo 2DS |
nds | Nintendo DS |
This tag category is optional.
Used to indicate the internal state of the game in FGI.
Tag | Meaning |
---|---|
staging | The game page is in preview |
tagme | The game is not well tagged |
links:
- name: Link A name
uri: URI A
- name: Link B name
uri: URI B
…
This attribute is required.
The links attribute must have least one link to access the game, preferably with links to official social platform accounts of the game, and also links to related resources such as patch, sponsorship, crowdfunding, wiki, etc.
Among them, social platforms may not direct to groups that are not publicly invited. Take the official social platform account first, if the game has no such account, and the author's social platform account is the most important promotion platform of the game, then you can fill in this account.
The links to access the game may not direct to unofficial sites, or official sites that bypass payment, except for those expressly authorized by the author.
We have created "Stock Link" for common links. By writing stock Links in the name
sub-attribute, links name are automatically displayed on FGI in different languages, no need for translation. Stock links are also automatically equipped with a corresponding site icon.
Click here to see all stock links
Stock Link | Linked site |
---|---|
.website | Official website |
.release-page | Release version access (general) |
.demo-version | Trial version access (general) |
.demo-version-steam | Trial version access (Steam) |
.demo-version-gog.com | Trial version access (GOG.com) |
.unofficial-archived-download | Unofficial archive access |
.steam | Steam |
.itch.io | itch.io |
.play-store | Google Play |
.apple-appstore | App Store |
.playstation-store | PlayStation Store |
.epic | Epic Games Store |
.gog.com | GOG.com |
.microsoft-store | Microsoft Store |
.booth | BOOTH |
.digiket | DiGiket |
.nintendo-e-shop | Nintendo eShop |
.patreon | Patreon |
.furaffinity | Fur Affinity |
.tumblr | Tumblr |
.pixiv | Pixiv |
.discord | Discord |
.youtube | Youtube |
.afdian | AFDIAN |
.unofficial-patch-en | Unofficial English patch |
.unofficial-version-en | Unofficial English version |
.unofficial-patch-zh | Unofficial Chinese patch |
.unofficial-version-zh | Unofficial Chinese version |
We have also created URI shorthands for commonly links. Writing shorthand of URLs in the uri
sub-attribute makes the data file more readable.
Click here to see all URI shorthands
Linked site | URI shorthands | ID source |
---|---|---|
Steam | steam:ID | store.steampowered.com/app/ID |
Google Play Store | google-play-store:ID | play.google.com/store/apps/details?id=ID |
twitter:ID | twitter.com/ID | |
facebook:ID | facebook.com/ID | |
Discord | discord:ID | discord.gg/ID |
Patreon | patreon:ID | patreon.com/ID |
AFDIAN | afdian:ID | afdian.net/a/ID |
Youtube | youtube:ID | youtube.com/ID |
Pixiv | pixiv:ID | pixiv.net/users/ID |
Fur Affinity | furaffinity:ID | furaffinity.net/user/ID |
Tumblr | tumblr:ID | ID.tumblr.com |
DeviantArt | deviantart:ID | deviantart.com/ID |
FGI misc page | FGI-misc-page:ID | (FGI games repository) misc-pages/ID.md |
If a custom name is written, you can specify an icon for the link to replace the default icon. That is, fill in the icon
sub-attribute with the file name of an icon in FGI Icon Library (without format suffix).
This attribute is optional.
- name: Link name
icon: Icon name
uri: URI
thumbnail: thumbnail.(Image file format suffix)
This attribute is required.
Thumbnail are an important supplement to the text description showing the game style, and making suitable thumbnail can facilitate the selection of games of interest.
In terms of content, the thumbnail should be clear, beautiful and show the overall tone of the game, take the pictures officially posted first and meeting the following requirements:
- The title text is fully revealed.
- Opaque background.
- Does not include extra added borders.
- Does not contain sensitive information.
In terms of specifications, the standard (maximum) size of a thumbnail is 360px × 168px.
Make thumbnails of standard size specifications as much as possible. If the original thumbnail is smaller than the standard size, the picture should be kept 15:7 in aspect ratio by cropping the picture, and the original picture should not be forced to be enlarged. If the original thumbnail is larger than the standard size, it should be reduced, cropped, etc. to make it conform to the standard size.
The thumbnail file name is unified as thumbnail
, and the format suffix is filled in according to the case. The thumbnail file should be stored in the games/assets folder named by the game identifier (if it does not exist, you need to create it yourself).
The thumbnail file size must not exceed 100 KiB, and no significant distortion (ringing effect, square effect, tonal separation, noise, etc.) must occur when compressing image.
screenshots:
- Image A link
- Image B link
- sensitive: true
uri: Image C link
…
This attribute is required.
The screenshots attribute can be populated with both image entries and video entries.
To insert an image, simply enter the link to the image after the -
horizontal bar. If the image contains sensitive information, you should add the sensitive
sub-attribute and set the value to true
, and then add the uri
sub-attribute to fill in the image link.
Be careful not to host images containing sensitive information through a image hosting service that prohibits uploading sensitive images, otherwise the image will be easily blocked or deleted.
To embed an HTML video, enter the MIME of the video in the mime
sub-attribute of video
, and then enter the video link in the uri
sub-attribute. A video entry can contain videos in multiple formats, just add more links in the video
attribute.
- video:
- mime: Video MIME (format A)
uri: Video (format A) link
- mime: Video MIME (format B)
uri: Video (format B) link
To embed a Youtube video, you should fill in the youtube
attribute with a value of identifier of the video.
- youtube: Video identifier
name: Official game name in the target language | Folk translation / Original name
This attribute is optional.
To translate a game name, add name attribute to the localization file in target language and fill in the official name of the game in the target language first.
If there is no official translation, only the best quality folk translation can be used, or several well-known folk translations can be included.
However, the original name must be added after folk translations with a slash /
(U+002F) between the names and a space
(U+0020) between names and slashes.
For example, if the folk Chinese translation of Echo is "回音", the name attribute in the Simplified Chinese localization file for Echo should be
回音 / Echo
.
brief-description: A brief description of target language
description: |
Full description of the game in target language
The attributes above are optional.
To translate the brief description or full description, you should add brief description or full description attribute to the localization file in target language, and then fill in their corresponding translated text.
If a game's metafile has Markdown enabled, the description-format attribute should be added to the game's localization file as well, and Markdown enabled.
links-tr:
"Former link A name": "Translated link A name"
"Former link B name": "Translated link B name"
…
This attribute is optional.
To translate a link name, add links-tr attribute to the localization file of target language and fill in the translation entry for the corresponding link name. Link name should be enclosed in quotation marks "
(U+0022).
# Comments
If there are special or exceptional cases when writing description files, you should note them by means of comments.
old-ids:
- old identifier 1
- old identifier 2
…
This attribute is optional.
If you want to change an identifier for a game, you should use this attribute in the metafile to list the identifiers that have been used previously.
Modification of game identifiers requires the vote of half of the FGI members (even) or more than half of the FGI members (odd) except for abstentions.
expunge: false | true
This attribute is optional.
Enabling this attribute will remove the game from the list of FGI games, site search results and general search engine results.
However, the game page still exist, and FGI will indicate at the top of the page that the game has been expunged. The game will still be displayed on its author's page and in its author's "More games from" widget.
If the game has not been officially released or is not in public test, expunge attribute should be added and enabled in the metafile, otherwise it should not be added.
For example, Silent Adventure is neither officially released nor open test, so a expunge attribute needs to be added and enabled for its metafiles.