Skip to content

Random Game Filter

Vnite supports custom filter rules for the random game feature. You can edit the JSON directly in Settings - Advanced - Random Game Filter Configuration. Once the rule takes effect, random game selection will only pick from games that match the rule.

TIP

It is recommended to start with a preset from the top right and then adjust it as needed.

Presets

There are currently three built-in presets:

  • Default: keeps only the gameNameNot blacklist
  • Filter by Play Status: filters by play status and keeps the blacklist
  • Filter by Collection: filters by collection and keeps the blacklist

Basic Structure

Filter rules use a recursive object structure. Every object follows the same constraints:

  • The object must contain exactly one key
  • The key name represents the operator
  • The value represents the operand of that operator

The structure looks like this:

json
{
  "<operator>": <value>
}

This structure can be nested recursively to express more complex logic.

NOTE

The root node must be a single-operator object, for example:

json
{ "and": [...] }

The following form is invalid:

json
{ "and": [...], "or": [...] }

Available Operators

Logical AND and

  • The value must be an array
  • Every item in the array must be a valid rule object
  • All child conditions must be satisfied
json
{
  "and": [{ "inCollection": ["A"] }, { "gameNameNot": ["game1"] }]
}

Logical OR or

  • The value must be an array
  • Every item in the array must be a valid rule object
  • At least one child condition must be satisfied
json
{
  "or": [{ "inCollection": ["A"] }, { "playStatusIs": ["playing"] }]
}

Logical NOT not

  • The value must be a single rule object
  • Negates the result of that rule
json
{
  "not": {
    "playStatusIs": ["finished"]
  }
}

inCollection

Filters by collection name. The value must be an array of strings, and each item should be a collection name.

json
{
  "inCollection": ["collection1", "collection2"]
}

gameNameNot

Excludes specific games. The value must be an array of strings, and each item should be a game name. This rule matches both the current game name and the original name.

json
{
  "gameNameNot": ["GameA", "GameB"]
}

playStatusIs

Filters by play status. The value must be an array of strings, and each item should be a play status name.

json
{
  "playStatusIs": ["finished", "multiple"]
}

Available values:

  • "unplayed": Not started
  • "playing": Playing
  • "partial": Partially completed
  • "finished": Finished
  • "multiple": Multiple playthroughs
  • "shelved": Shelved

Examples

Default Rule

By default, no games are excluded:

json
{
  "gameNameNot": []
}

Keep a Global Blacklist While Filtering by Play Status

json
{
  "and": [
    { "playStatusIs": ["playing"] },
    { "gameNameNot": ["game1", "game2"] }
  ]
}

Fine-Grained Rules for Each Collection

json
{
  "or": [
    {
      "and": [
        { "inCollection": ["TODO"] },
        { "playStatusIs": ["unplayed", "playing"] }
      ]
    },
    {
      "and": [
        { "inCollection": ["good1", "good2"] },
        { "playStatusIs": ["finished", "multiple", "partial"] }
      ]
    }
  ]
}