学术干货 | Conway’s Game of Life 生命游戏的建筑设计应用

//
康威生命游戏 | Conway's Game of Life
//

The Game of Life (生命游戏) ,由英国数学家 John Horton Conway于1970年提出。作为元胞自动机系统,生命游戏是一个 零玩家游戏 ,用户 确定初始状态与演变的规则 后,无须其他操作,便可模拟得到形态的演变过程。元胞自动机的基本思想可以追溯到上世纪Von Neumann在“Theory of Self-Reproducing Automata”提出的 “机器繁殖” 一概念: 由一群细胞构成的小机器根据一些简单规则和初始图形进行演化的动力系统 ,机器可以不断自我进化和延续。本期我们将总结The Game of Life在建筑与城市中的相关设计应用,希望能给大家带来启发的同时,也致敬康威在计算机科学与艺术设计等其他领域的贡献。
1. 背景概述
2. 基本规则
3. 基本的生成图案
4. 相关项目与论文
5. 线上平台与开源程序
文章全长5800字,阅读时间15分钟
1. Brief Background | 背景概述
[ “Emergence” Concept | 涌现的基本概念 ]
“Emergence”一词是多学科中提出的概念,最初被定义为在复杂系统的自组织过程中,个体遵循统制定的规则,通过局部的相互作用,最终生成整体且连贯的现象(Goldstein 1999)。其特点可以概括为3点:新颖性(未生成的特征);相关性(保持个体与整体之间的关系);演变性(动态过程的产物) (Corning 2002)。Emergence在生成式设计中最常应用的有三种:1)The Game of Life 生命游戏(生成式设计),2)Boid 自治智能体(生成式设计),3)Tierra(多为艺术应用)
[ Cellular Automata & Architecture | 元胞自动机的基本概念 ]

元胞自动机(Cellular Automata,简称CA)同样是一种应用比较广泛的模型理论,定义在一定的元胞空间上,由具有离散与有限状态的细胞,按照一定的局部规则,在离散的时间维度上不断演化的动力学系统。John Conway的生命游戏则是元胞自动机的应用之一,在建筑设计的中的优势也可以总结成以下几点:
1.生成式建筑的多样性, 2. 与环境限制的互动与反馈,3.离散且数字化,高度可重复性。
2. Basic Rules | 基本规则
生命游戏在二维的方格中运作,每一个方格细胞可以被看作是一个生命体,且有两种生命状态:live生存(黑色),或 dead死亡(白色)。任意一个方格四周围绕的8个方格成为该方格的邻居(neighbours),而游戏中方格由上一代至下一代的存活情况变化,由它的邻居的生存或死亡情况的个数直接决定。游戏的核心规则有以下四条:

1. 出生 | Births: Each dead cell adjacent to exactly three live neighbours will become live in the next generation. (模拟繁殖)
2. 孤独而亡 | Death by isolation: Each live cell with one or fewer live neighbours will die in the next generation. (模拟生命数量稀少)
3. 拥挤而亡 | Death by overcrowding: Each live cell with four or more live neighbours will die in the next generation. (模拟生命数量过多)
4. 生存 | Survival: Each live cell with either two or three live neighbours will remain alive for the next generation.
3. Basic Cell Patterns | 基本的生成图案

在以上4条规则不变的情况下,对于生存与死亡的细胞的初始位置与个数的不同设置,最终的图案结果也会非常不同。如有时游戏中的细胞可能很快都将全部死亡,有时则会在不断迭代之后部分保留固定部分消亡。在大多情况中,游戏中的迭代运动与图案形式,可分为以下常见的3种类型:
1)Still Lifes | 静物
除非终止运算,迭代后都不会改变形态和位置。

2) Oscillator | 振荡器
经过有限的迭代后返回其初始状态,在有限形态之间周而复始地更替。

3)Spaceship | 宇宙飞船
图形会在方格内一直沿固定方向运动。

整个运算程序从原版到后来的众多变种,差别只在细胞的量变和更复杂的形变,而4条规则的本质没有变化。 也有一些研究者通过对规则稍微修改或补充而获得了更大型的图面变化。如Stephen Wolfram在 “A New Kind of Science” 一书中详细提到的Rule 30和Rule135在迭代后产生的复杂效果。 (小编在此不做展开,如果有兴趣,可以联系小编获得相关阅读资料)

部分院校关于生命游戏的相关资料
1) MIT Research
http:// web.mit.edu/search/? q=the+game+of+life
2) Cornell Math Explorers’Club
http:// pi.math.cornell.edu/~li pa/mec/lesson6.html
2) Stanford Research
https:// web.stanford.edu/class/ sts129/Alife/html/Life.htm
4. Projects & Papers | 生命游戏的项目与相关论文
项目1: An Evolutionary Architecture 1990 John Frazer

提到元胞自动机在参数化设计方面的应用,就不得不提到John Frazer在“An Evolutional Architecture”一文中的实体项目。其中, 建筑被称为“人工生命| Arificial Life” ,由简单的生物规则,以DNA的形态来模拟复杂的架构形式。该项目包含1728(12*12*12)个含LED灯光的单元体,每单元体中有八个LED的状态来表示单元在空间中的状态。这个应用程序实际上是元胞自动机的早期例子:将每个单元0或1的状态分成了更多样的8类。同时,根据给定的规则, 每个单元块将通过串行的形式传输数据来影响其6个相邻单元体LED灯的亮暗状态,即alive/dead 的变化。 每个单元的最终状态被映射到图形输出设备,在设备中用几何体变换来表示数据可视化的输出,成为了在空间生成领域中的一重要方法论。


以下分享的几个设计项目在设计方法上略有相似之处,但各有侧重点。 基于以上所提到的背景知识,运用生命游戏的演变逻辑设计,在空间形态生成的过程中最主要的是 1)演变规则的设定,与2)初始seed pattern即alive 和dead 细胞的个数与位置。
项目2: Cellular Automata Workshop (AA DRL 2013 )
(项目链接: http:// aranchii.com/blog/cellu lar-automata/ )
视频来源: https:// vimeo.com/89872842
AA建筑联盟自2009年就开始深入研究元胞自动机的理论和实践,通个控制自组织系统的策略,并找出在建筑设计中的应用方向。本项目虽然是AA早年的实验性项目,但对形态的演变过程与设计表达都比较完整。同时, 将空间分割为截断八面体 而不是通常的立方体素的算法实现也成为元胞自动机研究的贡献之一。通过更改输入的参数,即增长规则和初始称对称形式的生存细胞,不同的形态变化可以被迭代生成。迭代得到的图像纵向排列后,将体素代替成像素。经多次生成比较,通过更改演变规则的参数和初始pattern的形式,得到体素间连接度的最优规则参数与演变形式丰富的seed pattern。在生成最终最优的体素柱后,设计师再加入了表面的smooth处理成平滑曲面。




项目3: Symbiotic Growth (AA DRL 2015 )
(项目链接: https:// issuu.com/yuanyao2014/d ocs/booklet )
该设计项目与上一个项目的叠加概念比较相似,根据在网格中心的初始生存格点,在规则下随着时间的演化,不断纵向地叠加成柱状镂空的体量。但与上一个我们介绍的项目相比,这个项目除了在初始seed pattern和演变规则上有更多的研究,在生成的过程中,还加入了 生成的速度 (pattern的演变快慢)这一变量。下图也展示了在相同seed pattern下的对于neighbours 个数的设定,以及generation 变化的频率对于整体形态的影响。


项目4: Cellular Automata-Continuos Path Generation (AA DRL 2017 )
(项目链接: https:// issuu.com/taeyoonkim/do cs/continuouspathgen )

不同于前两个项目将像素直接转体素的变化,在该项目中,生命游戏生成的 像素图案是实体搭建路径的依据 。设计师首先先设定Game of Life中的4条基本规则的不同参数,并设计不同的初始pattern形态。在得到生成的像素化平面图后,由2D像素图至3D体素的这个过程中,设计师根据 生成的平面像素点的connectivity和continuity对设定的演变规则和seed pattern做出一定的筛选 ,得到最优的区间和样式。设计师同时又引入了实体的搭建单体,根据alive格点的位置连接与放置单体。作为短期的实验项目,以上3个项目的生成式设计方法,都验证了game of life 由像素到体素的基本转化方法,在一定程度上也增加了初步过程中的多样性结果。


项目5: System Development - Cellular Automata (2014)
(项目链接: https:// wewanttolearn.wordpress.com /2014/11/13/system-development-cellular-automata/ )


整个项目使用 Morphocode Rabbit插件 ,与前几个项目相同,在设计方法上主要还是基本规则的设定以及初始pattern形态的变化以生成纵向体量。但与前者们不同在于, 设计者将纵向生长方向替换成环形或者其他曲线形的生长路径 ,虽然在真实建筑体量的生成中应用意义有局限,但也给装置性设计方面一定的指导意义。在进行了初步的试验后,设计师最终选定了1种neighbour规则和3种初始的pattern作为下一步的研究。在第二步,每一层alive的细胞像素中心点被提取出来,并以这些中心点设置一定半径的球体,通过球体半径的长度,筛选得到在球体半径内的点被相互连接的疏密程度。最后以连接的线条生成管状行架结构,给之后类似的结构生产提供了新的设计方法。


看完了以上比较抽象的实验概念性设计项目,我们再一起看看生命游戏在 真实的建筑环境 有哪些应用吧。
项目6: System Development - Cellular Automata (2014)

(Herr & Kvan 2005)是 生命游戏在实际住宅结构中的初步尝试 ,之后也衍生启发了更多关于住宅的研究性与实践性项目。其中,建造边界中的黑色块为住宅单元, 研究者通过设定不同参数,制定了对应实际住宅排列不同疏密,公共空间与私密空间的比例,流线情况等的一系列规则。 同样,根据设计师一开始对于住宅单元的位置与个数的设定,通过算法的运算,系统可生成不同的住宅设计情况,供设计师在初步设计中给予有效的参考。(Herr & Ford 2015) 的项目则是在此基础上推进了住宅中具体的私密与公共空间的生成比例,由下图可见,红色块设定为私密空间,蓝色块设定为开放空间。在根据具体项目设定的规则与初始pattern的安排下,自动生成的层层像素图,也将辅助设计师完成与细化每个楼层的具体空间排布。

项目7: System Development - Cellular Automata (2014)
(项目链接: http:// futurearchitectureplatform.org /projects/8bc22f57-b11c-489a-a2b3-3847f32a8018/ )


基于我们一开始提到的John Frazer的实验性项目,本项目 也将黑和白的非死即生的细胞类型衍生成了多类的情况 。设计师提出了3种单体:花园(黑),开放空间(灰)和交流空间(白)。再通过制定这三种空间的6种运算规则,在场地的网格边界内,由生命游戏常规的像素到体素的生成过程,得到了一定高度的建筑体量。基于元胞自动机算法的自组织特点,设计师也提出了 “用户自动管理” 的住宅概念。即整个建筑具有一定的临时性,除了这3种体块之外,住户单独居住的住宅空间也可以在整体的行架之间自由更改放置的位置,以满足不同的用户使用特点对于住房的需求,使整个住宅区会有功能组织与形态的变化。
项目8: Exploring Ancient Architectural Designs with Cellular Automata(2010)

在实际住宅的应用中,除了以上提及的住宅设计, CA生成逻辑还有对复杂体量的分析作用 。该文章介绍了元胞自动机的分析型研究,以及如何通过简单的规则模拟生成高度复杂化的建筑设计。研究者选择了亚洲古代建筑作为整个分析的应用。亚洲的古寺一般形态复杂,体量大,对称形式且伴随着大量建造技艺的断层。研究者通过尝试不同的规则与初始pattern, 得到与古建筑的形态生成最吻合的算法,用于分析那些没有记录的古建形态和建造规律,并在其基础上做一定的古建筑修复指导 。
5. 线上平台与开源程序
如果大家想自己尝试一下The Game of Life的演变过程,小编也总结了一些线上平台、实用的插件、与开源程序与大家分享。
1. 线上平台: “Javascript Game of Life”
(平台链接: http:// pmav.eu/stuff/javascrip t-game-of-life-v3.1.1/ )
(Guthub链接: https:// github.com/pmav/game-of -life )


该平台的 操作简单且互动性高 ,适用于对生命游戏的初步了解。用户可以随意在画板上左键点选初始的生存细胞,再点击RUN键,即可得到这些生存点在规则下的迭代情况,点击STEP键可以将迭代的过程分解导出。可以在迭代的过程中,用户同样可以通过在任意位置添加或者减少存活的细胞激发连续不断的细胞演变。开发者对于“Still Life”,“Gosper Glider Gun”,“Random”等也做了一定的图案总结,并附有两个写好的pattern生成程序“Benchmark#1”与“Benchmark#2”供大家尝试。
2. 线上平台: “Game of Life Cellular Automation”
(平台链接: https://www. samcodes.co.uk/project/ game-of-life/ )
(Guthub链接: https:// github.com/Tw1ddle/game -of-life )

该平台与上一个平台的基本功能相似,除了基本的STEP功能之后,还附有开发者总结的300多个 Pattern库的RLE位图文件 ,方便用户在之后的复制与修改。另有“ Random Pattern” 的自动生成功能,用户可以在pattern库中不断点击地生成随机的图案,选定后,即可在画板中的任意位置将图案加入正在运行程序中,影响形态的变化。
3. 线上平台: “Javascript Game of Life”
(平台链接: https:// copy.sh/life/ )
(Guthub链接: https:// github.com/copy/life )



这个平台为 集合了以上两个平台的功能的2.0版 ,并且加入了用户于程序的快捷调节,如运算的速度,点阵的大小,各点中生存细胞的数量等都可以根据需求调整,保存好设定后即可运算得到改编后的形态的结果。除了也可以在pattern库中选取需要的图案,其中还附有pattern file,以及对应到Wiki的链接对于该pattern形态生成的解释。 用户设定的pattern RLE位图格式也可以直接导入该平台进行直接运算。
4. Grasshopper插件:“Rabbit”
(插件下载链接: https:// morphocode.com/rabbit-0 -3-beta-is-out/ )

2D脚本下载链接: https:// morphocode.com/conways- game-of-life-with-rabbit/

现有主要的设定选项:

3D脚本下载链接: https:// morphocode.com/conways- game-of-life-with-memory/

现有主要的设定选项:

5. Grasshopper自编电池:Conway’s Game of Life in GHPython
(下载链接: https:// discourse.mcneel.com/t/ conways-game-of-life-in-ghpython/88340 )

Input与Output的具体操作:
1. Max: 细胞最大的生成数
2. Wrap: True即可有网格边界的限制
3. Rec: True即记录并输出完整的运算历史,False则只输出当前一代
4. States:当前cell状态树(1=活动,0=死亡),网格的每行都有分支
5. Ages:当前cell年龄树,网格的每行都有分支

6. 3D空间生成代码
类似3D形态生成的代码,大家也可以自行根据需求,在Github搜索 Conway’s game of life in 3D或者 Game of Life in 3D 中的开源代码。小编以下也给大家分享在Github等各大平台上检索到的5个3D结构生成程序和生命游戏的社区。
1. 代码链接: http:// code.algorithmicdesign.net /Game-Of-Life

2. 代码链接: https:// github.com/adjl/GameOfL ife3D

3. 代码连接: https:// github.com/EthanJamesLe w/GameOfLife

4. 代码连接: https:// github.com/mtcliatt/Lif e

5.代码连接: https:// archive.codeplex.com/? p=gameoflife3d

7. 生命游戏社区与论坛
(社区链接: http:// conwaylife.com )
(论坛链接: https:// conwaylife.com/forums/ )
