一个朋友咨询想自己做一个游戏平台,特别提到棋类的完善。在游戏概念发展上,要比目前的游戏平台全面,跟上时代潮流。比如拿国际象棋来说,要引入近几十年国际象棋发展中,产生的新概念。
但笔者并不懂游戏开发,所以说不出什么门道。笔者偶尔玩的游戏也有限,最喜欢的莫过于国际象棋。和朋友沟通后,一时兴起搜索了下开源界。仅就国际象棋而言,发现了一个很有趣的游戏引擎,特此发个短文分享给 Rust 爱好者。
这款国际象棋游戏引擎叫做 rustic
,是 2019 年下半年开始开发的。纯粹 Rust 技术栈实现,目前仅有星星 30 个左右。作者完全是从头开发的,未从任何其它国际象棋引擎做任何派生。但是,rustic 集成了许多近几十年产生的新概念,包括国际象棋的玩法和编程开发方面。作者说:该引擎站在过去的国际象棋引擎巨人的肩膀上。
引擎特性
国际象棋的概念和新发展,笔者不做赘述,感兴趣的可以自行搜索。仅就游戏引擎的编程开发和实现方面,rustic
实现了如下功能特性:
- 游戏引擎
- 位板展示
- 魔术移动
- 换位表
- UCI 协议
- 游戏搜索
- Alpha/Beta 搜索
- 静默搜索
- “将”位扩展
- 移位顺序
- TT 移位优先级
- MVV-LVA
- 游戏评估
- 棋子盘点
- 游戏桌计算
目前正在开发的功能特性包括:
- XBoard 协议
- 搜索中的修建项完善
- 游戏暂停/结束时的锥形评估
- 更多评估术语
- 惰性 SMP
- ……
用户界面
一款游戏,直接展示给玩家,并和其交互的用户界面非常重要。目前,一些开源的用户界面已经非常完善和精美。所以 rustic
引擎不提供自己的用户界面,而是使用 UCI
和 XBoard
协议,与图形用户界面进行通信。
当前,rustic
引擎已经可以与以下游戏用户界面集成:
- Arena Chess GUI
- XBoard/Winboard
- CuteChess
- Tarrasch
- The Shredder GUI
- Fritz / Chessbase series
- Scid vs PC (database)
- Banksia GUI
有些用户界面未有列出,但 rustic
引擎作者很热情。如果 rustic
引擎使用者想集成到其它自己感兴趣的用户界面,可以提出 PR,rustic
引擎作者将免费(免费程度未知)支持。
平台支持,包含桌面版本
目前,rustic
引擎提供很多平台支持,甚至包括嵌入式设备树莓派 Raspberry Pi、Buster 等。
- Windows(包括 Windows 10)
- 32 位,通用版
- 64 位,通用版
- 64 位,旧版本
- 64 位,popcnt
- 64 位,bmi2
- Linux(目前主要是测试在 Debian 8 稳定版及以上,但其它 Linux 版本也支持)
- 64 位,通用版
- 64 位,旧版本
- 64 位,popcnt
- 64 位,bmi2
- 树莓派(Raspberry Pi、Buster)
- 32 位
如前文所述,最主要的是,rustic
引擎作者很有激情,支持力度相当大。如果喜欢国际象棋游戏,又不想在网上乱七八糟的游戏平台泄露个人隐私的话,可以自己架一个游戏服务器,和好友,或者其它匿名玩家快乐地下棋。
当然,rustic
引擎和其支持的用户界面,对于用户注册、聊天、记分,以及其它互动是完全支持的。只不过笔者个人,喜欢匿名游戏平台,不用注册,没有聊天交友一类乱七八糟的拓展,就是去随机下一盘棋。
谢谢您的阅读!
参考资料:
- rustic github 仓库
- rustic 官网及文档
- 开源的游戏类用户界面,见文章“用户界面”一节