「所以……搞得那麼熱鬧,就是因為一款電子遊戲?」
「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】
他高舉雙臂歡呼著,臉上笑開了花。
同時幾枚硬幣也跟著落入台上貼著『小費』標籤的玻璃罐中。
「嘶……你今天還用電腦嗎?」