林琅忽然坏笑一声,目光灼灼地看着许瀚文。
“哦?怎么说?”
许瀚文今天心情似乎不错,便配合着林琅,随他怎么闹腾。
“十分钟变30万现金。”
“哈?”
听到林琅这番话,他只觉得脑袋像被干了一锤,懵懵的发昏。
“咋的?你要去抢银行?”
“您且瞧好了吧。”
林琅轻笑一下,视线转移回编辑器上。
下一刻,他动了,双手噼里啪啦地在键盘上狂按,快的都要出现残影。
为了保持神秘感,林琅甚至都没有打开Aesprite画图,而是直接用代码强行喧染了一个小恐龙。
毕竟只是一坨单色象素而已,将它们转译成定长的二维数组便可以以代码的形式表示出来。
至于它的奔跑动画,那更是没有什么技术门坎。
将小恐龙的图象视为一个独立元素,为它创建一个映射的队列,向里填充小恐龙跑动的串行帧动画。
队列遵循先入先出的规则,在每帧的时候都从队列中取出一个元素,执行喧染,再将它推回队列中,便能够无限循环播放它的奔跑。
而这一切完全以代码的形式表示在IDE内,导致许瀚文这个不懂程序的实业家一头雾水。
他只知道林琅现在似乎正在编写一个程序,也许是一个新的游戏。
对于游戏开发而言,制作者其实是在‘面向玩家编程’。
不论是如何实现的效果,只要最后呈现在玩家眼中是正确的,那便可以随意使用。
就象前阵子搞抽象火了的xx正在成为一件艺术品那样。
有时或许开发者会想要创建一个细节丰富的环境,却又不想让它们占用过多的资源。
因此催生出了很多让人拍案叫绝的奇技淫巧。
例如视差贴图,为无需细致喧染的楼层窗户上粘贴一张室内环境的视差贴图,便可以伪装出一个完整房间的视觉效果。
比起直接建模完整的办公室,不论是喧染开销还是工程量都是天差地别的。
而回到小恐龙上面,同样有着一套能够在保持游戏内容完全不变的情况下节省大量工作量的方案。
如果仅从直觉上来看,整个小恐龙似乎可以被分解为数个元素。
一只向前奔跑的恐龙、不断生成新障碍的地图、向后飞的翼龙、昼夜的更替。
这样当然是一个常规的解决方案,但有的时候只需要简单的逆向思考一番,便可以看到一个全新的世界。
现在将所有可供识别的特征移除,整个场景便化为了一个静止不动的元素,以及一个正在不断后撤的地面。
没错,运动是相对的,与其让小恐龙真的向前跑去,倒不如让世界向它而来。
如果采用前者的方案,在实现这个过程的时候一切都是相对运动的,他还需要额外处理镜头的跟踪工作。
若是改用后者,一切可就都不同了。
翼龙和仙人掌的区别,只有Y轴的差异和运动速度的不同。
这样一来他便可以用同一套控制函数来控制两者,而不必编写一大堆没必要的冗馀。
一下子,整个作品的难度陡降一大截。
于是乎没有用多久,这部分便也被他完成了。
此时时间才堪堪过去几分钟。
接下来林琅打算把昼夜的更替添加。
一个仅有少量颜色的象素作品,想要实现这个效果实在太过轻易。
仅需对喧染的函数添加些许修改。
在原本的逻辑下,喧染会根据指示的坐标绘制映射的黑色象素块。
将这个黑色象素块修改为引用,并为背景也添加单色的绘制。
再次创建一个队列,跟串行帧动画的逻辑类似,只不过这一次填入的是多组颜色。
在帧更新中设计一套计时器,喧染则会根据计时器来决定何时更换下一套颜色。
白天,就背景为灰白色,恐龙和障碍为灰黑色。
傍晚,则替换成另一套更加昏暗的色盘。
而午夜就只需要将白天的色盘对调一下即可。
最后几分钟的时间则是为恐龙添加了跳跃的控制输入,以及碰撞检测。
随后添加分数的保存和记录,小恐龙便完工了。
整个过程林琅甚至没有调试半次,连预览都没有打开。
这番操作看在许瀚文眼里,便是只知道他在炫技,而不清楚他到底想要做一个什么东西。
不过答案很快就要揭晓了。
随着倒计时结束,林琅也按下了运行键。