除此之外,画面上基本就没有其他的交互元素了。
点击地图按钮切换到全局视角,林纳斯这才注意到独特之处。
他所在的这个50x50的区域,与其说是地图,倒不如说是一个小房间。
此刻它正被嵌在一块由无数个房间组成的大号地图中。
除了他所在的区域之外,其他房间大多都是空的,偶尔也能看到些标着不同标志的房间。
那些标志,显然就是代表着在活动着的玩家。
事实上这正是林立新在《Screeps》中加入的一点优化策略。
并不直接生成一张超大的地图,而是根据需求动态地一个房间一个房间地生成。
当地图难以容纳现有的玩家之后,再考虑扩张。
而被完全弃用,长时间没人的空房间,则是会被服务端自动回收。
这套技术是林立新亲自操刀的。
除了优化之外,也算是在为一些未来才会用得到的技术做铺垫。
这种动态的地图加载,在未来的大世界游戏中还会经常用到。
就比如大名鼎鼎的沙盒至高神,MineCraft我的世界。
在MC中,每格格子都包含自己的数据,想要把整个程序化生成的近乎无限大的世界加载完,那根本就不现实。
别说有没有必要,就算是真要加载,那也会轻松把内存和硬盘都给撑爆的。
于是像MC这样的游戏便研究出了一套区块加载技术。
说白了就是把一整个完整的世界拆成一个个单元,根据玩家所在的位置动态地加载卸载。
保证同一时刻只有必需的区块在内存中。
这也算是MC这款游戏对内存高度敏感的诱因之一了。
林纳斯扫了一眼离自己最近的几个房间,随便挑了一个点进去。
“唔?”
地图的一角摆着一个画着跟对方同样图案的方块。
上方还显示着它的名字。
【我的基地1】
除此之外,还有几个小一些的点点,同样画着与基地完全一致的图案。
将光标移上去,右侧的信息栏便弹出了它们的信息。
这些东西就是所谓的‘Creep’了,也就是游戏最基本的行动单位。
有意思的是,这些Creep并非像基地那样静止不动的,而是随着游戏时间的流动一顿一顿地做着自己的事情。
其中两个正对着那个闪烁着黄色光芒的资源点,显然是正在开采资源。
另外一个则是在地图上跑来跑去,不知道在做什么。
虽然林纳斯对《命令与征服》这款火遍了大江南北的RTS并不感兴趣,但他的确还是偶尔能看到相关的内容,也算是略有耳闻。
眼前这画面,看起来似乎就像是《命令与征服》里那样子似的。
有基地,有建筑,有采矿的单位,也有备战的士兵。
现在唯一的问题就是……要怎么玩?
带着疑惑,林纳斯重新返回到自己的房间。
自己的房间里倒是的确也有一个自己的基地,这是刚才进入游戏的时候强制让他创建的。
不过名字他都没改,直接使用的默认的【Spawn1】。
如果说这是网页版的《命令与征服》的话,那这个基地应该能用来建筑一些其他东西才对。
最起码也应该能像刚才那个玩家那样,生产一些自己的单位用来操作。
但这里啥都没有。
他选中自己的基地,右侧的信息栏里虽然东西很多,但根本见不到生产东西的选项。
【不知道如何开始?点这里查看教程→】
不管林纳斯的实力再怎么高超,也不可能在一无所知的情况下凭空上手。
无奈之下,只好点进了教程。
这下他总算弄明白了要如何生产单位。
“要……要写代码??”
看着屏幕上跳出那密密麻麻一大片的内容,饶是林纳斯,也不免有些头皮发麻。
不过出乎意料的,这代码倒是意外的好懂。
比起自己平时所面对的C或是汇编这些语言来说,教程中展示的这个名叫NovaScript的语言,干净的简直不像话。
甚至林纳斯有种感觉,哪怕是个不懂编程的普通人,也能根据代码大致猜测出它的作用。
就比如面前这个生产一个Creep单位的代码。
Game.spawns['Spawn1'].spawnCreep([WORK,CARRY,MOVE],'Harvester1');
刚才乍一看,他还寻思这代码未免也太长了点。
毕竟汇编码平常基本都是操作寄存器和数位,很少有这种长篇大论的。
但仔细一看,这才注意到它反倒是更容易了解。
开头的Game.spawns显然是在尝试访问游戏中的基地列表,而传入的这个'Spawn1',不就正是自己基地的名字吗?
看样子开头这一截的意义就是定位到了基地。
然后后面的spawnCreep,自然就是调用这个基地的生产单位功能了。
WORK、CARRY、MOVE,这三个目测估计就代表着单位的能力。
Work工作,显然是用来采集资源或是建造东西用的。
Carry搬运,暂时不清楚,但大概是用来转运物资?
Move移动那就更是字面意思了。
等于说这么长一串,其实就只是让基地生成一个矿车而已。
“嘶……怎么感觉……好像有点意思?”
这游戏中似乎只有Creep这一种单位,并不像《命令与征服》里那样有两派风格各不相同的一大堆兵种。
想要实现什么特征,只需要按需求装配不同的身体部件就够了。
比如矿工,就可以多安装一些WORK部件,它挖矿的效率就会变得更高,当然,移动速度也会随之变低。
如果想要做出《命令与征服》中的快速侦察兵,自己只需要组装一个包含大量MOVE组件的Creep就够了。
也就是说,在《Screeps》这款游戏中,自己理论上是可以还原出《命令与征服》中的各种单位的。
能够限制自己的,恐怕只有想象力……以及编程技术。
林纳斯对《命令与征服》说实话并没有太多兴趣。
与其去玩,他更喜欢去研究GAMENOVA到底是如何实现里面的一些功能的。
但这个游戏给他的感觉完全不同。
复杂到让人发狂,但却意外的很吸引他。
不过林纳斯很清楚,如果是个普通人,在看到开头这截教程的时候估计就直接跑路了。
谁特么玩个游戏还要抓耳挠腮地学编程啊!
随着他输入代码,基地上便跟着出现了一个进度条。
没花多久,一个Creep便真的被造了出来,跟自己设想中的完全一样。
那接下来要做的事情就没什么好说的了。
无非就是想办法操作这个矿工去资源点采矿。
说实话,虽然教程里后续给出了很详尽的教程,但林纳斯已经没有心思继续跟着看下去了。
倒不是说他对这个游戏已经烦闷了。
恰恰相反的是,刚才的这一切已经完全把他的心给薅的死死的了。
与其跟着教程给出的完整代码去照抄一个,现在的林纳斯更想自己琢磨着慢慢设计出来。
‘砰砰砰’
正琢磨着,林纳斯的房间门被敲响了。
心流被打断的林纳斯骤然感觉到一种寸止的郁闷感,蹙了蹙眉,无奈起身开门。
“嘿,托瓦兹,我搞到了点东西,我敢保证你绝对会感兴趣。”
来人是‘背包’,赫尔辛基大学有名的代购客。
大家平常玩到的GAMENOVA的产品,很多都是他去专程跑的首发。
“我会感兴趣?”
被打断思路的林纳斯显然心情不太美好,皱眉看着他。
“嘿嘿……”
背包卖了个关子,伸手从身后的旅行包里掏了掏,半晌,摸出了一本厚实的册子。
书本包着完好的塑封,能清晰看见封面的样子,以及那个正儿八经的腰封。
【NovaScript从入门到入土】
【林立新·著】
“怎么说?是不是很心动?”
看到林纳斯有些迟疑的表情,背包就知道自己这趟肯定是捞着了。
“零售价21.95美元,算上我的服务费,友情价按30美元算没毛病吧?”
“唔……”
林纳斯沉吟几声,余光落在自己屏幕上那个还呆呆地站在原地的Creep身上。
想了想,他便直接掏钱结账。
即便是不玩这款游戏了,以后想要做点网页端的东西,恐怕也是绕不开NovaScript技术的。
“谢谢惠顾!”
背包笑嘻嘻地将钱收好,将书递给他。
眼瞧林纳斯急匆匆地就打算关门,背包猛地一伸脚,将门给别住。
“嘿,先别急,我这儿还有好东西呢。”
他又在旅行包里掏了掏,不多时,又是一本小册子被他摸了出来。
比起刚才那本精装书,这玩意儿看上去就有点不像话了。
破破烂烂的,显然是旧书了。
而且它要薄的多,顶多也就只能算是一册杂志的厚度。
《Nova语言-从入门到精通》
“淘货的时候发现的,虽然是漫画书,但是他们说这玩意儿很有料喔,跟着走是真的能做出东西的。”
“漫画?”
林纳斯疑惑地接过,打开快速翻看了两眼。
还真踏马是漫画!
这似乎是以《宝可梦》为背景故事设计的一本少儿编程指南。
主角是个带着皮皮到处冒险的宝可梦训练家。
在旅程中碰到的各种问题,都需要通过编写N语言代码来解决。
而解决的这些问题,恰好也都是电子游戏中常见的一些需求。
比如说通过设计卷轴滚动功能来让主角追上目。
简单来说,这是……GAMENOVA的青训营。
似乎是GAMENOVA为了培养下一代游戏制作人而专门编撰出版的漫画书。
“特价,现在只要5美元,如果你出十美元的话,我还能打包送你一册今天刚刚到货的《Screeps》API文档。”
“……好吧。”
看着背包的那副笑脸,林纳斯总算是明白了过来,看样子这才是他的最终目的。
……
不管怎么说,虽然林纳斯对电子游戏毫无兴趣,但在他的房间里,跟GAMENOVA有关的东西越来越多了。
有了新到手的几本文档,林纳斯在《Screeps》中大杀四方的最后阻碍终于是消失了。