生命围棋——古老围棋与生命游戏的结合

在狂拽酷炫的大神烧脑的阿法尔狗原理解析之后,我更多的从游戏设计和现象角度谈谈围棋和生命游戏以及生命围棋一些设计思路和开发体验。

线上Demo地址:gooflife

“All of life is an act of letting go.” -- Life of Pi

这是生命围棋的主题,出自李安的《life of Pi》,翻译过来:人生(或者生命)就是不断前进、放下的过程,与生命围棋意义十分搭配,我们古称围棋为“弈”,西方名称是“Go”。弈:古语就是指下围棋,也有博弈、对弈的意思,与英文名Go of Life形成对称,而Go有走,去,进行,达到等含义,很多游戏的开始按钮都是Go,每一次点击和移动的游戏操作动作我们也可以看成是“go”。比喻人生如棋,我们的每一次观察、言语、动作、行为和决策都可以看成是一次落子,an act of go。

围棋

Paste_Image.png

围棋起源于中国,文化博大精深,论语、左传、孟子都有关于围棋的记载,“琴棋书画”棋所指的就是围棋,存在了几千年,而千古无同局,生命力依然非常旺盛。 我们可以几分钟了解明白围棋的规则,但也许要用一生来追寻围棋的技艺,古往今来也吸引了许多聪明人将智力和注意力投入其中,状态空间10^172远超过宇宙可观测的原子总数,可以说是最伟大的游戏。 这次人机大战,再次掀起全民(主要是中日韩地区)对于围棋的热潮和关注,而围棋一直都是完全信息博弈游戏的巅峰,人工智能的圣杯。而阿尔法狗4:1战胜李世石颇具历史意义,让我们有了参照物,知道人类围棋在天地之间是什么位置。

围棋规则

围棋规则主要可以归纳为下面三条:

  • 黑先白后交替落子于空白交叉点上,以所围地大小决定胜负,以黑贴白目平衡先手优势
  • 与子相邻的空白交叉点为气,无气被提子,无气点禁入
  • 打劫规则,避免陷入死循环Bug

围棋的复杂性

基于这简单规则,围棋涌现出近乎无穷的下法和策略,从围棋术语我们就可以窥见一斑:

  • 基本术语:气、提、目、地、空、眼、劫
  • 位置相关术语:天元、星位、小目、三三、目外、五五
  • 与扩展空间相关术语:长、尖、立、关、跳、飞、象、拆
  • 双方棋子接触时相关术语:冲、挡、接、断、跨、刺、挖、虎、碰、夹、托、压、爬、顶、扳、挂
  • ……

这次人机大战直播中,我们听到职业九段说各种围棋术语,但这些围棋术语也都是人为定义的,而阿尔法狗走棋的时候就没有这些概念,它只有概率和输赢,所以我们在直播中听到许多职业棋手们解说也看不懂阿尔法狗棋路,阿尔法狗也常常下出我们认为不合常理的棋路,同时职业在形势判断上出入也都比较大,说明了我们之前积累的围棋理论,比如一些总结出来的定式,包括“势”的概念及判断,其实是有局限性的。

围棋的涌现性

  • 两口真眼成活:围棋规则最基本的现象就是两口真眼可以成活
  • 局部对杀与死活:局部精确计算对杀和死活题都是可以有精确解的,这也是围棋棋力基础
  • 下一盘很大的棋子:吴清源当年开创了三三星天元的全新布局,震惊棋坛。现在常用来形容在政治、经济、商业上战略、布局、谈判的博弈过程。
  • 一着不慎满盘皆输:围棋的形势瞬息万变,每一手发挥都要求发挥优秀稳健,一旦出现失误、漏着、勺子,就有可能输掉全局。当年李昌镐人称为石佛,就是每一手棋发挥都非常稳定,都在八九十分左右。
  • 神之一手:围棋高手始终都在追求下出神之一手,也就是全盘效率最高的一手棋。

人机大战第四局,李世石在78手下出“神之一手”,展现人类的思维直觉、计算力和创造力,AlphaGo在此之后看似乱了阵脚,连续下出低级昏招,使得李世石拿下世纪大战中极具历史意义的一盘。

人机大战78神之一手

棋力的涌现

围棋如此复杂的下法和变化背后,可以用对弈记录和量化的棋力准确的衡量一个人的水平,现在已经是非常成熟的段位体系。

段位体系示意图

我们将上市公司估值作一个类比,一个上市公司也是非常复杂的组织,但通过发行股票后,在市场里可以量化得到公司估值。

goratings.org围棋世界排名

在这个排名背后我们看到AlphaGo现在一人之下万人之上,而当今围棋第一人就是天才少年——柯洁,他的职业是棋手,副业是段子手+网红,在AlphaGo击败李世石第一场后就放言:“就算阿法狗战胜了李世石,但它赢不了我!”。纵观五场直播过程,总体柯洁对于场上形势判断是最为敏锐和准确的。

柯洁大棋渣对围棋的理解

生命游戏

John Conway在1970年设计和发明的二维元胞自动机,元胞自动机最早要追溯到祖师爷冯诺依曼,
想象一个二维平面网格,每个格子里能放下一个“细胞”,它有死和活两种状态;它的下一代是由它自身和它周围邻居8个细胞的死活状态决定。

演化规则如下: * “人口过少”:任何活细胞如果活邻居少于2个,则死掉 * “正常”:任何活细胞如果活邻居为2个或3个,则继续活 * “人口过多”:任何活细胞如果活邻居大于3个,则死掉 * “繁殖”:任何死细胞如果活邻居正好是3个,则活过来

基于这三条规则我们可以在屏幕上观察到许多纷繁复杂、形态各异的图案。

常见的图案

更有滑翔机,滑翔机枪,滑翔机枪播种机这样神奇的产物。

Glider

GliderGun

Breeder.gif

我们可以用这些滑翔机模拟计算过程,在生命游戏的虚拟世界中构造一台通用计算机!康威和他的学生们也证明了在这个二维世界中存在并包含了通用图灵机(Universal Turing Machine),也就是说在生命游戏上是完全可能再虚拟嵌套一个生命游戏,下面这个图案是由Paul Rendell具体实现,分别在2000年和2010年用数以万计的细胞实现了图灵机和通用图灵机。

Turing Machine

Universal Turing Machine.png

康威他们还成功设计了一个自我复制结构,会通过产生自身的更多拷贝而在空平面上殖民,每个包含了一个通用图灵机。不过这么复杂的家伙要长多大?他们估计是在10^13像素这个数量级,大概要曼哈顿岛那么大一块地。

目睹这些震撼而复杂的动态后,康威放出豪言:“只要给我足够大的模拟空间,等待足够长的时间,生命游戏中可能演化出任意你能想到的复杂事物,包括可以自我繁殖的细胞,以及能够撰写Ph.D论文的智慧生命!”

Turing Machine Online

强烈推荐生命游戏 Web版(由Copy大神开发),可在上面看到非常许许多多震撼的Pattern,事实上基本导入了conwaylife(Wiki)里的Pattern,还带有视角伸缩和演化速率调节功能。

我们可以在图灵机之中定向植入一枚“病毒”细胞,“一粒老鼠屎坏了一锅粥”——一个极其有序的图灵机迅速走向崩溃,直观地观察到这样设计出来的系统其实也非非常脆弱的。

生命围棋

我们可以得到这两个游戏世界的共性

  1. 都在一个二维的棋盘和格子世界上
  2. 规则极简,都是邻近作用
  3. 变化和行为都充满了复杂性和涌现性

围棋和生命游戏至今都吸引了许多人参与和沉浸其中,在游戏过程之中不断涌现出让人意想不到游戏可玩性和惊奇性,这两个游戏也揭示了沉浸和涌现的深刻联系。

因此我们考虑如何将二者结合,尝试开发出一种新的游戏,以下就是生命围棋的基本构思。

生命游戏与围棋在两个不同的层次上进行融合。具体地,在高层是围棋规则——宏观对弈;而在底层世界是按照生命游戏——微观演化。

两个层次的交互体现为:高层玩家的棋子实际上是一片固定尺寸的方格世界,按照多数原则分配黑色、白色方格。这些方格可以作为底层生命游戏的初始条件,并按照生命的规则进行演化。反过来,生命游戏的游戏结果会决定高层的围棋游戏行为。也就是说,在高层,玩家的地盘占领除了由围棋规则决定以外,还会受到底层生命游戏规则的影响。生命游戏使围棋子进行演化,并可能影响周围的棋盘世界。

高层每一个围棋棋子映射成底层MM生命游戏方格,每一次落子以一定的概率在MM格子内生成一定数量的活细胞,这个过程称作【细粒化】,反之方格转化为棋子过程称为【粗粒化】,因为底层生命游戏会生长、扩散、死亡,方格会一个格点可能同时包含两种以上的方格,以多数原则决定该棋子归属,类似于地方民主投票——少数服从多数。

细粒化与粗粒化

底层由于也会常常出现两种颜色以上,因此生命游戏规则需演变成竞争性的生命游戏:

  • 死亡规则与原始的生命游戏一样。即如果一个黑色或红色细胞周围的黑或红色细胞总数少于2个或者多于3个,那么该细胞会死亡(变成白色)
  • 由死细胞转为活细胞的时按照多数原则
  • 如果中心是活细胞,周围有2或者3个活细胞也可用类似的多数原则,当出现偶数个相等,即2黑2红情况时,采用继承原则。

在开发过程中,生命围棋尝试了多人实时在线的游戏模式,简单来说有几个要点: * 不同颜色表征不同的玩家,玩家可以异步连续落子,也就是无需等待按顺序下棋,但会受限于自由活细胞数量限制 * 每一次时钟滴答会生成一定的自由活细胞,每次生成自由活细胞与场上活细胞是幂律关系,活细胞越多生成速率越慢 * 通过原力指数表征玩家对生命围棋世界历史进程的影响力

排行榜

但这次尝试,在刚上线前几天日均有破万的点击数,我们从中可以看到玩家们一统江湖,王朝更迭的现象,但持续的可玩性还远远不够,新鲜度过去之后,演变成偷菜拼时间的游戏,用户迅速流失。

关键参数

我们知道围棋的关键参数是19x19路棋盘,361个交叉点,据说当年围棋也是从9路、13路、15路、17路一直到19路演变过来,到了19路就停止了,得到19路关键系数。

而生命围棋规则里领军3个细胞创生,2或3个细胞继续存活无疑是生命围棋的关键参数,将这个换成其他数字都没有生命游戏如此多变好玩。

生命围棋里也有两个关键参数:

空间尺度:一个大方格对应多少小方格M

这是一个关键参数。当M较大的时候,底层的生命游戏规则将不会对围棋规则造成太实质的影响。当M较小的时候,整个游戏将变成生命游戏。

时间尺度:生命游戏演化速率T

假如不考虑计算机的运算速度,玩家下一步的时间如果为u,那么这段时间内,生命游戏演化的步数T就是一个关键变量。因为,如果T过大,则生命游戏的时间尺度就会过大,如果T小,那么生命游戏规则将来不得体现,围棋的时间尺度就会更大。总之,连续地调节T将会带来完全不同效果的游戏。 人脑的计算和反应能力,进行调节。 通过调整这个两个参数我们有可能体验感受完全不同的游戏。

生命围棋里的神之一手:

让我们展开想象,如果将M调到10^13次方,自复制细胞的量级;如果将M调到10^80次方——宇宙原子总和的数量级,,时钟滴答T=10^-34方接近普朗克尺度,那么神之一手这一落子,有没有可能从中涌现出智慧生命来,只是需要宇宙级计算能力的支持。

边界

万事万物都有边界。细胞有细胞膜?人与人之间不能靠得太近,特别是在不熟的时候。地球是球状的,有限无界。宇宙有边界吗?如果有,那么边界外面是什么?滑翔机飞到了棋盘边缘,怎么办?不能凭空消失。 而围棋一旦边界相互连通,则所有的位置关系:天元、星位都不存在了,边角死活也将全部改写,“金角银边草肚皮”,所有的位置都是中腹,其实玩的已经不再是原来的围棋,影响了可玩性,但是值得探索。 生命围棋的边界目前是环状的,即上下互通,左右互通,如果是莫比乌斯环会怎么样? 边界其实深远的影响了局部与整体的关系,边界问题其实很深刻,通过边界可以探索空间的性质——自由度、连通性和相关性。

边界

当然目前生命围棋的规则细节还没有确定和完善,还只是一个Demo,比如玩法和胜负条件都是开放的可变的,希望吸引更多同学,投入注意力,共同参与其中。

版本快照1

版本快照2

版本快照3

问题: * 规则设计:新的边界形式?排兵布阵新的游戏玩法?扩散多数原则是否合理?胜负条件?关键参数?还没有完善,提高可玩性?…… * 功能实现:关键参数和尺度调节功能;提子判断、双人对弈等等功能还有Bug;存储和同步问题 * 性能:加载慢、不流畅,远远没有支持伸缩自如的尺度变换 * 用户体验提升 * 人机对弈AI,如何与AI自动游戏设计结合 * 如何向游戏引擎发展?

棋如人生,人生如戏

最后总结来一些比较水的思辨,围棋、生命游戏、生命围棋都是虚拟世界,棋和戏都是对我们的世界和人生的投影,而我们自身又是什么的投影呢?

我们的宇宙也许可以看成是一个规模超级巨大的元胞自动机,从游戏的视角来看我们的现实世界,我们自身也无时不刻不处在被基因、谜因、权力和经济规律所支配的游戏之中,通过能量、符号、语言、货币、情感等信息流,不断驱动着我们的进行计算和演化,最明显的现象和规律就是我们要吃喝拉撒睡,我们有马斯洛需求层次,我们个体要经历生老病死,组织有兴衰成败,而我们有没有可能从中脱离出来,迈向更高一个层次?就像当年单核细胞进化成多核细胞超级个体,单一个体又演化成群落,群落又诞生了人类的智能和文明,此刻我们已经正处在演化的轨道之上。

我们可能去尝试创造和实现一个更大的模仿游戏——Matrix?

附:xkcd的漫画 xkcd漫画

三水

目前是彩云天气工程师,相信万物源自比特(It from bit),人生是一场宇宙级超大规模参与的绚烂游戏,也是自我认识的孤独旅程。 关键词:游戏迷(跑几步就喘)、极客范(不学无术)、不走寻常路(拖延症)、炼金术士(0 1)、海贼王(像条狗)。 一句话:量子比特深似海,放空了取一瓢饮。

北京