Variants
When Retool doesn't automatically detect titles that are related to each other,
you can manually group them together in the variants
array. The variants
array can also be used to set certain properties on titles that aid with
filtering.
You can do the following things in a variants
array:
-
Assign titles with different names to the same group.
-
Move titles to different groups than Retool initially assigns them to.
-
Group supersets and compilations with individual titles.
-
Set priorities on titles to make sure Retool selects the correct one during 1G1R processing.
-
Assign categories to titles.
-
Set local names for titles.
-
Tell Retool to ignore titles (not recommended).
-
Use
filters
to conditionally do some of the above things based on a title's regions, languages, a regex match against its full name, or the user's region order.
Structure
A variants
array contains objects, and looks similar to the following example:
"variants": [// (1)!
{
"group": "Example Title",// (2)!
"categories": ["Demos", "Games"],// (8)!
"titles": [// (3)!
{"searchTerm": "Example Title"},// (4)!
{"searchTerm": "Exemple de Titre"},
{"searchTerm": "Titolo di Esempio"},
{"searchTerm": "Example Title Budget Edition", "priority": 2}// (5)!
],
"supersets": [// (6)!
{"searchTerm": "Example Title Special Edition"}
],
"compilations": [// (7)!
{"searchTerm": "Example Title I & II Series Collection", "titlePosition": 1}
]
}
]
- The variants array.
- The new group and short name to assign to the contained titles, if they're found in an input DAT file.
- The
titles
array contains singular, standard titles that belong to this group. - The search term used when looking for a title in an input DAT file.
- If there are two titles from the same region, a
priority
can determine which should be selected. Lower numbers are higher priority. If nopriority
is specified, the priority of the entry is1
. - The
supersets
array contains singular titles that contain more content, or for some reason are superior to standard versions. For example, game of the year editions, or a DVD version of a title that was previously released on multiple CDs. - The
compilations
array contains titles that in themselves contain multiple titles. They might be from the same series of games, a single publisher, from a single genre, or otherwise. - The
categories
array overrides an existing title's categories, and replaces them with the ones in the list. When applied at this level, alltitles
,supersets
, andcompilations
are assigned the listed categories.
Each object in the variants
array describes a group of titles, and can include the
following keys:
Key | Type | Description |
---|---|---|
group |
str |
The group value is used as the new
group name and
short name for all of the titles in the
object. |
categories |
array[str] |
Optional. A category is a class of titles, like Demos, Games, and Multimedia.
Multiple categories can be assigned to a title, and existing categories are
overridden. If assigned at this level, all titles ,
supersets , and compilations in the object inherit the
listed categories. |
ignore |
bool |
Optional. Force removes the title from Retool's consideration. If assigned at
this level, all Caution The |
titles |
array[obj] |
Optional. Contains singular, standard titles that belong to a group. A |
supersets |
array[obj] |
Optional. Contains singular titles that contain more content, or for some reason are superior to standard versions. This might include, for example, a game of the year edition, an all-in-one pack that bundles a game and all its DLC, or a DVD version of a title that was previously released on multiple CDs. A |
compilations |
array[obj] |
Optional. Contains titles that in themselves contain multiple titles. They might be from the same series of games, a single publisher, from a single genre, or otherwise. A |
Standards
The following standards should be adhered to when contributing to a variants
array. This
helps to keep clone lists maintainable.
Order
-
Keep all the objects in the
variants
array in alphabetical order, based on thegroup
name. -
Within an object inside the
variants
array, keep the key order as follows:-
group
-
categories
-
ignore
-
titles
-
supersets
-
compilations
-
-
Make sure the objects inside the
titles
,supersets
, andcompilations
arrays are ordered by priority first, and then alphabetically within those priorities.For example, this is correct:
"variants": [ { "group": "Example Title", "titles": [ {"searchTerm": "Example Title"}, {"searchTerm": "Exemple de Titre"}, {"searchTerm": "Titolo di Esempio"}, {"searchTerm": "Example Title Budget Edition", "priority": 2} ] } ]
This is incorrect:
Group names
The group
key in each array object should be based on one of the title names in the
group, preferably from a USA variant and in English. Some titles won't exist in all
regions, so follow this order for naming the group
key:
-
USA name in English
-
United Kingdom name in English
-
European name in English
-
Any other region in English
-
Japanese name
-
Spanish name
-
Portuguese name
-
French name
-
German name
-
Whatever other name is available
Avoid certain group names
Avoid having a group
name that is the same as a lower priority searchTerm
in the
titles array, or a searchTerm
in a superset. For example:
{
"group": "Title",
"titles": [
{"searchTerm": "Title Director's Cut"}
{"searchTerm": "Title", "priority": 2}
]
}
In this scenario, Retool sees the first entry Title Director's Cut
, and goes looking for
titles with the short name title director's cut
. When it finds a match, it changes that
title's short name to match the group, title
.
When it gets to the second entry, Title
, it goes looking for titles with the short name
title
... but that's what we just renamed the Director's Cut short name to. Retool
promptly assigns everything in the group a priority of 2
as a result.
A similar thing happens if you have a a superset with a searchTerm
that's the same as
the group
:
{
"group": "Title",
"titles": [
{"searchTerm": "Title Director's Cut"}
],
"supersets": [
{"searchTerm": "Title"}
]
}
In this scenario, everything in the group gets assigned as a superset as a result.
If you run into this situation, the easiest solution is to rename the group to match the
first searchTerm
in the titles
array, which should be the highest priority:
{
"group": "Title Director's Cut",
"titles": [
{"searchTerm": "Title Director's Cut"}
{"searchTerm": "Title", "priority": 2}
]
}
Alternatively, you can give the group a name that matches none of the entries.