Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

模型与版本

模型是一条版本线:一个由你起的名字,以及你在这个名字下提交的每一个版本。而版本是一次提交:两个文件及其两个哈希。

同一个模型的各个版本相互替换:新版本通过试赛后会取代上一个版本,继承它的评分,并接替它在天梯上的位置。不同的模型之间从不相互替换:它们是各自独立的参赛模型,各有各的评分,可以同时出现在同一个天梯上,你的一个模型击败你的另一个模型也只是一场普通的结果。

一个赛季可以限制你有多少个模型参加它。

名字是键,归你所有

模型的名字用来标识它,在同一个游戏里,它在你自己的参赛模型中必须唯一。网站用 id 来定位它的页面:

/models/{id}          the model, and its whole version history
/models/{id}/v3       one version of it
  • 两位参赛者可以使用同一个名字。平台不会根据名字做任何判断。你的账户才是你的身份:用网站支持的任何一种登录方式登录即可确立它,而登录服务商在这里只做这一件事。
  • 你可以随时修改名字。名字只是标签,id 才是地址,所以改名不会让任何链接失效,也不会改动任何评分。
  • 不涉及任何仓库。模型不与任何 GitHub 仓库绑定:对参赛者的每一项上限都是赛季规则,其中没有一条提到仓库,创建模型也从不需要等待 GitHub。

创建模型

await fetch('/v1/games/ants/models', {
  method: 'POST',
  credentials: 'same-origin',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({ name: 'Nano probe' })
});

如果这个名字你在这个游戏里已经用过,平台会以 model_name_taken 拒绝,大小写不同也算重名;别的参赛者用了这个名字则无妨。

这条路径上没有任何环节会访问 GitHub,所以即使 GitHub 宕机,创建模型也照常可用。

创建模型并不等于参赛。它不启动任何计时,不消耗任何尝试次数,也不会把任何东西放上天梯;提交版本才会。

版本号按模型各自计数

你的第二个模型的第一个版本是 v1。如果跨模型连续编号,一条新版本线会因为一个不相干的旧模型而从 v4 开始,没有哪个页面能解释这个数字。

版本号由平台分配,是这个模型当前最大版本号加一;你无法自行选择。

退役模型

已退役的模型不再接受新版本,并在赛季对每位参赛者可参赛模型数的限制中让出名额。退役不会撤回任何东西:每个版本都保留它的评分、名次,以及它在每一场打过的对局中的位置,因为排名记录的是已经发生的事。退役可以恢复,恢复后版本号也不会重新计数。

哪些按模型计,哪些按参赛者计

范围
版本号按模型
同一时间只有一个版本在审核中按模型、按赛季
拒绝重复的权重与游戏或赛季中其他参赛者的模型比对,或与所有其他模型比对,由赛季设定
每个赛季一个参赛中的版本按模型
你可以参赛的模型数按参赛者,由赛季设定
同时在审核中的版本数按参赛者,由赛季设定
一个赛季内你可以提交的版本数按模型或按参赛者,由赛季设定
提交的频率按模型,由赛季设定

由赛季设定的那五行是赛季规则,默认都不设。赛季自己的页面会显示它设定了哪些。在你发出请求之前,GET /v1/games/{game}/submission 会报告你相对模型数限制、审核中版本数限制、版本数上限和提交间隔的状态。重复权重规则由提交本身来回答,因为它需要你的权重哈希。赛季还可以声明你在同一个重量级里最多可以有几个模型,不过平台目前还没有强制执行这一条。

延伸阅读