一个棋盘,两种玩法。VEYRN Chess最近在开发者圈子里引起了一些讨论——它没有自己的服务器,却能让用户在线下棋;它不要求注册账号,却能接入Lichess的官方接口,把Lichess变成自己的对局引擎。
这个项目的出发点很朴素:作者想要一个打开即用、不需要注册、下完棋还能给出有用反馈的棋盘。他不想再做一个封闭的玩家池,然后假装空荡荡的匹配队列是个功能。
私密房间:短命信令,加密对局
任何新的联机产品都会陷入一个残酷的循环:没有玩家就意味着匹配慢,匹配慢就意味着没有玩家。VEYRN用私密房间解决了这个问题的一半。
房主创建一个链接,客人打开链接,一个短命的无服务器信令路由交换WebRTC offer和ICE候选,然后对局转移到加密的DataChannel上。信令数据几分钟后过期,它不是一个游戏存档。
但私密链接在朋友不在线时毫无用处。为此,VEYRN可以充当Lichess客户端:浏览器中使用PKCE的OAuth授权,打开官方Board API事件流,发起休闲快棋匹配,并将合法走法发送回Lichess。Lichess仍然是服务器和事实来源,VEYRN只是界面。
这刻意不是机器人抓取,也不是非官方桥接。它使用的是Lichess为第三方棋盘和客户端提供的API。
棋盘手感:让棋子锁在指针上
大多数国际象棋界面都可用,但更难的目标是让棋盘消失在手下。VEYRN使用指针捕获和基于transform的拖拽,让棋子锁定在指针上,而不是跳向被抓住的边缘。点击走棋和拖拽走棋共享同一条合法走法路径。预走棋显示为独立的视觉状态,并在轮换时重新验证。右键箭头和方块标记位于非阻塞SVG图层上,规划标记永远不会抢走一步棋。
视觉问题同样具体。坐标、合法走法圆点、上一步方块、将军状态、棋子和箭头都在争夺对比度。作者最终把棋盘当作仪表盘来处理:克制的矿物色方块、高对比度的棋子组、清晰的坐标,以及既区别于方块颜色又彼此区分的状态色。
在移动端,时间控制是全尺寸目标,而不是微小的内联链接。对局结束报告覆盖在棋盘上,立即给出有用的操作:下一个对手、私密房间、PGN或行为报告。
本地账本:没有云端历史,删除即消失
VEYRN将完成的对局记录在浏览器本地存储中。报告超越了胜负本身:没有VEYRN个人资料,没有云端对局历史。删除浏览器数据就删除了账本。网站使用匿名的、无cookie的Vercel页面浏览量分析,但走法、PGN和本地报告不会随这些事件发送。
国家旗帜根据连接大致检测,可以手动覆盖。在私密房间中,双方都会收到对方选择的国别代码,因此两名玩家不会坍缩成一个默认旗帜。
三个部分花费的时间比头条功能更多:
- 信令路由的健壮性——确保WebRTC连接在各种网络环境下都能建立
- 棋盘渲染性能——在低端移动设备上保持60fps的拖拽流畅度
- Lichess API的边界情况——处理超时、重连和异常对局状态
打开VEYRN Chess,选择一个时间控制,然后创建私密房间或使用Lichess登录。两种方式,同一个棋盘,没有服务器要维护,没有账号要注册。
热门跟贴