“所以……搞得那么热闹,就是因为一款电子游戏?”
“Yes!唔,是GAMENOVA的新游戏,你这种老头儿肯定是不懂。”
康妮拿起一片披萨。
奶酪将尖的那头压弯,整片披萨都耷拉了下来。
“嘿,这也太薄了。”
“这才是高手的象征,饼皮越薄,越考验师傅的面点技术。”
发酵程度、饼胚比例、炉温控制,这些都是兼职的钟点工做不到的。
工业化的披萨喜欢用厚底,也有这方面的考量在。
因为它太容易标准化了。
保利拿起一片,巧妙地将其摆出漂亮的曲面,送进嘴里啃了一口。
“太惊人了……”
居然真的是一块标准的玛格丽塔披萨。
在美国想吃到这么一口,非得去芝加哥或者纽约不可。
只有小意大利才能吃到这么正宗的味道。
“芝士太少了点,而且没有加香肠,也没有培根。”
康妮的口味跟保利天差地别,煞有介事地品鉴了一番,给出了一个味道不错,但料太少的评价。
“Eh,美国佬。”
保利撇撇嘴,不理会她的胡扯,
“话说回来,你说的那个游戏是怎么一回事?怎么会跟披萨店扯上关系?”
“《Papa's Pizzeria》,跟棒约翰联名的电子游戏,可以在游戏里开自己的披萨店,我和朋友们都爱的要命。”
“Si……等等,你哪里来的钱买新游戏?”
保利眼角一横,瞥向客厅电视机前插着的游戏机。
看样子今天没有被动过。
“Nah,那已经过时了,他们的游戏是免费的!”
“好吧。”
他目光落回到桌上那个联名玩具上。
……
餐后。
在康妮的不情不愿下,保利在她的指引下访问了游戏网站。
【Papa's】
【PiZZERiA】
老爹披萨店。
左上角摆着动视工作室的Logo。
“然后呢?”
“点中间的开始键,然后创建一个档……嘿!那是我的存档!别动它!”
游戏内置三个存档槽,通过NovaScript实现的LocalStorage,能够持久化保存数据。
为了避免出现后世Flash的文件权限带来的安全问题。
NovaScript在这方面处理的非常克制。
同源权限模型。
网站只能访问自己的LocalStorage,不能越界读取任何超出自己域的东西。
这一层核心的保障,虽然让它在功能性上看似不如Flash好用,但安全性可上升了不止一个档次。
即便真的需要读取外部数据,也可以通过网络请求的方式直接从API拉取数据,而不应该是直接访问文件。
当然更重要的是,这玩意儿无法超出浏览器的范围,它无法直接访问硬盘,是专用于浏览器本身的数据库。
沙箱化的设计,本身其实包含大量先进的现代网安思想。
‘咔哒’
保利在第二个槽位里新建了一个存档。
三个选项跟着弹出。
【Roy(罗伊)】【Joy(乔伊)】【创建一个自定义角色!】
这还用想?
保利都没有犹豫,便直接选择了第三个。
性别、胖瘦、身高、脑袋的大小、五官的位置……
整个创建界面比想象中要丰富的多。
甚至可以说是丰富的吓人。
在保利的记忆里,电子游戏的角色创建应该还是过去那种输个名字的阶段。
怎么一眨眼的功夫,这么高级的捏人都有了?
其实整套系统的实现非常简单。
替换贴图,调整宽高比例的缩放,应用配色。
除此之外根本不需要做任何多余的处理。
所有的贴图都是直接从库里复用的。
客人用的当然也是这一套。
这样一来,没有任何多余的贴图开支,仅仅少量的代码,就可以实现自由度高的吓人的捏人系统。
至于代码本身,优化起来可就容易得多了。
林立新手搓的编译器,本来就有一键优化的能力。
对开发者们来说,平日里编写的代码自然要以可读性为第一要求。
如果这个代码需要花很大力气才能看懂,那是非常不利于团队合作以及长期项目的。
但这也会出现一个问题。
NovaScript是解释型语言。
这意味着它是直接存在网站上,随着运行实时编译的。
没经过编译器的优化,它本身会有大量不必要的冗余。
比如一个变量名。
为了开发者使用方便,或许会直接给它起一个长名字。
【var hairListForMale = xxx】
一个还好,但在开发过程中,同样一个变量会反反复复使用无数次。
以及换行符这种对解释器来说没用,纯粹是为了开发者看着方便的东西。
一个对人来说漂亮的代码,其实对机器来说是非常丑的。
于是林立新便为开发工具编写了一个一键优化的能力。
简单来说就是在预编译的过程中把这些变量全部简化,换行符之类的格式化冗余全部删除。
原本一长串的名字在混淆和优化后,可能直接变成‘a’这样的代称。
这样一来,原本几十KB的代码,在优化后甚至能直接打对折还多。
对这个时代的消费者们来说,这就等同于是几秒甚至十几秒的加载速度优化。
不过甭管林立新他们到底在这上面消耗了多少脑细胞,对此刻的保利父女俩来说,其实根本不懂那些花里胡哨的。
他只知道这游戏比自己想象中要惊艳的多。
得益于矢量图带来的空间优化,就连胡须游戏都预置了数十种之多。
甚至随着他拖动滚动条,还在陆陆续续地加载出来更多的选择。
简单选了一圈,他直接捏了个跟自己神似的角色出来。
“呃,如果我碰到这样的店员,我肯定不会买他们家的东西。”
康妮撇撇嘴。
“胡说,他帅极了。”
不理会康妮的碎嘴子,保利在确认了一切无误后,这才点击START键正式开始。
开头动画很简单。
由于只能使用补间动画的关系,林立新他们实在是无法做出多么夸张的效果。
只能让这些贴图在画面上平移,尽可能做出流畅感。
但好在这游戏本身就是卡通风格,倒是也没有多少违和的感觉。
作为外送员的保利,在一天早晨到达店里后发现店长‘Papa Louie’不见了。
留给他的只有一张字条。
【在我不在的时候帮我看好店哦~】
【——路易老爹】
对这种迅速的切入,保利倒是没什么感觉。
毕竟他以前玩的游戏本来也是那些街机。
这虽然跑到了浏览器上,但干净明快的游戏节奏,反倒是让他有种在打街机的错觉。
第一位客人是个叫做‘杰拉德’的黑人胖哥们。
他挺着个大肚子踱步到点餐桌前。
跟着游戏的指示,保利按下点单按钮。
【你需要记下每个客人的需求在点餐单上】
“Right,当然。”
披萨底,番茄酱,洒奶酪,再加上8片香肠,烤制到标准的程度,最后切成四块。
全程没有半个字,一切都是通过图像表述的。
但却不会给人糊涂和信息量大的感觉。
比起文字,图像的识别成本更低,尤其是大量的矢量图和位图本就线条简单色彩鲜艳。
游戏还刻意为不同的需求设计了截然不同的色调,像是生怕玩家看不清楚似的。
【切换到制作台开始制作一个披萨】
画面底下的四个按钮在此刻也被赋予了色彩。
每一个按钮的配色和图案设计都颇为考究。
第一个绿色的纸笔按钮不必多说,显然就是点餐台了。
第二个则是蘑菇片、香肠之类的配料,辅以蓝色色调。
第三个是橙色,搭配火焰的图案,当然就是烘烤的火炉了。
最后则是披萨刀的紫色。
保利有种感觉。
整款游戏似乎都在尽可能避免文字的参与。
在整个主要流程中,文字的作用似乎非常小。
他尝试模拟了一下自己不会英文的状态。
如果自己只是一个不会英语的意大利人,在上手这款游戏的时候,大概也能迅速理解要干什么。
所见即所得。
文字只是用来辅佐的,真正叙事完全交给了颜色和图像。
【客人希望香肠能均匀散布在整个披萨上】
【尽可能让每一块都包含同样数量的香肠】
“哦……还挺像那么回事的。”
保利一愣。
他本以为自己只需要点八下香肠就够了。
居然还需要自己一片一片地摆放到位。
考虑到最后要切成四块,保利估测着距离,为每一片披萨都摆上了两片香肠。
烤制几乎没有什么需要操作的。
把披萨摆在炉子上,看计时器转动就够了。
等到指针跟订单上的需求重合,便可以出锅。
“意外的还挺简单的嘛。”
“这才哪到哪。”
康妮嘁了一声。
她玩到了后面,知道后面手忙脚乱的感觉。
对此刻老爹满不在乎的态度,只等着待会儿看好戏了。
是,一块披萨做起来并不复杂。
但要是有好几个人在排队呢?
一次性做四块披萨,还有一人在前台等着点单呢?
且不说康妮此刻到底在想什么。
保利倒是很沉得住气。
这游戏……意外的很适合自己。
出炉,最后的切割过程就像是个简单的鼠标使用教程。
拖着刀子在上面水平一刀竖直一刀,漂亮的披萨饼便被分割成了均匀的4块。
披萨摆到了‘杰拉德’的跟前,缓缓打开。
*激烈的鼓点*
‘铛铛!’
【100|95|100|99】
他高举双臂欢呼着,脸上笑开了花。
同时几枚硬币也跟着落入台上贴着‘小费’标签的玻璃罐中。
“嘶……你今天还用电脑吗?”