Screeps这款游戏早在2016年就开始Early Access,但到目前为此,Steam上也只有不到800的评测数量。官方对于这款游戏的定位是专为程序员(Programmers)量身打造的游戏,不知道是不是因为程序大佬们都忙着996,根本没空玩游戏,所以不管是网上关于Screeps的文章,还是机核、B站,几乎为零。作为一个程序员,并热爱着这款游戏的人,由此萌生了向更多人介绍Screeps的想法。
编程类游戏有很多,被大家所熟知的应该是Zachtronics的编程游戏系列,包括像《TIS-100》、《SHENZHEN I/O》、《SpaceChem》,还有最近发售,以汇编语言作为基础玩法的《Exapunks》。先不说汇编是个什么东西,光“编程”这两个字,就已经劝退了一大部分玩家了。实际上Zachtronics的游戏在一定程度上还算不上真正意义上的编程游戏,游戏毕竟是以玩法为主,所以不管是《SHENZHEN I/O》,还是更硬核的《TIS-100》,实际都是做了简化,游戏过程更像是益智解迷类游戏,每个关卡设置一个难题,玩家通过手上的工具完成解答。
那什么是更真实的编程,很简单的说,就是程度员每天干的事情,用代码解决问题。Screeps的游玩过程,就是编码的过程,也更接近真实的编程。Screeps不是关卡式的,也不会设置什么难题,玩家所在的世界是一个开放式的世界,游戏也没有目确的目标,硬要说的话,生存可能算是一个,玩家唯一的武器就是编码。那在这样一个世界里,到底玩什么呢?怎么玩儿?为什么好玩儿?读完这篇文章,也许能让你了解还有这样一款特别的游戏,说不一定还能激发你对编程的兴趣,进入真实的程序员世界。
Screeps到底是个什么游戏,我们先来看看官方是怎么定义的。Screeps的意思是可编程的脚本爬虫(scripting creeps),它是一个沙盒式的大型多人在线即时战略游戏(MMO RTS game),核心游戏机制是对你的单位进行AI编程。通过JaveScript(一种程序语言,简称JS)的编写来控制你的殖民地,并和其它玩家的代码一起实时的,全天候7*24小时运行的世界。
先放一张图,整个Screeps的世界大概就是这个样子。
这个世界是由无数个小房间组成的,每个小方格代表着一个小房间,每个不同样式的图标代表这个房间正被某个玩家殖民。房间内的样貌大概是这个样子:
玩家可以在殖民地上开采资源,建立单位,以此来征服更多的领土。
当然与一般的RTS游戏不同的是,你所编写的代码才是操控Screeps世界的方式。当你完成对单位的编码后,就不需要再一直盯着游戏,离开游戏后,代码一样会在这个世界上持续运行。偶尔回来检测下状况,看看所有单位的行动,是否如你所愿,然后再做调整,所以完全可以当作“挂机”式游戏来玩儿。
这就是整个Screeps世界的构成。如果你的代码不够优秀,Creep不够智能,很可能就被其它玩家攻占。这个时候回过头去想,有没有比之前更优秀的算法,更好的策略选择,更效率的行动方式。每个玩家都是为了占领更多的领地,或者守住疆土,不停的在进化,迭代自己的代码,游戏最大的乐趣,也就是的这个过程,你总是会冒出更好的想法,更完善的策略机制。不断重复的这个过程中,其实也在无形中提升了你的自身的能力。
下面来展示下,如何在这个世界里“白手起家”,当中不会涉及任何一句程序代码,以便让更多的玩家能够理解游戏过程。
在游戏开始之前,会让你在整个大世界(第一张图片)里选择一间房间作为起始殖民地,假如我们已经选好了房间,大概就会是下面这个样子:
孵化器(Spawn):孵化器是殖民地中的核心建筑,它负责创建Creep(脚本爬虫)。可以存储300点能量。
能量块(Energy sources):游戏里最主要的资源,可以被爬虫采集。总共3000点能量,每300个游戏时间重置一次。
控制器(Controller):控制器代表你对这个房间的有殖民权。控制器可通过能量升级,总共8个等级,到达一定等级时,解锁相应的建筑和其它功能。
爬虫(Creep):游戏世界中最基础的行动单位,负责采集能量,修造,进攻,治疗。生存时间为1500个游戏时间。
这里需要着重介绍下Creep,游戏中大部的工作都是由Creep完成的。Creep本身可由7不同的身体部位组成:
一个Creep由什么部位组成,就可以干相应的事情,每一个部位还需要花费一定的能量值。有了身体部位这个机制,就可以自由搭配出不同职业定位的Creep了。比如专门负责采集的Creep,身体组成是 [CARRY, WORK, MOVE],有攻击能力的士兵Creep,身体组成是[TOUGH, ATTACK, MOVE, MOVE]。
Creep每移动一格,每个身体部位还会产生2点疲劳值,在疲劳值为0的时候,Creep才能继续移动。每一个Move部位可以消除2点疲劳值,且Move本身是不会产生疲劳值的。如果在[道路]这个地形上移动,每个部位也只产生1点疲劳值。
如果有多个相同部位,可以提高对应的能力,比如装配1个WORK的Creep,1个游戏时间可以采集2点能量,2个WORK可以采集4点,以此类推。
OK,上面这四个元素就已经可以够成游戏的最小玩法了。玩家需要做的就是通过孵化器生产Creep,采集能量,运输到孵化器供下个Creep生产,或者运输到Controller升级,完成这一过程就需要程序去控制了。
程序就像搭积木,游戏提供给你最基础的模块,怎样搭建完全是由玩家自由决定。游戏初期的这个阶段, 游戏提供的资源是很有限的,玩家能做的事情也很有限,先整理下我们的资源:
这个游戏最大的乐趣也就在这里,虽然没有具体目标,但游戏提供机制,就已经产生一大堆需要解决的问题了。而且程序员的强迫症,是要找到最优解决这些问题方法的。程序这个0和1的世界,是不会骗人的,具体编写成什么样子,就一定会按程序逻辑执行下去,没有偏差。所以理论上如果能够达到最优解,用程序是很容易达到这个目的的。
我们以如何最大化利用资源,不浪费能量块的采集为原则,来算一下,3000点能量/300游戏时间,1个游戏时间需要采集10点能量,理论上5个WORK同时采集就能达到最大效率。但这里还没有算上其它意外情况,比如Creep来回运输的时间,以及Creep的死亡。所以这里最智能的代码应该是考虑了所有情况,并且保证随时都有5个WORK同时工作。
再来考虑一下一个采集型Creep的部位组成 [CARRY, WORK, MOVE]为什么比较合理,其实很简单,1个部位如果在[道路]上只会产生1点疲劳,那1个MOVE部位搭配2个其它部位的情况下,刚好可以不需要休息、不间断的移动。
另外孵化器的能量存储上限只有300,一个采集型Creep[CARRY, WORK, MOVE]会消耗200点能量, 我们如果以[CARRY, WORK, MOVE]为基础部位组来构建采集型Creep,那当孵化器到达600上限的时候,是不是应该生产采集型Creep增强型 [CARRY, WORK, MOVE,CARRY, WORK, MOVE],来提高采集效率。那更智能的程序,是不是应该根据孵化器的上限,动态的生产Creep。
以上差不多就是游戏初期需要考虑的一些事情,游戏的全貌当然不止这一点,游戏的玩法还有很多。还包含各类建造,领土控制,经济,制造,运输,贸易,甚至可以采集特殊资源以赚取游戏内置货币,来换取更多的付费用户体验。
介绍了这么多,只是想让更多的人知道有这样一个神奇的游戏,虽然是程序员向的游戏,但编程其实也没有那么难。也许你对编程有点兴趣,把此游戏作为你的编程入门学习也是不错的选择。当你真的踏进Screeps的世界的,真是一入坑,深似海,每天思考的都是如何优化你的代码,总会有一大堆想法在脑海里,等着被实现。
PS:这个游戏其实有一个的终极目标,就是当你点下运行代码的那一刻起,你只需要作为一个旁观者,观察着你的思维产物,在整个世界漫延,生长,它已经是一台能够自主运行的智能生物了。
如果有兴趣的玩家,建议先上官网试玩。并且玩这个游戏需要阅读大量英文文档,英文水平不佳者请慎重购买。
评论区
共 10 条评论热门最新