第九十九章 像素鳥的內部試玩belike:集體坐牢

投票推薦 加入書籤 小說報錯

  第101章 像素鳥的內部試玩belike:集體坐牢

  通用汽修廠那股常年揮之不去的機油味和重工業特有的鐵鏽氣息,隨著車門關上,被徹底隔絕在車窗之外。

  楊堅坐在后座上,看著窗外芝加哥南區那些斑駁的磚牆在視野中迅速後退,腦海里還在盤算著安杜瑞爾工業接下來的研發預算。

  阿瑟·萬斯那個技術瘋子一旦放開手腳,燒錢的速度絕對會讓人心驚肉跳,但這筆錢非花不可。

  實體硬體的製造與底層控制系統是安杜瑞爾未來的護城河,但這道護城河的挖掘周期註定漫長。

  現階段,真正能為他提供源源不斷現金流、支撐起整個商業帝國早期擴張的引擎,依然是那些躺在伺服器里就能撬動全球千萬用戶的數字產品。

  車子平穩地駛入市區,最終停在了辦公樓前。

  推開魔笛手公司玻璃大門的那一瞬間,空氣里的味道從刺鼻的柴油變成了濃郁的現磨阿拉比卡咖啡豆的香氣。

  伴隨著中央空調微弱的嗡嗡聲,敲擊機械鍵盤的清脆聲響交織在一起,如同某種富有節奏的現代工業交響樂。

  這裡的氛圍與安杜瑞爾那座猶如堡壘般的兵工廠截然不同,充滿了矽谷式的自由散漫和一種由智商堆砌起來的活力。

  楊堅脫下深灰色的休閒西裝外套,隨手搭在臂彎里,大步向辦公區深處走去。

  今天是魔笛手公司內部一個相當關鍵的節點。

  繼《2048》這款數字解謎遊戲在全球市場站穩腳跟並持續貢獻驚人利潤之後,公司的第二款核心產品《FlappyBird》(像素鳥)的測試演示版(Demo),在今天正式展示。

  這間原本顯得有些空曠的辦公室,如今已經坐下了九名員工。

  「老闆,您回來了。」

  阿曼達抱著一疊報表迎了上來,壓低聲音說道:「迪尼什他們已經在二號會議室準備好了,測試機也已經連上了投影儀。不過,他倆又開始拌嘴了。」

  楊堅挑了挑眉毛,推開了二號會議室的玻璃門。

  迪尼什穿著一件略顯褪色的格子襯衫,站在投影幕布前,手裡握著一台連接著數據線的測試手機。

  他昂著下巴,眼神里透著一種「我寫出了絕世神作」的驕傲,但眼角卻不自覺地抽動著,顯然是在壓抑著某種怒火。

  在他對面的轉椅上,吉爾福伊爾像一灘軟泥一樣癱坐著。

  這位留著大鬍子的系統架構師手裡端著一個印著倒十字架的馬克杯,正用一種看垃圾的眼神看著屏幕上的代碼日誌。

  佐伊則坐在一旁,拿著觸控筆在平板上無聊地畫著圈,假裝沒聽見這兩個男人之間的爭吵。

  「我再說一次,迪尼什。」

  吉爾福伊爾慢條斯理地喝了一口咖啡,聲音毫無起伏,卻帶著致命的殺傷力,「你的垃圾回收機制(Garbage Collection)寫得比現實世界裡的垃圾車還要遲緩。如果不是我重寫了底層資源調配的邏輯,把你的那些冗餘函數全部切掉,你這隻像素鳥飛不過三個水管,手機的內存就會因為過載而原地爆炸。」

  「閉嘴,吉爾福伊爾!那是物理引擎的正常開銷!」

  迪尼什像被踩了尾巴的貓一樣跳了起來,揮舞著手裡的手機,「重力加速度、跳躍初速度的判定、還有碰撞體積的實時反饋!這些都需要計算周期!你不能指望一輛法拉利跑出自行車的油耗!」

  「但你交給我的是一輛漏油的拖拉機。」

  吉爾福伊爾面無表情地反擊,「我只是順手幫你把漏油的孔堵上了,免得你的愚蠢弄髒了我的伺服器集群。」

  「咳。」

  (由於緩存原因,請用戶直接瀏覽器訪問 讀小說選 TW 看書網,𝘀𝗵𝘂.𝘁𝘄超流暢 網站,觀看最快的章節更新)

  楊堅清了清嗓子,拉開主位的椅子坐了下來。

  聽到動靜,爭吵聲戛然而止。會議室里的九名員工立刻挺直了腰板,目光齊刷刷地匯聚到了楊堅身上。

  「看來我們的飛鳥已經準備好衝出鳥籠了。」

  楊堅把西裝搭在椅背上,指了指投影幕布,「開始吧,讓我看看你們這段時間的成果。」

  迪尼什立刻收斂了怒氣,換上了一副職業的笑容,清了清嗓子開始演示。

  隨著他在手機屏幕上輕輕一點,投影幕布上出現了一個粗糙的、由大顆粒像素塊拼湊而成的遊戲畫面。

  背景是明艷的藍天白雲,下半部分是不斷倒退的馬賽克草地。

  畫面的正中央,是一隻長著厚厚香腸嘴、眼睛一大一小、看起來呆頭呆腦的黃色小鳥。

  「美術方面,佐伊完全領會了您的意圖。」

  迪尼什指著那隻鳥介紹道,「去掉了所有多餘的陰影和漸變,只保留最基礎的色塊。

  這種設計不僅極大地降低了渲染壓力,而且————」

  「而且看起來充滿了嘲諷的味道。」

  佐伊在一旁補充道,「我故意讓它的眼睛不聚焦,嘴巴張開,給人一種這傢伙根本沒有腦子」的錯覺。當玩家控制這麼一個蠢東西還死掉的時候,心理上的挫敗感會成倍增加。」

  楊堅看著屏幕上那隻欠揍的小鳥,滿意地點了點頭。佐伊的審美直覺總是這麼精準。

  「接下來是核心玩法。」

  迪尼什深吸了一口氣,手指開始在屏幕上富有節奏地點擊。

  伴隨著清脆的「撲棱」聲效,那隻黃色小鳥在重力的拉扯和手指點擊的向上推力之間,開始在空中上下起伏。

  屏幕上,一對對綠色的水管如同障礙物一般緩緩移動過來。水管分為上下兩截,中間留出了一段空隙供小鳥穿過。

  迪尼什的手法相當熟練。小鳥在他的控制下,平穩地穿過一個又一個水管縫隙。屏幕上方的數字也隨著穿過水管的數量開始跳動:10、20、30————

  「物理碰撞的包圍盒我們做得很嚴謹,精確到每一個像素邊緣。」

  迪尼什一邊操作一邊解說,「只要小鳥的任何一個邊緣觸碰到水管或者地面,就會立刻觸發死亡判定,直接墜地。」

  不到兩分鐘,迪尼什已經拿到了80分。

  他故意鬆開手指,小鳥一頭撞在了水管上,伴隨著一聲滑稽的墜落音效,屏幕中央彈出了「Game0ver」以及一塊銅牌的結算界面。

  演示完畢,迪尼什將測試機遞到了楊堅面前,眼神里充滿期待。

  其他員工也都屏住了呼吸。在他們看來,這款遊戲的操作手感已經調優到了相當流暢的地步,美術風格雖然怪異但也別具一格,作為一款休閒小遊戲,絕對是及格線以上的作品。

  楊堅接過手機,沒有立刻發表評論,而是自己點開了重新開始。

  他的大拇指在屏幕上不緊不慢地敲擊著。水管一根根滑過,10分、30分、50分。他玩得很輕鬆,甚至還有閒暇去觀察水管生成的規律。

  會議室里安靜得只能聽到楊堅手指敲擊屏幕的「噠噠」聲。

  當分數跳到65分的時候,楊堅主動停止了點擊。小鳥直挺挺地摔在地上,遊戲結束。

  他放下手機,抬起頭,目光掃過長桌兩旁的九名員工。

  「迪尼什,物理碰撞的判定非常精準,整體項目的框架也搭得很紮實。作為項目負責人,你帶了個好頭,幹得非常不錯。」

  楊堅先是看向迪尼什給出了首肯,隨後目光轉向另外兩人,「當然,在這基礎之上代碼還能跑得這麼順暢,幾乎感覺不到掉幀,吉爾福伊爾的底層優化功不可沒。至於佐伊,你的美術也完全達到了我要的那個噁心人的標準。」

  楊堅先是給出了肯定,但緊接著,他的話鋒陡然一轉,語氣變得銳利起來。

  「但是,作為一款產品,它還沒有達到預期效果。或者說,它的核心靈魂還沒有體現」

  o

  迪尼什臉上的笑容僵住了:「搞錯了?哪裡不對勁?物理引擎有bug嗎?」

  「引擎沒問題,問題出在數值策劃和關卡生成邏輯上。」

  楊堅伸出一根手指,在桌面上點了點,「水管之間的高度差,太平緩了。上下兩根水管的間隙留得太寬容了。」

  他調出剛才的錄屏回放,指著畫面上的水管段落。

  「你們看,第一對水管的開口在屏幕正中央,第二對的開口偏上了一點,第三對又偏下了一點。這種高度差的起伏像是在散步,玩家只需要保持一個勻速的點擊頻率,就能輕鬆混過幾十關。這有什麼挑戰性?」

  迪尼什皺起了眉頭,忍不住出聲反駁:「老闆,可這是一款面向大眾的休閒遊戲啊。

  現在的難度曲線我認為非常合理。玩家剛上手玩個兩三把,稍微找找手感就能拿到50分甚至100分,這會給他們帶來強烈的成就感。」

  「如果我們把水管的高度差拉得太大,比如上一根水管的開口在最頂端,下一根直接掉到最底端,玩家根本反應不過來。如果新手連十個水管都過不去,他們馬上就會因為挫敗感把遊戲卸載掉的!」

  其他幾個程式設計師也紛紛點頭附和,在傳統的遊戲設計理念里,循序漸進的難度和及時正向的反饋,是留住玩家的不二法則。

  沒有哪個設計師會一上來就刻意刁難玩家。

  聽著迪尼什的反駁,楊堅忍不住笑了起來。

  他站起身,走到白板前,拿起馬克筆畫了一條陡峭的曲線。

  「迪尼什,你剛才提到了成就感」。你說得對,傳統遊戲是在販賣成就感。但《FlappyBird》不同。」

  楊堅轉過身,看著會議室里的所有人,加重了聲音:「這款遊戲不販賣成就感。它販賣的是「挫敗感」,以及由挫敗感衍生出來的「不甘心」和「憤怒」。

  會議室里鴉雀無聲,所有人都被這個反直覺的理論搞懵了。

  「我要達到的效果是,一個從來沒玩過的新手,下載完遊戲的前十分鐘裡,連得10分都是一種奢望。他們會在第1根水管撞死,在第3根水管撞死。」

  「他們會覺得這遊戲的手感簡直像一坨屎一樣難以控制。我要讓他們拿到100分的成

  本,不是隨便點兩下,而是至少需要一個小時以上的肌肉記憶練習和精神折磨。」

  楊堅的聲音在會議室里迴蕩,帶著一種看透人性的智慧。

  「當一個人在其他遊戲裡當慣了拯救世界的英雄,突然在這款遊戲裡連一隻看起來連腦子都沒有的像素鳥都控制不好時,他的第一反應不會是卸載,而是憤怒。他會覺得:「我怎麼可能連這麼簡單的東西都玩不好?」

  楊堅用馬克筆在白板上重重地點了幾下:「這就是勝負欲。這隻長著香腸嘴的蠢鳥,會成為挑起他們勝負欲的最好武器。當他們歷經千辛萬苦拿到20分的時候,他們截圖發到社交網絡上的炫耀感,會比通關一款3A大作還要強烈。」

  迪尼什張了張嘴,似乎想要反駁,但腦子裡順著楊堅的邏輯一推演,卻發現竟然出奇的合理。

  「當然,我們不能一味地去折磨玩家,那叫反人類,那確實會導致卸載。」

  楊堅的話鋒再次一轉,拋出了最核心的設計細節。

  「在你們修改算法、拉大整體水管高度差的基礎上,我要求你們加入一個偽隨機機制。在連續幾個落差極大的變態水管之後,程序必須有概率生成一兩對高度差幾乎為零、或者連續平緩起伏的福利水管」。」

  「為什麼?」佐伊有些不解地問道。

  「為了給他們一種虛假的自信。」楊堅嘴角勾起一抹弧度,「當玩家被變態的地形折

  磨得想要砸碎手機屏幕的時候,突然遇到了一段順暢的路。這時候即使他失誤死掉了,他也不會去怪遊戲太難,他只會怪自己剛才手抖了。」

  「那個福利水管」會向他的大腦發送一個信號:這遊戲其實不難,這次只是運氣不好,再來一次我絕對能破紀錄。」

  「打一巴掌,再給一顆甜棗。利用這種錯覺,把他們死死地鎖在再來一局」的死循環里。」

  楊堅將馬克筆扔回筆筒,拍了拍手。

  「道理我已經講明白了。但是,紙上談兵沒有意義。」

  他看向在座的九個人:「現在,打開你們電腦上的後台編輯器,把重力參數調高15%,把水管的上下間隙縮窄20%,把高度差的隨機閾值拉大一倍。」

  對於這群頂級極客來說,改幾個變量並重載代碼簡直像喝水一樣簡單。

  僅僅過了不到十分鐘,隨著迪尼什敲下最後次回車鍵,極速編譯完成的區域網下載連結已經發送到了會議室每個人的工作手機上。

  「接下來的三十分鐘。」楊堅拉開椅子重新坐下,看了看手錶,「會議室落鎖。所有人,包括你,吉爾福伊爾,全部給我試玩這個新版本。三十分鐘內,誰也不許放下手機」

  o

  會議室的大門被關上。

  起初的兩分鐘,房間裡只有輕微的指尖敲擊屏幕的聲音。

  但很快,氣氛就變了。

  「謝特!這重力怎麼回事,感覺像綁了塊石頭!」一個負責後端的小伙子低聲咒罵了一句。

  「見鬼!這水管是從天上直接掉到地下的嗎?這怎麼穿過去!」

  「我的天,我連5分都拿不到————啊!又撞了!」

  隨著時間一分一秒地推移,會議室里此起彼伏地響起了倒吸涼氣的聲音、煩躁的嘆息聲,以及各種各樣的粗口。

  迪尼什的額頭開始冒汗,作為開發者,他本以為自己已經掌握了這隻鳥的節奏,但在新參數下,他剛才那種從容不迫完全消失了。

  他死死地盯著屏幕,眼睛都不敢眨一下,拇指因為高頻的緊張點擊而變得有些僵硬。

  「撲棱當!」

  第十二分。小鳥一頭撞在了上水管的邊緣。

  「法克!」迪尼什用力捶了一下大腿,深吸了一口氣,毫不猶豫地再次按下了重新開始。

  甚至連一向對什麼都提不起興趣的吉爾福伊爾,此刻也坐直了身體。

  他那雙死魚眼緊緊盯著屏幕,嘴裡咬著咖啡吸管,點擊屏幕的頻率快得驚人。

  當他控制的小鳥在兩根落差極大的水管之間因為判斷失誤而墜地時,他發出一聲低沉的冷哼,沒有說話,只是默默地點了重來。

  看著這群矽谷精英被一款連2MB大小都不到的像素遊戲折磨得抓耳撓腮、卻又像著了魔一樣不斷重開的樣子,楊堅知道,這個核心數值算是調對了。

  整整三十分鐘。

  當楊堅宣布時間到的時候,會議室里響起了一片如釋重負的長嘆聲。

  幾個小伙子揉著發酸的手腕,看著手機屏幕的眼神里充滿了複雜的情緒。既有想要把手機砸向牆壁的衝動,又有一種意猶未盡的瘙癢感。

  「感覺如何?」楊堅笑著問道。

  「老闆,這東西————」

  迪尼什擦了擦額頭的汗,咽了口唾沫,「這東西簡直就是個惡魔。我剛才有幾次真的想把手機扔出窗外。但是————但是當那個結算界面的銅牌跳出來的時候,我腦子裡只有一個想法,就是下一把一定要拿到銀牌。」

  「很好,記住這種感覺。」

  楊堅收起了笑容,開始下達正式的任務指令。

  「迪尼什,你負責匯總大家剛才在試玩中反饋的情緒痛點。不需要降低難度,但要把那種差一點點就過去」的判定手感再打磨得絲滑一些。兩周後,我要看到Beta(測試)

  版本。」

  「明白。」迪尼什用力地點了點頭,他現在對這款遊戲的潛力沒有絲毫懷疑了。

  楊堅轉頭看向其他幾位程式設計師:「你們手頭關於《2048》的外語包翻譯和日常維護工作都已經收尾了吧?」

  「是的,老闆。日文版、韓文版和幾個歐洲小語種版本都已經穩定運行兩周了,目前沒有出現異常崩潰報錯。」

  「很好。從今天下午開始,除日常巡檢人員外,開發二組全部併入《FlappyBird》

  項目。你們的任務是拆解迪尼什的代碼包,在這個星期內,全面開啟多端移植。我要i0S

  端、安卓端、PC客戶端以及網頁端,四個端的數據互通和同步上線。」

  這對於已經有過《2048》多端分發經驗的團隊來說,並不是什麼難事。幾個人迅速記錄下任務節點。

  最後,楊堅將目光投向了吉爾福伊爾。

  「吉爾福伊爾,接下來的重頭戲在你這裡。」楊堅的語氣變得十分嚴肅,「我知道你把《2048》的伺服器打理得井井有條。但像素鳥不一樣。」

  楊堅站起身,走到吉爾福伊爾面前:「這款遊戲帶有極強的社交攀比屬性和病毒傳播潛力。一旦它在社交媒體上引爆,湧入伺服器的流量將不會是涓涓細流,而是帶著怒火和勝負欲的海嘯。無數玩家會以十幾秒一次的頻率死亡重開,我不希望在他們真正拿到高分、想要上傳排行榜炫耀的時候,看到的是伺服器連接超時」的報錯代碼。」

  吉爾福伊爾放下手裡的馬克杯,那雙毫無波瀾的眼睛裡閃過一絲被挑戰的興奮,但他隨即用一種帶著優越感的口吻開口了。

  「楊,如果只靠無腦堆疊AWS(亞馬遜雲)的彈性寬帶去硬抗高並發流量,那是迪尼什這種平庸程式設計師才會做的蠢事。」

  「嘿!我還在旁邊坐著呢!」迪尼什漲紅了臉抗議道。

  吉爾福伊爾根本沒理他,繼續用他那死魚眼看著楊堅:「除了搭建高可用的虛擬機集群,我們必須從根源上重寫請求排名更新的算法。如果玩家每次撞死,遊戲端都向伺服器發送一次交互請求,那我們等於在自己對自己發起DDoS攻擊。」

  「哦?那你的方案是什麼?」楊堅饒有興致地抱起雙臂。

  「減少無效上行請求。」吉爾福伊爾手指在桌面上敲擊了兩下,語氣專業得像是在布道,「我會在客戶端做一層攔截算法。遊戲只在首次啟動時拉取一次全球和好友的排行榜緩存到本地。在瘋狂重開的過程中,哪怕玩家死了一百次,只要他沒有打破自己的歷史最高分」,客戶端就絕對保持靜默,絕不占用一丁點網絡帶寬。」

  吉爾福伊爾停頓了一下,嘴角勾起一抹傲慢的弧度:「只有當他真正創造了新紀錄,程序才會向伺服器發送唯一的更新包。而在伺服器端,我會拋棄傳統的關係型資料庫,改用Redis內存資料庫來專門處理排行榜這種高頻讀寫的場景。只要你批給我足夠的預算去租用AWS的節點,我保證,就算推特的伺服器因為被黑客攻擊而宕機了,像素鳥的排行榜也會像墓碑一樣穩固。」

  「預算管夠。」楊堅給出了直接的承諾。

  會議在一片緊張而充滿幹勁的氣氛中結束。開發人員紛紛拿著電腦回到工位上,開始投入到新一輪的衝刺中。

  楊堅把阿曼達單獨叫進了里側的獨立辦公室。

  「老闆,需要咖啡嗎?」阿曼達順手關上百葉窗。

  「不用了,談點人事和運營的安排。」

  楊堅示意她坐下,「產品線現在已經算是兩條腿走路了。雖然研發團隊勉強夠用,但我們在市場運營這塊存在嚴重的短板。你去市場上物色一個有經驗的、懂網際網路病毒營銷和社區管理的遊戲運營專員」,薪資可以開得比行業平均水平高百分之十。」

  阿曼達在本子上快速記錄著:「新運營主管到位後,是直接接手《像素鳥》的預熱工作嗎?」

  「不,像素鳥還沒有達到交付水準。」楊堅搖了搖頭,提出了他的商業邏輯。

  「新人的主要任務,是去榨乾《2048》的剩餘商業價值。線上流量總會見頂,我們需要把線上熱度轉化為線下的實體影響力。讓這個運營牽頭,去策劃幾場針對高校大學生的《2048》線下爭霸賽,或者去聯繫一些快消品牌做跨界聯名。我要讓魔笛手的標識不僅存在於手機屏幕里,還要印在校園的文化衫上、咖啡廳的杯墊上。」

  楊堅看著窗外的建築群,眼神平靜。

  「軟體開發只是第一步。建立一個玩家願意沉澱下來的社區生態,才是魔笛手公司能夠活到下個十年的底牌。」

  >


章節目錄