第九十四章:林天的创世与征服

城市的另一端,一个普通工人小区的居民楼里,林天的世界正发生着一场天翻地覆的变化。?幻.想?姬, ?首*发¢

窗外是属于整个城市的春节喧嚣。空气中充斥着家家户户的饭菜香,亲戚朋友间的谈笑声,以及孩子们在楼下追逐打闹、燃放“甩炮”时发出的“噼啪”脆响。这些充满了人间烟火气的声音透过窗户的缝隙渗进来,却像是被一道无形的墙壁隔绝开来,无法侵入书桌前那个少年的领地。

林天的整个寒假,几乎都是在这张不足两平方米的书桌前度过的。

这里是他的战场,他的实验室,也是他的圣殿。

那台由杨明宇“争取”来的崭新的电脑,因为寒假需要用的缘故,杨明宇让林天把它带会自己的家中。此刻它正发出低沉而平稳的“嗡嗡”声,像一头温顺的小动物忠诚地陪伴着它的主人。屏幕上,幽蓝色的光芒映照着林天略显苍白的脸和他那双因为长时间聚焦而布满血丝却又亮得惊人的眼睛。

他的手指在键盘上飞舞,敲击声清脆而富有节奏,像是在演奏一首激昂的只有他自己能听懂的交响乐。一行行、一串串在常人看来如同天书般的代码,在他的指尖下,如流淌的溪水般不断地生成、汇聚、奔腾。

对于林天而言,这个寒假是一场漫长而孤独的“创世之旅”。他的卧室就是那片混沌的虚空;那台嗡嗡作响的电脑就是他的创世神台。而他的目标,远比任何游戏里的最终Boss都更具诱惑力——创造一个真正属于他自己的,活着的“世界”。

这个世界的名字,他早己在心里想好,叫——“勇者斗史莱姆”。

……

春节前的十几天,是林天为这个世界打地基的日子。他明白,罗马不是一天建成的,一个完整的游戏更不可能一蹴而就。他的第一个也是最核心的目标是“创造生命”。

他要创造两个“生命体”:一个代表玩家的“勇者”,和一个作为敌人的“史莱姆”。

这个过程远比想象中要抽象和困难。他面对的不再是游戏里那些华丽的角色建模,而是一行行冰冷的代码。他翻开那本厚重的《C++ primer plus》像一个虔诚的学徒,在学习传说中的“造物术”。

他能清晰地闻到,那本书上散发出独特书香,那味道让他上瘾。-顽!夲-鰰¢颤- \埂^芯/蕞?哙·他学到了一个全新的让他着迷的概念——“对象”(object)。

他尝试着,用代码定义一个名为hero的“对象”。他为这个hero赋予了最基本的属性:

int hp = 100; (生命值)

int Attack = 10; (攻击力)

int defense = 5; (防御力)

紧接着,他又创造了第二个“对象”——slime。

int hp = 50;

int Attack = 5;

int defense = 2;

当他第一次在屏幕上通过指令成功打印出hero和slime的各项属性数值时,一种难以言喻的激动包围住了他。他知道虽然屏幕上空空如也,但在电脑的内存里两个看不见的“生命”己经被他注入了灵魂。

接下来,是赋予它们“形态”。他打开了windows系统自带的画图工具,用鼠标笨拙地一个像素一个像素地点出了两个极其简陋的形象:一个手持“木棍”(其实就是一条棕色首线)的火柴人,和一个蓝色的果冻状的圆形团块。

他将这两张图片保存下来,学习了如何将图片资源加载到程序中。经过无数次的路径错误,格式不支持的失败后,在一个飘着雪花的午后,他的屏幕上终于第一次,同时显示出了那个简陋的“勇者”和同样简陋的“史莱姆”。

它们静静地待在屏幕的两端一动不动。

但在林天眼里这己经是一个完整的“世界”的雏形。有英雄,有怪物,一个史诗故事的舞台己经搭建完成。

这个除夕夜,林天没有玩任何游戏。他在窗外辞旧迎新的鞭炮声中,将这个只能“看”的静态的程序,作为自己的第一个“作品”,郑重地存进了软盘。

他给它命名为——“世界 v0.1”。

短暂的春节假期,成了林天思维发酵的温床。他躺在床上,天花板在他眼里就是“勇者”与“史莱姆”对峙的战场。一个疯狂的想法在他脑海里盘旋:必须让它们“活”起来,必须让它们之间产生“联系”!

大年初三,他迫不及待地再次坐回电脑前,开始了他的第二阶段挑战——实现“第一次互动”。?y¢a¨n~h.u,a¨l^u?o..`c\o-m+

他的目标很明确:当他按下键盘上的某个键时,“勇者”的Attack数值要能够对“史莱姆”的hp数值产生影响。

这是这个世界里因果律的第一次书写。

他学习了如何监听键盘的输入。当他第一次成功地实现“按下空格键,屏幕上就打印出一行‘hello, world!’”时他兴奋得像个孩子。

紧接着,他开始编写核心的伤害计算逻辑。他写下了这个世界的第一条“物理定律”:

damage = hero.Attack - slime.defense;

slime.hp = slime.hp - damage;

这个公式很简单,却耗费了他整整两天的时间去调试。他遇到了各种各样的问题:负数伤害怎么处理?生命值会不会变成负数?他像一个严谨的立法者,为自己的世界,不断地增添着各种“补丁”和“修正案”。

终于在一个深夜他完成了这个阶段性的目标。

他运行着程序。屏幕上依然是那个熟悉的对峙画面。他深吸一口气,感受着指尖传来的塑料键盘的冰凉触感,然后轻轻地按下了空格键。

屏幕上没有任何华丽的特效,没有任何声音。

但是,在代表“史莱姆”的那个蓝色团块下方,一行由程序实时打印出来的白色文字,发生了变化。

slime hp: 50 变成了 slime hp: 43

林天的心脏,漏跳了一拍。

他又按了一下。

slime hp: 43 变成了 slime hp: 36

成了!

成了!他成功了!他用自己的代码,在两个原本毫不相干的“生命”之间,建立起了一条坚实不可动摇的因果链!

他不再是一个旁观的“神”,他变成了一个可以干涉这个世界的“玩家”!

这份喜悦远比“创世纪”时更加猛烈。他激动地在椅子上扭来扭去,双拳紧握,无声地庆祝着。他能闻到房间的空气里除了电脑机箱散发出的热风味,还多了一丝属于“成功”的气息。

实现了单向的“攻击”后,林天的野心彻底膨胀了。他要的不是一个简单的“打木桩”程序,他要的是一场真正的“战斗”!

寒假最后的几天,他向着那个终极目标发起了最后的总攻。

他要建立“回合制”的规则。当玩家攻击后,程序需要自动切换到“敌人回合”,让“史莱姆”也对他进行一次攻击。

他要加入“胜负判定”。当任何一方的hp小于或等于0时,战斗必须结束并宣告胜利或失败。

他还要有“奖励反馈”!这是游戏的精髓!胜利后必须有奖励,才能激励玩家继续玩下去!

这几个系统环环相扣,逻辑复杂程度呈指数级增长。他把自己关在房间里废寝忘食。他的草稿纸上画满了各种复杂的流程图,箭头和逻辑框交织在一起像一张张神秘的星图。

他的家人也感受到了他这最后冲刺阶段的疯狂。母亲端来的牛奶常常放到凉了他都忘了喝。父亲几次想叫他休息,看到他那双布满血丝却又闪烁着狂热光芒的眼睛都默默地把话咽了回去。

在开学前的最后一个晚上,林天终攻克了所有的难关。

他坐在电脑前,整个房间只剩下屏幕的光和电脑风扇的嗡嗡声。他感觉自己像一个即将见证奇迹的魔法师,整个人的精神都高度集中。

他敲下了“运行”的指令。

编译,通过!

屏幕上依然是那个熟悉的对峙画面。

林天按下了空格键。“勇者”发起了攻击,“史莱姆”的生命值减少了。

他屏住呼吸等待着。

一秒钟后,屏幕自动跳出了一行新的文字:

“轮到【史莱姆】行动。”

“【史莱姆】对你使用了【撞击】,你受到了3点伤害。”

“勇者”下方的生命值也随之发生了变化!

活了!这个世界彻底活了!它己经可以按照自己制定的“回合制”规则自动运转了!

林天的心提到了嗓子眼。他压抑着激动继续操作。

你来我往几个回合之后,他再次按下了空格键。

“你对【史莱姆】造成了8点伤害。”

“【史莱姆】的生命值为0,【史莱姆】被击败了!”

胜利了!

但,还没有结束!

最关键的时刻到来了。林天的呼吸,几乎都停止了。

屏幕在短暂的停顿后跳出了两行由他自己设定的闪烁着的绿色胜利信息!

“恭喜!你获得了【经验值5】,【金币2】。”

“叮!恭喜你升到了2级!你的【攻击力】+1,【生命值】+5!”

成了!!!

一个完整的、包含战斗、伤害计算、回合轮转、胜负判定、经验获取、金币掉落和角色升级的……一个完整的、最基本的游戏循环(game Loop)在他的手中完美地诞生了!

“啊——!!!”

林天再也抑制不住内心的狂喜,他猛地从椅子上跳了起来,在寂静的深夜里发出了一声压抑了许久的欢呼!

他成功了!他不再是一个只能被动接受规则的玩家,他用自己的双手,用那些枯燥的代码创造出了一个可以运转的拥有自己规则的全新世界!

这份由他亲手创造的从无到有的成就感,如同汹涌的岩浆瞬间冲垮了他所有的疲惫和煎熬,在他的身体里奔腾咆哮!

他激动地在房间里来回踱步,他想把这个好消息告诉全世界。他冲到门口想去敲响父母的房门,但又在最后一刻停住了。他看了看墙上的时钟,己经是凌晨三点。

他最终还是选择了一个人来品味这份至高无上的喜悦。

他回到电脑前,将这个凝聚了他整个寒假心血的程序小心翼翼地打包,存进了一张崭新的3.5英寸软盘里。他用油性笔在软盘的标签上一笔一划郑重地写下了它的名字。

——“勇者斗史莱姆v1.0”。

做完这一切,他拉开窗帘,推开窗户。清晨的空气清冽而新鲜。

他知道,这张小小的软盘就是他向杨老师,向全世界递出的第一份答卷。

他的故事,他的传奇,将从这个小小的粗糙“作品”开始。

一个属于中国,也属于他林天的游戏的黄金时代将在他的手中拉开序幕。

他对着那颗启明星,无声地笑了。