服务器端裁判:为什么没人能作弊
YiBoard 的每一步棋都由服务器校验,客户端只是显示层。改客户端不能凭空造出一个胜利,这是反作弊设计的底线。
线上棋类最隐蔽的作弊方式不是"有人代打",而是改客户端:让程序替你自动落最强手,或者更恶劣地,伪造一个胜利。YiBoard 的反作弊思路很朴素:把裁判权从客户端拿走。每一步棋都先经过服务器校验,合法才落盘,客户端只是显示层。这篇拆开讲这套设计。
裁判在服务器,不在客户端
传统的客户端信任模型里,棋盘状态存在你本地,改内存就能改结果。YiBoard 反过来:服务器持有权威状态,你每下一步,客户端把意图发给服务器,服务器验证合法性(这一步是不是当前玩家?位置是否已占用?是否已经赢了?),通过后广播给双方。一个被修改的客户端唯一能做的就是发送合法动作,它无法凭空造出一个胜利,因为"胜利"由服务器判定。
为什么这很重要
- 公平:双方看到同一份棋盘,同一套规则,没有人能偷偷多走一步
- 评分可信:段位分数基于被校验过的对局,积分才有意义
- 观战与分享可验证:复盘数据来自服务器,不是玩家自说自话
- 为象棋围棋铺路:未来所有棋种共用同一个裁判内核
AI 对手是另一回事
和 AI 对战不需要服务器裁判:五子棋 AI 在浏览器本地跑 alpha-beta 剪枝,500ms 预算内搜索。本地引擎意味着没有排队、没有限速,也意味着你的棋不会因为服务器负载而变慢。想试试?[AI 对战页](/play)直接开一局。
FAQ
改客户端真的不能作弊吗?
不能凭空造胜利。服务器持有权威状态并判定胜负,修改的客户端只能发送合法动作,无法伪造结果。
AI 对战也用服务器裁判吗?
不用。AI 在浏览器本地运行,不需要服务器往返,所以无限速、无排队。
段位分数会被作弊污染吗?
不会被合法路径污染。评分基于服务器校验过的对局,刷分行为可被评分机制识别。
未来象棋围棋也用同一套反作弊吗?
会。服务器裁判内核是共享的,所有棋种都会复用这套设计。