林浩的房间里,键盘敲击声持续不断。
嗒。嗒嗒嗒。嗒。
那是老式机械键盘的声音,不算清脆,带着一种沉闷的、扎实的节奏感。屏幕的蓝光映在他脸上,瞳孔里倒映着滚动的代码。
他已经连续工作了六个小时。
从晚上九点吃完晚饭到现在,除了中间起身倒过一次水,上了趟厕所,他的手指几乎没有离开键盘。手腕有些发酸,指尖因为持续敲击微微发麻,但精神却异常清醒。
屏幕上是一个正在成形的Flash游戏。
不是之前那个简单的测试框架。这次是一个真正的、完整的、可以发布的游戏。
游戏的名字叫《细胞吞噬》。
灵感来自2028年某个独立游戏开发者的作品,但被林浩简化、重塑,适配到2002年的Flash平台上。内核玩法很简单:玩家操控一个最简单的细胞——屏幕上就是一个圆形,填充着渐变色的圆形——在一个有限的空间里游动。
空间里有其他细胞。有些比玩家小,可以吃掉。有些比玩家大,会吃掉玩家。
规则只有一个:大鱼吃小鱼。
但林浩在其中添加了一些细微的、超越时代的设计。
首先是成长机制。吃掉一个细胞,玩家的细胞体积会增加。体积越大,移动速度越慢,但可以吃掉更大的敌人。体积增加到一定程度,细胞会“分裂”——玩家可以操控两个细胞,再增加到一定程度,可以操控三个。
这是实时战略的雏形,虽然只是最简单的形态。
其次是变异系统。空间中偶尔会出现特殊颜色的“变异细胞”,吃掉后,玩家的细胞会获得特殊能力:加速、毒性(碰到敌人时造成伤害)、隐形(短暂不被敌人发现)、磁力(自动吸引小细胞)。
这些能力持续十秒,而且不能叠加。玩家需要权衡:是吃掉眼前的小细胞稳定成长,还是冒险去追逐变异细胞获得爆发力?
最后是环境交互。空间中有“营养液”局域,进入后细胞会缓慢自动成长。有“毒素”局域,进入后持续掉血。有“分裂墙”,细胞碰到后会强制分裂成两个更小的。
这些局域随机生成,每局游戏都不同。
林浩正在写内核的碰撞检测算法。
他写得很仔细。每一行代码都要想清楚:这个变量有必要吗?这个判断条件够严谨吗?有没有更高效的写法?
这不是简单的复制粘贴。小艺只能提供设计思路和算法逻辑,具体实现需要他一行行敲出来。而这个过程,正是他重新理解编程本质的过程。
上辈子在华为,他更多是架构师,是管理者。他画架构图,定技术方案,审内核代码,但很少亲自写这种基础的功能函数了。
现在,他从零开始。
凌晨四点,他完成了游戏的内核逻辑。点击测试,一个红色的圆形出现在舞台上,用方向键控制。屏幕上随机生成了几个其他颜色的圆形,有的大有的小。
他操控红色圆形靠近一个小的蓝色圆形。距离足够近时,红色圆形突然扩大,蓝色圆形消失了。屏幕左上角的分数从0变成10。
又靠近一个稍大的绿色圆形。距离拉近——绿色圆形突然反过来冲向红色圆形,然后红色圆形消失了。
“Ga Over”出现在屏幕中央。
基础机制没问题了。
接下来是美术。
林浩不是美术设计出身。上辈子他画的原型图都被同事吐槽是“灵魂画手”。但他知道2002年Flash游戏的美术风格:极简,矢量,色彩鲜明。
他不需要复杂的贴图,不需要精细的动画。他需要的是一种风格化的、有辨识度的视觉语言。
他打开Flash的绘图工具。用的是最基本的型状工具、填充工具、渐变工具。
玩家细胞:圆形,从中心向外的径向渐变,中心是亮红色,边缘是暗红色,有一种发光的感觉。
敌人细胞:也是圆形,但颜色不同。小敌人用蓝色系,中等的用绿色系,大的用紫色系。每个敌人细胞中心有一个更小的、颜色对比较强的点,象是“细胞核”。
变异细胞:用不常见的颜色,比如金色、银色、荧光绿。加之一个旋转的光环效果。
环境元素:营养液是浅蓝色的半透明矩形,毒素是深紫色的半透明矩形,分裂墙是黑白相间的条纹矩形。
他画得很慢。每个图形都要调整渐变参数,调整透明度,调整大小比例。有时画出来效果不好,就删掉重来。
凌晨五点,天边泛起鱼肚白。窗外传来第一声鸟鸣。
游戏的美术资源完成了。虽然简单,但协调。红蓝绿紫金的配色,在2002年的CRT显示