拿走一副牌,去掉桌子、洗牌、关于规则的争吵,以及那个总是赢的朋友。剩下的是一组约束——而浏览器把这些约束处理得非常漂亮。

棋盘就是界面

棋盘游戏的状态永远可见:每个棋子都在它该在的位置,每个合法走法都是一种空间关系。你不需要菜单、教学或提示来解释「能做什么」——几何本身就在解释。

这几乎能一比一映射到 canvas 上。把一枚棋子从一个格子拖到另一个格子,在屏幕上和在桌面上是同一个手势。

回合制意味着不需要物理

卡牌或棋类没有逐帧的时机判定、没有碰撞检测、没有镜头。这去掉了大部分困难的工程,也几乎去掉了所有对延迟的敏感。回合制游戏在烂网络、旧手机和笔记本触控板上都能玩。

它还意味着游戏可以等你。你可以离开标签页再回来,棋盘还在原处——任何带实时计时器的东西都做不到这一点。

隐藏信息才是有意思的问题

卡牌带来了棋盘没有的东西:你不被允许看到的信息。诚实地实现它是真正的工作——一副洗过的牌必须在客户端洗,而且不能把顺序泄漏到好奇的玩家能读到的内存里。

这就是网页上的卡牌游戏通常做成单人变体、配一个公平且种子可靠的洗牌,而不是竞技实现的原因。也是纸牌接龙为什么这么好用:隐藏信息是对你隐藏的,而挑战就是接受这一点。

对手问题

双人抽象游戏需要一个对手。完美 AI 对新手很无聊,对其他人不可战胜;弱 AI 则立刻无聊。

有用的中间地带,是一个「有打法性格」的 AI:激进、保守或贪心,外加一点刻意的瑕疵。玩家更喜欢打败一个性格,而不是打败一个算法——哪怕它们其实是同一个算法。

搬不过去的部分

  • 桌面上的闲聊。 一局桌游之夜有一半是在争论。屏幕去掉了这一半,所以谈判类游戏的线上版永远比桌面薄。
  • 实体感。 洗牌、掷骰、棋子的重量。依赖这些的游戏会真的失去一些东西。
  • 开局仪式。 摆盘是一场社交热身。一个写着「新游戏」的按钮不是。

它们为什么活得下来

棋牌活下来,是因为规则紧凑、状态可读,深度来自少量交互而不是大量系统。

这恰好也是浏览器游戏该有的样子。四百年的试玩积累,不算一个差的起跑线。