Skip to content

随机游戏筛选

Vnite 支持为随机游戏功能配置自定义筛选规则,你可以在 设置-高级-随机游戏筛选配置 中直接编辑 JSON。配置生效后,随机游戏只会从符合规则的游戏中抽取。

TIP

建议优先使用右上角的 预设配置 生成模板,再按需修改。

预设配置

当前内置了三组预设,适合用来快速起步:

  • 默认:仅保留 gameNameNot 黑名单
  • 筛选游玩状态:按游玩状态筛选,并保留黑名单
  • 筛选收藏:按收藏筛选,并保留黑名单

基本结构

筛选规则采用递归对象结构表示,每一层对象都遵循统一约束:

  • 对象必须且仅包含一个键
  • 键名表示操作符
  • 键值表示该操作符的操作对象

形式如下:

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

该结构可以递归嵌套,从而表达复杂逻辑。

NOTE

根节点必须为单一操作符对象,例如:

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

下面这种写法不合法:

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

可用操作符

逻辑与 and

  • 值必须为数组
  • 数组中的每一项都必须是一个合法规则对象
  • 所有子条件都必须满足
json
{
  "and": [{ "inCollection": ["A"] }, { "gameNameNot": ["game1"] }]
}

逻辑或 or

  • 值必须为数组
  • 数组中的每一项都必须是一个合法规则对象
  • 任一子条件满足即可
json
{
  "or": [{ "inCollection": ["A"] }, { "playStatusIs": ["playing"] }]
}

逻辑非 not

  • 值必须是单个规则对象
  • 表示对该规则取反
json
{
  "not": {
    "playStatusIs": ["finished"]
  }
}

inCollection

用于筛选收藏名称,值为字符串数组,每个元素为一个收藏名称。

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

gameNameNot

用于排除指定游戏,值为字符串数组,每个元素为一个游戏名称。该规则会同时匹配游戏当前名称与原名。

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

playStatusIs

用于筛选游玩状态,值为字符串数组,每个元素为一个游玩状态名。

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

可选值说明:

  • "unplayed":未开始
  • "playing":游玩中
  • "partial":部分完成
  • "finished":已完成
  • "multiple":多周目
  • "shelved":搁置中

示例

默认配置

默认情况下不会排除任何游戏:

json
{
  "gameNameNot": []
}

筛选游玩状态时保留全局黑名单

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

针对每个收藏精细化筛选

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