Flatdom,模拟文明的兴衰
古往今来,任何一个文明都不可避免地经历着一个过程,从最开始零散的部落开拓荒蛮之地,发展到广袤疆域,大城重镇的盛世,最终在天灾人祸战乱中衰落。Flatdom 的目的就是尽可能地去模拟这个过程。
Flatdom 是什么?
Flatdom 是一个二维的世界,由许多网格组成。上面生活的民众我们叫作 Flatone。每一个网格可以理解成一个地点,它可以是
- 一个 Flatone 的定居点;
- 一片无人居住的荒蛮之地;
Flatone 会一直尝试开辟无人居住的相邻网格,或者发展现有的定居点。Flatdom 上有诸多阵营,他们会为了网格,即是资源,而互相争斗开战。
Flatdom 发生了什么?
每一个网格都有一个 power index (权重)。它表示了这个定居点的发展程度或者这个无人之地被开辟的难度。
一个网格可以发生三种事件
- 开辟:一个定居点可以派遣一组 Flatone 去占领并开辟相邻的无人之地。这个定居点会失去对应这个无人之地被开辟难度的 power index。也就是说,无人之地网格 power index 越高;这个定居点就会失去越多的 power index 用以开辟。
- 发展:一个定居点可以发展自己,并有可能增加它的 power index。
- 战争:如果有不同阵营的定居点相邻,一个定居点可以发起战争来抢夺它。战争会减少双方定居点的 power index。谁的 power index 先变为 0,它就被对方占领了。
一个网格每回合只能发生一种事件。会发生那一种事件取决于这个网格和它相邻网格的类型和 power index。
Flatdom 实现原理?
为了简化模拟,每一个周期(回合),模拟器都会依次遍历所有网格。网格发生的事件会依照概率生成。生成的概率遵循上面所讲的条件,并掺入了随机因子。当模拟器计算了所有网格事件后的状态,再统一进行更新。
下面的截图展示了一个对于 8x8 大小的 Flatdom 模拟。最开始我们只有两个阵营,零散地分布。
经过一些回合,我们可以看到,
- 许多无人之地已经被定居;
- 大多数定居点已经发展到了顶点,有最大的 power index;
- 一些战争已经开始。甚至不少网格,因为被敌对阵营包围,已经易手;