從我在2K工作的那一年說起
地理位置
2K Games的總部坐落在舊金山北邊僻靜的小鎮諾瓦託(Novato),而諾瓦託隸屬的馬林縣(Marin County),正是《看門狗2》開場時,依靠著欄杆的主角馬可仕所在的縣。
這裡離矽谷車程兩個小時,而除非事先知曉,恐怕沒人會猜到這樣一個大農村的廢棄飛機庫裡,藏著這個行業巨頭之一,以及它的子公司Visual Concepts與Hangar 13(Hangar正是飛機庫的意思)。
在離公司不遠的一個供人散步的小土丘上,可以一覽公司全貌(圖裡只有白色飛機庫是公司,紅色的都是居民住宅):
(左邊那兩個白色的飛機庫裡,就是2K,Visual Concepts和Hangar 13)
可以看到再往遠處就是一片不大不小的溼地——是的,非常親近自然。事實上,從這個小土丘往另一邊拍照,是這樣的:
以及這樣的:
從公司的停車場往上爬一個坡,就是一條毗鄰剛才那片溼地的超長步道。頭圖便是那條步道上的一個座椅。
(這個坡從某種角度看,會有XP桌面的感覺)
這麼原生態的環境裡,你會感覺一切似乎都和遊戲、科技沒有關係,甚至連公司正門外的2K標牌也小得不起眼。接下來就進入公司內部吧。
內部環境
說是總部,其實並不大,兩層而已,第一層還有一大半是對外開放區域,分佈著沙發、自動售貨機、街機等。最顯眼的當屬這幾位:
(《生化奇兵》系列等身雕像,可能是除了前臺Logo以外、唯一能看出“這裡是2K”的地方)
辦公室走道之類的,我並沒有拍照留念,不過有一張我當時的工位(後來被改成升降桌了):
左邊那兩臺疊著的是Xbox One和PS4的開發機,右邊是一堆萬智牌
由於面積不大,公司是沒有食堂的。午飯可以選擇去對面——也就是走十步就能到的、Visual Concepts和Hangar 13所在的樓——購買一些限量供應的外賣,會有專人每天從餐館訂一批吃的,擺在一樓的休息區域裡以低價售賣。
我印象最深的一次去那邊吃飯,是在桌子上發現不知是誰擺在那兒不要了的老遊戲:
(中間的《三角洲特種部隊:大地勇士》是我兒時快樂又刺激的回憶)
可惜我能找到的室內照片不多了。總的來說,和外部的原生態比起來,公司內部的遊戲氛圍是比較濃厚的。休息區的街機和主機、桌上擺著的遊戲光碟、會議室裡擺著的《無主之地》系列銷量超過多少多少千萬的獎盃、樓道里佔了一整面牆的《The Darkness II》的海報(從這點來看,這個冷門遊戲的派頭可不比其他的IP小)、辦公區域隨處可見的開發機、正在進行實機測試的員工、大螢幕上的遊戲預告片和帶除錯引數的實機畫面等等。這一切應該只有在遊戲公司才見得到吧。
我的日常
我所在的組隸屬2K Games,而不是Visual Concepts或是Hangar 13。我們組負責編寫SDK,功能簡而言之是讓遊戲與2K的伺服器建立連線,傳遞諸如賬戶資料、玩家排行榜、玩家行為之類的資料。所以,我們的客戶才是真正的遊戲工作室——Firaxis Games,Hangar 13等,我本身並不會參與任何Gameplay的開發。
這是一件好事,也是一件壞事,取決於從哪個角度去看了。
往好的方面想,我不需要加班,遊戲臨近發售時的996不會殃及我們這樣的組。往壞的方面想,我並不能真正接觸遊戲開發——直到離職我都沒有開啟過虛幻4一次,整日都與Visual Studio和C++為伴。不過,我當時也並沒有那麼想真正著手開發遊戲,能呆在大遊戲公司的這樣一個比較輕鬆的組裡,我其實是挺滿足的了。而且,畢竟這裡是遊戲公司,對同時是一名遊戲玩家的我來說,即便是由部門總領導召開的那種、放在別的公司一定會很無趣的會議,在這裡也總能令我興奮。
我時常會在這樣的會議上了解到公司旗下各款遊戲的開發進度、時間線,被廢棄的專案、以及公司未來的動向。像是用新引擎重製的《四海兄弟1》、《生化奇兵》續作的存在、《文明》系列新新增的啟動器並登陸Switch等,在內部都不是祕密。不過,當時無關人員(即使是公司員工)並不能隨意進出《生化奇兵》的相關辦公區域,可能是為了最大程度防止洩露吧。我們的每款遊戲、大型DLC都會有各自的“代號”,所以外人即便聽到有人討論也會一頭霧水,甚至是Xbox、PS4都會以代號來指代。有趣的是,有些作品的代號會被SteamDB裡的相關條目暴露。
我清楚地記得當時規劃了一部《XCOM》衍生作品,說是會在某某時間段釋出,但我離職後一直沒再聽到關於那部作品的任何新聞,直到今年四月的《奇美拉小隊》。SteamDB裡顯示的代號告訴我,這的確就是那部作品,然而……計劃之中它原本的樣子,可能只有相關員工才知道了,因為《奇美拉小隊》主角團的人設,與我最早被告知的訊息大相徑庭。我只能說,它原本規劃中的模樣,或許能吸引到更多的玩家和粉絲。
至於午休時間,我的幾個同事熱衷於萬智牌。我也試著入了坑,買了幾套卡組,還玩了好久Steam上的《Magic Duels》。但後來深感這個坑實在很深,便在離職時把我的卡全都送給他們了。
剛才說過公司沒有食堂,所以午飯我也會選擇出去吃。問題是,諾瓦託是一個幾乎沒有華人的地方(所以呆了一年使得本就自閉的我更加自閉了),正宗的中餐館是完全不存在的,有也只是美式中餐。
幸運的是,我發現一家日本餐館,老闆是中國人,員工也大都是中國人。它們中午供應的便當盒非常不錯,炸雞柳、炸豬柳什麼的,配上味增湯和色拉,現在想起來還有些饞。我由於去的次數過多,後來只要往吧檯一坐,大家就都知道我要吃什麼了。在清閒的時候,老闆還會過來陪我聊會兒天。如果晚上不和同學聯機打遊戲的話,那便是我每天唯一能說中文的機會了。
(陽光下的Chicken Katsu)
(我的車在餐館停車場,Sushi Tri就是店名了)
幾種非日常
有幾天過得和往常很不一樣。
一是Hangar 13,也就是《四海兄弟3》的製作組,裁員的那天。不少媒體也報導過那次裁員。那一天,對面那棟Hangar 13所在的樓的入口處站著兩名墨鏡黑衣人,他們會非常仔細地看你進去的時候是否刷了工牌,為了防止任何閒散人員進入(通常是沒有人來檢查的,可以跟著別人溜進去)。這也體現了裁員是一件很嚴肅的事。
那天上午我在停車場停車的時候,已經能看到幾個員工拿著黃色信封,在那條溼地旁的步道上一邊踱步一邊打電話了。僅是這一個畫面,就已經能解讀出很多資訊。黃色信封裡應該是最後一次工資和未來幾個月救濟金的支票,打電話則應該是告知家人這個壞訊息——這樣的裁員一般是不會提前通知的,往往早上到達公司,只消上級一個簡短的5分鐘會議,自己的工作就毫無預兆地丟了,工牌歸還,賬號撤回,不能再登入使用自己的工作站,能做的只是拿著信封和個人物品,走出那棟樓。
據我的觀察,遊戲公司的人員流動是比較厲害的。因為銷量不好而被迫裁員,因為不滿意工資而跳槽,因為一個專案的結束而被開除,總之原因可以有很多。我在網上搜尋我那幾個前同事的現況,發現他們幾乎都換公司了,有的去了Twitch,有的去了EA,有的去了手遊公司。
二是去GDC(遊戲開發者大會)的那天。因為2K離舊金山市中心也就一個小時左右的車程,我們組當時得以輪流去逛GDC。
其實現在想來,我當時的心態還是不夠專業,在把GDC當做小型E3來逛,盡找大公司或是自己認識的作品的展臺,亂看一通,什麼技術都沒有學到(本文最後會展開講這個問題)。
(《失落之魂》試玩)
(育碧的一場講座)
(獨立遊戲節展臺,《掘地求升》、《茶杯頭》、《憎恨之西》等試玩)
(Valve展臺,走近能聽到《傳送門2》裡那首《Still Alive》,很難讓人不想跟著唱)
不過體驗還是很新鮮的,也有一些作為玩家身份的收穫。我仍然記得看《Baba is You》的作者Arvi Teikari在臺上介紹這款遊戲,當他操控Baba突然開始推動“規則”時,底下一片驚呼——那種集體一齊被驚豔的感覺,讓我當時就開啟Steam App把它加入了願望單。
《Noita》的主創之一Petri Purho則簡單展示了每個畫素都被模擬的奇觀,他還在Q&A環節被人問道“請你簡單講講你的引擎是怎麼做到每一幀都能模擬螢幕上每個畫素的”,他說“這個沒法簡單講”,提問人鍥而不捨,說“如果你非得用十個字概括呢”,結果他還是沒能回答。
GDC舉辦地離日本城比較近,所以那天我又去日本城逛了一圈。印象最深的就是那家書店裡齊刷刷一排遊戲設定集了。
夢想vs現實
“在遊戲公司工作”這件事,在一些人的腦海裡,會直接和“開發自己喜歡的遊戲”劃上等號。我的工作已經是一個反例了。
我承認我最初接到Offer的時候,真的在異想天開我能加入哪部遊戲的開發:“可別是我不喜歡的《文明》”、“《XCom》倒不是不可以”,云云——在遊戲公司即使是做軟體開發,也完全可能幹著和遊戲基本無關的活兒。寫一下這個執行緒管理器,分別查一下PS4、Xbox和Switch上的執行緒親和性要怎麼設定……嗯,得閱讀官方文件了,因為這種問題即便是萬能的Stack Overflow都不會有答案。我來看看索尼的官方文件……啊,和任天堂的比起來好像精簡了很多,看來是要開發者自己去悟嗎……咦,怎麼回事,這個錯誤資訊?Google一下呢……零條結果。
我甚至在我們的某一行非常晦澀的程式碼旁邊看到過這麼一條註釋:Really, Sony? 一定是先前寫這行程式碼的程式設計師對API奇特的使用規則留下的抱怨。當然這裡不是為了拿索尼開涮,只是為了體現這樣一份工作在某種程度上的特殊性和枯燥性。你看,我所做的,雖然對遊戲製作組來說必不可少,但其實和玩家最終看到的內容毫無關係。我不能決定這個敵人的攻擊慾望,不能決定那件物品的被動效果,不能決定過場動畫的時間長度……我甚至看不到除開SDK之外的程式碼。就像我知道我正在造一臺酷炫的、巨大的高達,但由於我的視野被侷限在一塊很小的機體、我的工作被侷限在擰一個很小的螺絲,無論這臺高達的全貌多麼壯觀,我都很難真正和它建立情感上的紐帶。
而即便我真的在某個遊戲製作組裡,剛才說的那些,也都不是我能決定的事。這個道理應該也很顯然了——程式設計師只是負責實現分到他/她身上的那一點點需求而已,越是人多的公司,細分到每個人頭上的那一片就越小。至於真正玩法的箇中變數,有策劃呢,有產品經理呢,有製作人呢。
這應該也是“製作人”這樣的頭銜被很多人嚮往的原因吧,能主導整個遊戲的基調、觀感、玩法、劇情,那樣才能體驗到造物主般的快樂吧。不然,即便作為玩家我十分討厭氪金,如果上邊要求我一個程式設計師來實現這個氪金的功能,我也只能答應不是嗎?那樣才不是什麼“開發自己喜歡的遊戲”。
不過我沒有在抱怨什麼,我之前也提了,對當時的我來說,在那個組裡並沒有什麼失落感,相反其實挺開心的。作為軟體工程師,能學到領域內的新知識,還能因為在遊戲公司耳濡目染而對業界有所瞭解,是為一舉兩得。
陳述完我身上的事實,我想談談那些有夢想的人的未來。如果想要開發自己喜歡的遊戲,我認為最腳踏實地的起點其實很明確——從現在開始,利用業餘時間著手行動起來,引擎和工具學起來,技術分享看起來,遊戲設計也要試著從正在遊玩的遊戲裡開始領悟、汲取。說白了,就是成為業餘獨立遊戲製作人。
沒有什麼好怕的,這真的比進入大公司去“開發自己喜歡的遊戲”那條路快多了。我知道諸如版號之類的阻力仍然不容小覷,但請恕我不想在這篇文章裡引入那些話題,這裡只是廣義上的建議。真的要較真的話,製作遊戲所需要的各種技能點早就宣告了沒有一條路是簡單的。
而在自己的開發取得階段性成果以後,可以再考慮要不要繼續追尋那些大公司。如果要的話,簡歷上或許已經能放上自己的作品了;而更關鍵的,到那時候你很可能已經找到了適合自己的平衡點,覺得獨立遊戲就很好,甚至想組建自己的工作室,不再向往大公司了,誰知道呢?
無人問津的資源
最後,我還想聊聊類似GDC這樣的資源。
上文我提到過我曾經把它當作E3來逛,那當然是錯誤的開啟方式。2K為員工報銷去GDC而不是報銷去E3,本身就能看出這兩者本質上的區別了——前者是面向開發者的,後者則更多地面向媒體和玩家。我也是後來才領悟到,認真對待的話,GDC上的資源其實是非常珍貴的,在電波對上了的時候,哪怕是一個講座裡的一句話,都可能為開發者帶來巨大的啟發或是靈感。
例如Valve早在八年前的GDC 2012上的一個講座AI-driven Dynamic Dialog through Fuzzy Pattern Matching,至今仍然不過時,甚至還啟發了《看火人》中Henry和Delilah的對話方式、啟發了《最後的生還者》中所有AI的對話方式,後兩者分別都有自己的GDC講座來介紹它們的對話系統,全都直接鳴謝了Valve當年的那個講座,可見它的影響力——V社之所以是V社,還是有道理的啊,不僅僅有玩家接觸到的精彩絕倫的遊戲本身,更有能啟發開發者的業界超前的設計理念。
我相信,無論想做什麼型別的遊戲,都能在GDC Vault中找到相應的技術分享。GDC Vault分收費和免費兩部分,而免費區域裡的講座量也已經很大了。講座,通常是其他(很可能是已經做出過傑出遊戲的)製作人把經過萃取後的知識有條理地、無私地展現出來(不需要掃碼,沒有,沒有二維碼可以掃,沒有公眾號需要關注),這對整個遊戲產業能起到非常健康的推進作用。而對獨立遊戲製作人來說,更是無價之寶。不然,我還真的不知道去哪兒能獲取同等質量的資源——知乎上的內容雜亂參差不齊(“X個贊以後再補充”,“剩餘的更新在公眾號”,呵呵),奶牛關定位不明確、和知乎有很大重疊並且活躍使用者很少,書籍則通常只是泛泛而談,英文原著往往還相當昂貴,為此專門攻讀相關專業也有很高的時間和金錢成本,INDIENOVA倒是不錯,但我仍然覺得裡面各種日誌的被關注度不夠。
我一度疑惑獨立遊戲開發者都是在什麼平臺上交流的,難道真的是小範圍建一個微信群就完事兒了嗎?可是那樣的話知識的流通就完全被限制住了啊。比方說,我特別想把Valve的那期講座分享給所有想為自己的遊戲里加入更高階的對話系統的開發者,但是我根本不知道該去哪裡做這樣的分享。每次有新出的文字冒險遊戲,或是擁有對話系統的遊戲,當我看到裡面的對話還是那死板的你一句我一句、每句話都是被預設好的時候,我都在心裡,一邊困惑怎麼八年前《求生之路2》就已經做到了的動態對話到今天還是這麼罕見,一邊猜測是否是因為太多不思進取的遊戲和引擎被市場縱容,而導致革新遲遲不來。我不相信玩家發現遊戲裡商人見面打招呼的方式會隨著自己身上的裝備而變化時會不感到新鮮,我不相信玩家發現盯著選項發呆能觸發隱藏對話時會不感到驚喜,我不相信玩家發現如果正好在下雨則會出現額外選項時會不感到意外,但是這樣細節上的創新,我真的幾乎不曾見到過。
我見到的,最近幾年,起碼兩萬個獨立遊戲吧,一萬個是《殺戮尖塔》的複製品,一萬個是《死亡細胞》的複製品——想到這裡,我大概知道原因了。很多人是作為玩家看到什麼火了就想去做什麼,因為火了至少代表好玩,但作為開發者,他們被一葉障目,注意不到這麼多年業界積攢下來的技術和設計理念,忽略了那些最成功的例子背後的細節。他們光顧著複製表面上的玩法,殊不知角角落落裡有那麼多值得借鑑的、能為玩家帶來更好體驗的技術。
正好提到《死亡細胞》,我必須介紹Youtube上“How Dead Cells Secretly Stops You From Dying”這個視訊(我在百度之後沒有發現國內有搬運,而這從側面驗證了我的想法——這樣的技術分享根本沒有得到足夠的重視)。它非常生動地介紹了在《死亡細胞》中,為什麼你總是能感覺你的動作很順滑——總是能成功地跳上一個平臺,即使嚴格來算,你本該夠不著,總是能成功地打到自己想打的敵人,即使嚴格來算,你的操作本該使你揮向另一邊的空氣。這是因為遊戲一直有在檢測這些微小的操作失誤,並幫你糾正,畢竟這是一款以砍殺為主、而不是平臺跳躍解謎為主的遊戲,遊戲不應該在跳躍上給你製造太多的懲罰。
受《死亡細胞》啟發而製成的遊戲,我也玩過幾款,可惜的是完全沒能複製成功這樣的手感。我在想,但凡我們能有一個活躍度夠高的平臺做技術分享,但凡有一個人,把這個視訊廣播給了各位獨立遊戲製作人,那起碼這類作品的Steam評測區內,能少一大半“手感怎麼這麼垃圾”的差評。學當然可以學,但請務必不要只學表面啊!已經有這麼好的資源詳細解釋了它的手感為什麼這麼棒,請把這關鍵的技術也學過去啊!我十分確定,這個視訊裡介紹的思路,只要願意花時間打磨,是完全可以被應用進獨立遊戲的,和許多昂貴的高精尖技術比起來,這樣易於投入使用的設計理念簡直是瑰寶。可惜,就是不存在一個全知全能的課代表,及時地把這樣的資源輸送給廣大獨立遊戲製作人。
再舉最後一個例子吧,《殺戮尖塔》。如果是我來仿製,起碼有一個功能我會加。我會試著讓敵人在和我交戰前,根據我身上的遺物種類和牌組性質,來說一些應景的話:
“上一個使毒的,沒在我這兒撐過三下。”(如果玩家此時走的是毒藥流,並且上一把毒藥流死在了這個怪的手裡)
“你的那隻眼睛,該不會是從我這兒偷的吧?”(如果玩家持有混亂之眼遺物,並且此時的敵人是本就可以造成混亂的異蛇)
“來和我心理戰吧。”(如果玩家持有符文圓頂,效果是無法再看見敵人的意圖)
“還留著那個詛咒吶?”(如果玩家連續三次路過商店,都沒有去除牌庫裡的某張詛咒牌)
這樣的動態對話真的不難做,多花一點心思打磨,就能讓細心的玩家時常被驚喜到。《殺戮尖塔》本是個和對話系統沒有什麼關係的遊戲,但是如此結合,既不會影響遊戲節奏,又能讓遊戲裡的世界更加活靈活現,這說明這些技術是完全可以被靈活運用的。如果那個Valve的動態對話講座已經被廣泛流傳了許多年,或許已經有許多獨立遊戲製作人都受到了啟發。而在那個平行宇宙裡,我們早就玩上各種樣把對話玩出花兒來的遊戲了。
我相信這不是態度問題,我相信如果這些資源得到足夠的曝光,是可以確確實實提高大家制作的遊戲的質量的,沒準還能讓一些人靈光乍現,搞出極好的創意來。
最後放一張在2K工作時,家門口望出去的照片吧。愛車與遊戲,是我在漂泊的日子裡唯一的陪伴了。
作者:默顏
地址:https://mp.weixin.qq.com/s/271utlpo9XPd9c0vi1GEqQ
相關文章
- 從Promise的Then說起Promise
- 從 JSON 說起JSON
- 從 CALayer 的 Position、AnchorPoint 說起
- iOS逆向——從RSA說起iOS
- 從程式猿入行說起
- 從 gRPC 的重試策略說起RPC
- 從Kotlin的類開始說起Kotlin
- 從兩道面試題說起面試題
- 從CSS盒子模型說起CSS模型
- 動畫篇-從UIView動畫說起動畫UIView
- 從 Google 的一道面試題說起·Go面試題
- 從JavaScript中的類陣列物件說起JavaScript陣列物件
- 從淘汰Oracle資料庫的事情說起Oracle資料庫
- JS的隱式轉換 從 [] ==false 說起JSFalse
- 璧說:從資料庫連線池說起資料庫
- 叢集通訊:從心跳說起
- 從用SwiftUI搭建專案說起SwiftUI
- 架構之路(8):從CurrentUser說起架構
- 架構之路(八)從CurrentUser說起架構
- 曹工說Tomcat1:從XML解析說起TomcatXML
- 從 Number.isNaN 與 isNaN 的區別說起NaN
- 領域模型的具體形式–從需求說起模型
- 後蘋果時代轉型,從裁員說起蘋果
- 夯實Java:從物件導向說起Java物件
- 決策樹詳解,從熵說起熵
- 我在GitHub的工作是怎樣的Github
- 從簡單的快速排序說起-Partition-ThreePartition-TopK排序TopK
- 從Android手機的搶紅包外掛說起Android
- 從事件系統說起,更好的組織程式碼事件
- 畢業,剛工作的那一年(2018-01-01)
- 當我們說外掛系統的時候,我們在說什麼
- 從放棄到入門-Yaf(從控制器說起)
- 從函數語言程式設計說起函數程式設計
- 視訊稽核:從優衣庫試衣間說起
- 從一道筆試題題說起筆試
- 從FMDB執行緒安全問題說起執行緒
- FinOps實踐,從降本增效說起
- Flutter異常監控 - 壹 | 從Zone說起Flutter