这个周末玩了一下《戴森球计划》这个游戏。是一个模拟策略游戏。
背景大概就是要在太空中探索,然后游戏一开始会降落到一个星球上,寻找资源,发展科技。我暂时没还没有离开星球的能力,到了后期会是什么机制我也不太清楚。
其实类似的游戏也是有不少的,比如大名鼎鼎的《文明》系列,只不过太空的主题,还是让我有些无法抗拒。这游戏也出了挺久,虽然现在还不是正式版本,终究没忍住,想要玩一玩。
很多这类策略游戏里的主要驱动力是人,需要平衡资源和人口,让城镇稳步发展。
不同的是,《戴森球计划》的驱动力是电,干活的都是机器人和无人机,只要有电就可以稳定运行。
同时资源的量也是挺大的,所以困难点,不在于资源的合理分配。而在如何合理地规划各种设施,提高生产和研究的效率,更快地解锁更高的科技。
然后,我就发现很多编程领域的原则,在这个游戏里就很好用。比如模块化和解耦合。
刚开始游戏的时候,我就没有考虑到这个问题,把所有的东西都建在了一起。
下面的图中,有3个矿脉,通过采矿机和传送带,把采到的矿运输到红框中的仓库。
然后图中的闪电标志就是风力发电机,蓝色的框框就是它的电力覆盖范围。
一开始为了让发电站有更精准的作用范围,我就把所有的东西都混在了一起搭建。
发电、采集、运输、存储、生产全都混在了一起。虽然对于初期来说,开展很快,但问题就来了,可扩展性极差。
我现在想往里面增加一些东西都做不到,比如我想要利用一下中间那个仓库里的东西,都没有空间来铺设传送带,只能拆了重建。
但是,这时候,我并没有领悟到这一层,我只是觉得是因为我把他们铺设得太不规律了,歪歪扭扭的,只要建的规律一点就好了。
于是,我就建立了下面蓝框所示的一条生产线,从右往左,一步一步生产最终的产物。从浅蓝色的电网虚线,就能看出来排列得规律多了。
但由于挨得过于紧密,所以,想要用材料生产出其他的产物,也变成了一件很困难的事情。
就像图中的红框一样,可怜兮兮的堆在那里,但那也已经是极限了,没法再添加了,可扩展性依旧极差。
然后,我就突然有了一丝明悟,这条生产线就像是过程式编程,只负责从原始材料一步一步地生产出最后的产物,不考虑可拓展性与复用性。
这条生产线本身是一个整体。除非是作为一个整体被复用,不然,很难复用其中的某个部分。基于同样的原因,也很难被扩展。
于是,我就想到了模块化。采集区就专门采集,生产区就专门生产,发电区就专门发电。
于是,我就建立了一个专门的发电厂:
哪里需要电就通过电力塔来传输:
说起来,咱们现实的世界不也是这样的嘛,有专门的发电厂,通过电缆传输电力。没见过为每个小区建立一个专门的发电厂的。
全都放在一起,属于农耕文明,可以自给自足。但很显然不太适合现代的社会。
总结一下,计算机领域的很多知识都可以用在其他的领域。我相信其他领域也有很多知识也可以用在计算机领域。
或者说,殊途同归,说到底都是同样的道理,只不过表达的方式不同而已。
所以,平时多想一想,这个知识还能用在哪里,是很有好处的。
字数:1087
耗时:1小时10分
··················END··················