最新消息:

Lichess 技术架构分析及国际象棋开源生态

佳软 yeeach 190浏览 0评论

相信每一位国际象棋爱好者都曾经使用过 Chess.com 以及 和 Chess.com 类似但无广告、无订阅、开源的 Lichess.org。

如果说 Chess.com 代表了在线国际象棋的商业化主流,那么 Lichess 代表的就是另一种互联网精神:免费、开源、无广告、由社区驱动。

对希望搭建在线国际象棋站的应该会接触到各种国际象棋的开源项目,包括 Lichess开源的 lila、PlayStrategy、chessground、ython-chess、chess.js 等项目,对这些项目的关系大多会一团雾水。

 

由于Lichess是完全开源,是目前最成熟的开源国际象棋在线平台,其架构被公认为在线国际象棋的经典技术架构,因此我们可以通过研究Lichess的架构组成,从而搞明白国际象棋的开源技术生态。

Lichess:https://lichess.org/

Github:https://github.com/lichess-org

lichess-org 核心项目分析

Lichess.org 全部核心代码都存放在 https://github.com/lichess-org 下,包含了 70多个仓库,最核心项目主要为如下几个:

  • ila:平台核心服务

这是 Lichess 的主仓库。包含后端业务逻辑(用户、对局、锦标赛、学习、研究板、谜题等)和前端界面。负责几乎所有 HTTP 请求和业务逻辑。

 

  • scalachess:棋类规则引擎

封装了国际象棋及所有变体(Chess960、Crazyhouse 等)的规则、走法验证、局面操作。不依赖任何网络或数据库,是所有棋类逻辑的基础。

 

  • lila-ws:实时对弈 WebSocket 服务

独立进程,专门处理 WebSocket 连接(实时对弈、聊天、观战)。通过 Redis Pub/Sub 与 lila 主服务通信,实现解耦和高并发。

 

  • fishnet + lila-fishnet —— 分布式 AI 分析系统

fishnet:客户端程序,用户/志愿者在家用电脑运行 Stockfish/Fairy-Stockfish 提供算力。

lila-fishnet:lila 与 fishnet 客户端之间的代理/任务分发层。

这是 Lichess 通过众包算力实现“免费无限深度分析”的核心技术。

 

  • lila-tablebase: 残局表库(Tablebase)服务

提供 6-8 子力残局精确探查(Syzygy / Marc Bourzutschky 表)。

 

  • lila-push(Rust)—— 移动端推送服务

处理 Web Push / 移动通知。

 

  • 其他辅助:

chessground(棋盘 UI 组件)、mobile(官方 App)、lila-assets、docker 相关配置等。

 

 

Lichess 整体架构分析

Lichess 采用微服务 + 事件驱动架构,高度解耦:

前端层 → Nginx 反向代理 → lila(HTTP) + lila-ws(WebSocket)

实时通信 → Redis(Pub/Sub 消息总线)

持久化 → MongoDB(存储 120 亿+ 棋局、用户数据) + Elasticsearch(游戏搜索、研究板搜索)

棋类计算 → scalachess(规则) + fishnet 集群(分析) + lila-tablebase(残局)

通知 → lila-push

 

要搭建一个功能接近 Lichess 的完整平台,官方推荐方案:

核心服务层:部署 lila(主应用) + lila-ws(WebSocket) + scalachess。

数据存储层:MongoDB + Elasticsearch + Redis(必须严格按 lila 配置)。

AI 分析层:部署 lila-fishnet + 多个 fishnet 客户端(可本地或云服务器跑 Stockfish)。

残局服务:部署 lila-tablebase(或预生成表库)。

辅助服务:Nginx 代理、lila-push(可选)、官方 mobile App(或自行开发)。

基础设施:推荐使用 NixOS 或 Docker Compose。

 

开源替代方案

类Lichess 的整体平台替代开源项目

PlayStrategy.org:Lichess 的 fork,把 lila 扩展到国际象棋之外的抽象策略棋(围棋、五子棋等多种变体),功能几乎一致,可直接参考其修改。

Pychess.org:完全独立的开源在线棋平台,支持大量变体,界面和功能类似 Lichess。

Lidraughts.org:Lichess 的国际跳棋版,代码结构高度相似,可互相借鉴。

社区自托管项目:lila-docker(Docker Compose 简化版开发/自托管环境)。

 

 

组件级替代开源项目

棋规引擎:python-chess(Python)、chess.js(JavaScript)、rust-chess。

后端框架:Node.js + Socket.io / NestJS、Python FastAPI + Channels、Rust Axum + Warp(替代 Scala/Play)。

实时通信:直接用 Socket.io 或 Centrifugo(替代 lila-ws + Redis)。

AI 分析:本地/单机 Stockfish(不使用分布式 fishnet)、或自建 Fairy-Stockfish 服务。

数据库:PostgreSQL(替代 MongoDB,但需重构大量查询)。

残局表:直接使用 Syzygy 官方表库 + 现成 HTTP 服务(如 lichess-tablebase 替代品)。

前端:React + chessboardjsx / chessground 的替代库(Vue / Svelte)。

 

 

 

更多游戏资源

 

 

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址