非科班,野路子,他如何“彎道漂移”進天美

遊資網發表於2021-10-28
沒有科班經驗,走過許多人生彎路,直到二十多歲的年紀決定重新開始,自學遊戲開發技術,通過社招進入天美 —— 這是我們身邊同事阿升的故事。

來到天美前,阿升因為喜歡《QQ飛車》,用了一年多時間,嘗試獨立開發一個移動版本,遇到種種困難,用了“最土的方法”去克服。

後來在人生的低谷期,他寫了一篇回顧性的部落格,卻因此被專案組發掘,得到了一次應聘機會。

有人說他是自己見過“路子最野”的程式設計師,面對彎路,他的態度或許像企微簽名“瘋狂漂移中...”一樣,最終也殊途同歸。

非科班,野路子,他如何“彎道漂移”進天美
阿升的企業微信簽名

如今,阿升加入了天美 J1 工作室,為熱衷的《QQ飛車手遊》等專案提供技術支援,已有 5 年的司齡,也多次獲得了優秀員工獎項。

經本人同意,我們轉載了他撰寫的博文,故事中有他犯過的錯誤,遇到的貴人,與努力的改正,希望對大家有所幫助。

【原文較長,內容為可讀性略有調整】

非科班,野路子,他如何“彎道漂移”進天美
阿升近照

我在安徽出生,但在貴陽長大,因為個人原因,沒有讀過很多書,倒不是家裡條件完全不允許,父母被氣個半死拿我沒轍。

現在想起來,還是挺後悔的,多讀書能少走很多彎路,只是那會兒不懂這個道理。

無所事事了一段時間,跟家裡關係也鬧得很僵,後來大吵了一架,索性一個人跑去青島找網友(男的,幸好不是壞人,好孩子也千萬不要學)。

身上只有幾百塊,憋著一口氣不想回去啃老,也不想被親戚看不起,就做各種零工賺錢。

最難的時候幾天吃不起飯,一桶水都喝光了,起床的力氣都沒有。床頭櫃上還有一星期前吃剩的餛飩湯,裡面還有幾片餛飩皮,聞了一下都有味道了。

一咬牙,一口悶,這酸爽,夠味!撐到朋友接濟才挺了過來。

初涉程式設計,膨脹遇挫

我平時喜歡玩遊戲,特別崇拜做遊戲的人,感覺他們很牛,能把那麼多好看的畫面放到螢幕上,你還能控制它們。

當時我認識一個遊戲金團的人,在他的介紹下給他們打工刷裝備,第一次知道了這些灰色產業。團裡有人在用外掛,是一種輔助工具,我什麼都不懂,但背後的原理讓我感到很好奇,覺得跟做遊戲很像,電腦技術都很厲害!

我動了學程式設計的念頭,以前好像怎麼都讀不進書,但可能興趣是最好的老師,忽然就開竅了。

我泡在各種貼吧論壇,在網上一個詞一個詞地查,學了點散裝的程式設計知識,試著自己上手改良和開發,只會用最笨最初級的辦法,較勁一定要弄出來,折騰久了居然稍微懂了。

金團效率高了,給我多發了點錢。中間我回了趟家,給我媽買了一隻口紅,給我爸買了一條中華,他們都很高興,不是因為買了東西,而是因為兒子回來了。

我覺得自己能掙錢了,變膨脹了,花錢大手大腳,還交友不慎。

灰產終究是灰產,每個人都很急功近利,因為誰也不知道下一秒就會發生什麼。一連串的變故很快發生,金團倒了,錢也沒了,跟曾經信任的“朋友”打了一架,徹底撕破臉。

現在回過頭看,其實也是好事,讓我從歧途中走了出來,而不是繼續錯下去。

但在那一年,似乎我擁有的一切都消失了 ...... 我又陷入了一事無成的迷茫。

舞房的朋友接納了我,讓我住在舞房,跟他們吃住一起,有小課叫我代代課,一節課下來給我一百來塊錢。

那陣子渾渾噩噩的,沒課的時候就把頭悶被窩裡睡一天,電腦也不會去開啟,晚上沒事就跟朋友去酒吧喝酒。

一個月下來,我在蘇州的朋友過來玩,看見我說感覺我變了一個人,都不敢認我,外觀也變化太大。很邋遢,面色蠟黃,鬍子拉碴的,頭髮沒有洗,亂七八糟的。

過年回了趟家,不知道為什麼,過完年我又回來了,繼續住在舞房,繼續墮落。潛意識是在躲避著什麼,一直走不出來。

重新出發,野路學習

這時,朋友介紹我去大學教大學生跳舞,認識了一群不錯的小夥子,練舞肯吃苦,想法也沒有社會上的人那麼複雜。

我開始喜歡和他們混在一起,其實我年齡跟他們一樣大,有些人比我還大。喜歡跟他們在一起我想不是因為年齡的原因,是因為他們陽光,熱情。

我長得顯老,他們以為我比他們大,都叫我升哥。跟他們在一起半年,我走出來了,看開了,之前的事都過去了,在新的一年,我會重新來過。

我終於又重新開啟電腦了。

我把以前的一切都刪了。嫌麻煩,乾脆直接重新裝個系統,全盤格式化。我想做遊戲,我的初心是做遊戲啊!為什麼我現在才醒悟過來,真是當局者迷。

我以前有個很要好的朋友,後來當.NET 程式設計師了。

聽他說投 BAT 簡歷直接被扔了!原因是要麼學歷不夠,要麼不需要.NET 程式設計師。

這小子不知道哪兒來的自信,其實我猜測他被拒的原因是這最致命的三點:看臉!看臉!看臉!

我下定決定要學習做遊戲了,找到他的 QQ。

我:我想做遊戲,我應該從哪方面入手?

他:C#、Unity。

我那.NET 程式設計師朋友在下文中我就用 RRQ 表示他的名字。

上面提到我猜測他面試失敗的原因,他表示十分不服氣。(那好,我們們就不提臉的事!我們們聊聊體重!哈哈哈~)

我們的相處風格就是這樣,見面就是互損,即使很長時間不聯絡也不陌生。

看到被黑了,他頂多會立馬 QQ 上"威脅"我,讓我給他發紅包,不然這事跟我沒完。

RRQ 就是這樣人,人特別好,很有大神風範!每當我們誰寫出幾句酷炫程式碼或者酷炫功能的時候,我們就會找到對方,問對方這個牛不牛,能打多少分。

我學習 C# 他沒少幫助我!他是我的好基友,也是引導我走向正路的師傅。就像我快餓死的時候接濟我的人一樣,我把他也當成我的貴人。

當務之急就是學習遊戲程式設計。我下載了最新版本的 VS 和 Unity,還不急著直接學 Unity,從頭在老老實實學一遍 C#(說是老老實實學一遍,其實我也只是大概看了下 - -)。

看著滿螢幕的英文就頭大!天啊,我英文那麼差,這讓我如何是好?

英文差沒法寫程式碼嗎?肯定不是啊,後來我才發現,只要會了基本語法,其他都小意思。

取個變數名或方法名的時候,寫拼音也太挫了,不夠逼格!去網上翻譯一下,再 copy 過來用。每次取名字就得在網頁裡面翻譯,好麻煩,我乾脆呼叫網頁翻譯 API 寫了一個小翻譯器。

看別人程式碼的時候,幾乎都是駱駝命名法,直接複製過來翻譯器無法識別進行翻譯,所以我還加了一個小功能,自動分割大寫字母,這樣的話,只要英文沒有縮寫,幾乎都是可以成功翻譯的,大大提高了翻譯效率。

我也是沒辦法,做了這麼個翻譯器,笨人得給自己想出補自己缺陷的方法來,不然真的就會一直笨下去了。

網上說直接學 Unity,可以一邊做一邊學,我也感覺自己 C# 應該算是入門了,那就直接上 Unity 吧。

在自學網站找到了一個教 Unity 的視訊,但是上了幾節課以後發現老師的程式碼跟上節課的程式碼不一樣,這尼瑪太坑了。繼續往下看,發現老師他自己似乎都不怎麼會 Unity,程式碼寫錯了都不知道哪兒錯了,然後直接跳到下一節課!!

乾脆不看視訊了,按照自己的想法來,想做什麼遊戲,需要哪些功能,怎麼實現,全部都去網上查,需要什麼查什麼。

當時有個小遊戲很火:《鋼琴塊兒》。看起來好像挺簡單的,那就試著自己做一個吧!

我的一個鋼琴塊就是一個 cube,排了幾百個 cube,看著好惡心,有時候想改變其中一個 cube 的座標,其它塊也得重新改一遍。我得用程式碼去自動生成這寫鋼琴塊才行!研究了一個星期,我把 cube 做成預製件,for 迴圈隨機生成了指定的黑塊和白塊,完美!就是這效果!

按捺不住興奮,恨不得馬上給 RRQ 玩到我的第一個簡陋的遊戲。但是我又犯難了,不會發布成 apk。繼續百度,發現好麻煩,要裝 sdk,下載下來以後,Unity 又提示版本不對啥的,換了一個,打包中途又報錯。

繼續換版本,來來回回折騰了一個通宵,終於打出了屬於我自己的第一個 apk 包,別提多激動了!插上資料線連上手機安裝了 apk,看著在手機螢幕上出現 Unity logo 的時候,我激動得發抖,我也可以做遊戲了!

探索飛車,困難重重

做出來了第一個簡陋的遊戲,我並沒有想著去完善它。

我特別喜歡玩《QQ飛車》,從 08 年就開始就一直在玩。當時 iPhone 上有個韓文的單機版跑跑卡丁車,特別有 PC 端的感覺。但是我又那麼喜歡玩《QQ飛車》,看著《QQ飛車》說自己同時線上幾百萬人,也出來那麼多年了,就是沒有出手機版。

官方不做,我自己做!我想自己做一個《手機版QQ飛車》,讓和我一樣期待飛車手機版的小夥伴們都能玩到這款遊戲。

我把想法告訴了 RRQ,他很支援我,跟我說在做的過程中遇到問題解決問題,等你做出來了,你會發現你會很多東西了。

他不會 Unity,我想他 C# 那麼厲害,C# 這樣學肯定沒問題,Unity 這樣學應該也行,那就開幹。

想做《QQ飛車》,那得有《QQ飛車》的人物模型、賽車模型、地圖模型、貼圖、動畫,如果要做介面,還需要得到 UI 資源。當然,如果能得到程式碼更好,就算看不懂,註釋還可以參考一下嘛。

《QQ飛車》早在 08 年~10 年這兩年的所有版本安裝包,有個漏洞。

使用遊戲升級補丁,新建 res、data 兩個空資料夾,在把 res.vfs、data.vfs 和幾個配置檔案複製到空資料夾同目錄下。改一下配置檔案中的版本號,選擇這兩個資料夾所在的父目錄進行補丁安裝,vfs 資料包就會完完整整地釋放到新建的兩個空資料夾中。

當時釋放出來後可以直接看到 lua 程式碼,現在 lua 釋放出來都轉換成機器碼了,只有小部分能反編譯回來,沒多大用處。

我雖然釋放出所有資源了,但是我無法使用資源,僅僅能看到 lua 的程式碼註釋 ......

還是那句老話,既然遊戲自己都能用,那說明還是有方法讓我自己也能使用的,只是我不知道而已。

我又花費了三個月時間研究如何讓我自己能使用這些模型。nif 是模型檔案,那我用 3DMAX 應該就可以開啟吧,那玩意不是專門做模型的嘛。

下載安裝完成又發現無法識別 nif 檔案!懵了。

網上搜了一下,原來有現成的工具開啟這種格式,支援預覽和匯出 obj。

匯出 obj 我拿來幹啥,我還需要動作啊!這下不好找了,網上都翻爛了就是沒有,然後去谷歌搜。找了好久看到曙光了,有個 nif  3DMax2012 外掛,有點小激動,安裝完成後再次匯入 nif,成功了居然。

但是模型還是沒有動作呀!!動作去哪兒了!!我看到 nif 同級目錄下有很多 kf 檔案,看命名挺像動畫檔案的。

小手一抖,把 kf 檔案拖到 3DMax 介面裡,哎喲喂,人物會動了。匯出成 fbx,拖到 Unity 裡面等著看效果。尼瑪,怎麼不會動呢?在 3DMax 裡面還好好的。我以為是我匯出有問題,又重新導了一遍,還是老樣子。

那是不是 Unity 要設定什麼呢?查了一下,還真是。

按照教程操作了一遍,歐耶,我的人物在 Unity 裡面動起來了。動是動起來了,但是這人物怎麼感覺像是抽風了一樣,一點不自然,在 3DMax 裡面也不自然。

加了一個 3DMax 的群詢問大神們,得到的回覆是有可能編輯器不一樣,導致動畫丟幀。

看樣子只能自己調了!我又去找教程學習如果調 3DMax 動畫 ......

三個月時間就研究這些東西了。

我一直覺得笨鳥就要多飛,不要怕失敗,我會想“先試一百次再說,不行就算了”。往往你會發現其實不需要那麼久,就已經能摸索出一些經驗。

拿了兩張地圖《老街管道》《休閒區城鎮》、一輛賽車雷諾、一個男孩帶動畫的模型。

我先做的休閒區,第一步目標是人物可以在休閒區裡面移動就行了。

網上看別人程式碼怎麼寫的,參考後用 CharacterController 完成了控制人物移動。

目前是鍵盤控制人物移動,手機哪有鍵盤啊!官方《QQ飛車》可以用滑鼠點選地面移動人物,那我也可以點選地面移動人物啊。

又研究到了尋路,發現 Unity 自帶了尋路:Navigation。

查了資料發現使用起來非常簡單,很快,我就做出來我點選地面,人物就自動移動到我點選的位置。

現在又得加一個點選座位,人物會自動跑過去坐著。這和點選尋路其實有些衝突,在手機上操作很不方便,螢幕太小,本來你是要走過去就行了,不小心碰到椅子就坐上去了。於是我把點選地面尋路改成了搖桿控制移動,又學習到了一款外掛:EasyTouch。

哦了,休閒區就算大功告成了!這第一步我沒日沒夜的做了一個月才做滿意,不感覺累。

非科班,野路子,他如何“彎道漂移”進天美
2014年11月,在改成搖桿控制移動時,也嘗試了一下用 NavMeshAgent 尋路畫線的效果 圖源:阿升

第一步做完了,可是一點遊戲的樣子沒有,我得做遊戲介面,這樣子看起來有逼格些。

介面素材的檔案字尾名是.gsa,這種格式我關注了一年多,但一直沒有解開。

得不到介面素材,我就去遊戲裡面截圖,然後自己 PS。

遊戲中控制元件和控制元件的層級關係很複雜,我壓根就沒法正常截圖!我試著做了一個叫 SuperGUI 的工具,可以通過記憶體隨意操作遊戲中的 UI 大小、位置、顯示或隱藏。

我稍微修改了一下 SuperGUI 的程式碼,把我想截圖的 UI 移動到白色底板的區域,然後再截圖,完美!

自己其實不會 PS,修圖什麼的又得學 ......

介面素材已搞定,現在就差怎麼用到 Unity 裡,於是我又學會了使用一款 Unity 外掛:NGUI。

我這人有強迫症,一定要儘量把UI都佈局得很好看很合理。花費一個星期左右的時間完成了登入介面、主介面、休閒區介面。

那時候還不知道 xml 和 json 這種東西,我想做揹包,物品描述資訊這些東西我要存起來才行,如果都寫在程式碼裡面那太蛋疼了。

於是我又學會了使用一款小巧的資料庫:SQLite。我把物品資訊資料全部存到了資料庫裡,感覺清爽多了。

做揹包需要物品 icon,咋辦!我想到了用 SuperGUI 去截圖,但是有很多絕版賽車商城裡面沒有,我也就沒法截圖。

我發現《QQ飛車》每個星期都會更新任務,每次更新的時候本地遊戲資料夾中有幾個在資源包外的未加密 lua 檔案會變化,於是我就開啟這些 lua 研究。

原來他把任務描述資訊寫到了 lua 裡面,還有任務圖示的本地資源路徑呢。

那我如果改了這個任務圖示的資源路徑,是不是任務圖示就會變成我指定路徑的圖示?試了一下,果然行得通!但是每改一下必須重新登入遊戲才能生效。

我寫了一個自動修改任務描述 lua 裡的資源路徑工具,並且修改完成後自動登入遊戲,自動擷取資源圖示儲存到指定資料夾中。

就這樣不停的登入退出,我筆記本掛機掛了三天三夜,沒停過。我得到了三萬多個物品圖示。現在想想我真是個瘋子,這麼 low 的方法都能想得出來!不過應了我微信的個性簽名:“有時最土的方法是最有效的”。

如果我當時我不那樣去做,我就沒法得到我想要的圖示。整整三萬個圖示,我需要逐個在 PS 中裁剪、休整。太麻煩了,還好 PS 有個記錄操作的功能,全自動完成了休整三萬個圖示這艱鉅的任務。

圖示有了,準備做揹包,可是又犯難了!

我切換的裝備下次我進入遊戲應該還在才對,我伺服器都沒有,怎麼記錄?對!我要寫個伺服器才行。

自己不懂真正伺服器,只能找人求救。

C# 伺服器 RRQ 教我弄了 SQLServer、教我三層架構 ......

有一次他遠端我電腦操作給我看,他操作了差不多一個小時,我經常熬夜做這個遊戲,太累,中途我不小心睡著了。

QQ 連續響了好幾聲給我吵醒了,原來是他在一直髮訊息:“你丫是不是睡著了”、“看懂了嗎?”、“說話啊!”

這個我記得最清楚。他氣死了,我說我沒看到,他說沒看到活該!哈哈哈,我這不是太困了嗎!當時他挺生氣,後來還是又教我一遍怎麼弄的。搞了一段時間,飛車可以登入遊戲、註冊遊戲資訊、同步個人資訊、記錄揹包資訊之類的。

不知道是誰跟我說的,你這遊戲又不能玩,那能叫遊戲嗎?我想想說得也對。所以伺服器暫停了開發。

我開始做核心玩法,做競速賽。

核心玩法談何容易,網上雖然說有很多賽車的例子,但是沒有一個是能很容易操作的。

我學習 WheelCollider,自己寫賽車移動!網上的程式碼一大堆,做出來的效果卻差得要命。研究了一個月,我只做出了基本的前後左右移動,賽車漂移太難做了,始終做不出來。做不出來不強求,那就緩緩,過段時間再做。

非科班,野路子,他如何“彎道漂移”進天美
2014年7月,第一次做出了看似“漂移”的效果,但其實無法操作,只能暫緩開發  圖源:阿升

《QQ飛車》裡面賽車撞牆後可以按 R 鍵復位到賽道中間,我分析了他的思路。自己花一個星期時間寫了一個 CarWayPoints 外掛。

做完外掛正休息呢,開啟飛車的配置檔案看看,每個地圖都有一個 Map.txt,裡面存的資料我一直不知道是幹嘛的。我用自己寫的 CarWayPoints 外掛原理去嘗試理解這些數字到底是代表什麼意思。

沒想到真的還被我分析出來了!我寫了一個工具,自動轉換這些數字,為我 CarWayPoints 外掛使用的 data 檔案,完美運用!

看看時間,時間過得好快,馬上快過年了!今年一年我沒賺到錢,僅僅是夠生活而已。

雖然學 Unity 才半年時間,但我鼓起勇氣在網上投簡歷去找工作。

確定上班時間是年後,正好拿這個當藉口,我打電話回家告訴父母我找到工作了,先讓他們高興高興。然後我接著又說,我過年不回家了,因為年後就要上班,我怕我來不及。

當時我心裡很難受,他們知道這個訊息後也不舒服,可誰讓我這麼沒本事呢,這一年僅憑教跳舞賺的錢太少了,讓我省吃儉用過日子,哪還有臉回家。

雖然我知道父母不要求我什麼,能回去他們就滿足了,可是我就是這麼好強的一個人,對誰都這樣。

過年我啥也沒買,就買了幾包煙過年。街上一個人都沒有了,賣煎餅的小販也回家過年了。年前也沒有去買菜,我知道過年那幾天菜很貴,我也知道到上海後租房吃飯是大問題,所以只買了瓶拌飯醬回來。

沒菜,煮點白米飯,吃著拌飯醬,寫完了 CarWaypoints 外掛的說明文件,釋出到部落格上,當時過年還是有挺多人看部落格的,但寫部落格的人很少。

我的那篇文章成了一個星期內閱讀量最多的文章。年就這樣過去了。

非科班,野路子,他如何“彎道漂移”進天美
2015年2月,CarWayPoints的部分截圖 圖源:阿升

前往上海,踏入職場

過完年 ,我拖著行李來到了一線大城市——上海。

記得第一次來上海面試的時候,不會坐地鐵,不知道怎麼買票,站旁邊看了好幾個人買票自己才上去試一下,坐地鐵還坐過站了。

出站的時候我看見別人都是在上面刷一下就出去了,我也跟著在後面刷,可是我怎麼刷,我都走不出去。排在我後面的人看見了跟我說要把卡片插進去才可以!後來才知道人家那用的是公交卡,跟我手裡的卡不一樣。

小時候,電視上說什麼上海灘、大上海,還有夜上海那首歌,給我的印象是上海很大,都是有錢人的地方。

十幾歲的時候,追過一個女孩,那女孩的爸爸好像在上海工作當老闆,她放暑假寒假也會去上海上補習班,經常去星巴克。

沒有追到她,但是我心裡一直都是有陰影的,感覺自己配不上人家。她家裡那麼有錢,人又漂亮,在上海呆過見過大世面,星巴克我從來沒有進去過,我當時都不知道里面到底是賣什麼東西的,只知道里面一杯飲料就好幾十塊錢。

上海從小到大給我的感覺就是可望不可即!可是今天,我也來上海了,來實現我的遊戲夢!

當時來面試的時候公司在一個大廠房裡面,新公司在裝修,臨時在大廠房工作。

去上班的那天,新公司裝修好了!哇,好大,裝修好漂亮!

前臺領我坐到了我的位置上,我正式入職了!

剛進公司什麼 SVN、RTX、禪道啥都不知道,還好有個胖胖的程式設計師幫我,他人很好,剛進公司就跟他最熟了。

下班時間到了,大家都逐漸離開了公司。胖胖的程式設計師問:“你還不走想加班啊?!”

我心想我哪有地方去啊,身上就只有幾百塊錢。我說這不是等你一起走嗎?

離開公司後,我搜尋了附近的青年旅社,看了幾家,要麼是太遠,要麼是人滿了。後來在上海南站附近找了一家青年旅社,一晚上好像是 30 塊錢。

在青年旅社住了幾天,我發現這樣下去還撐不到發工資我就沒錢吃飯了。

晚上下班等大家都走了,我悄悄問胖胖的程式設計師能不能睡在公司,他說如果你願意大冷天的睡公司沒問題啊。

他以為我是開玩笑的,沒想到我真睡了。

我把公司休閒區的沙發搬到空調底下,對著空調吹暖和一些,可是還是冷得不行,一晚上凍醒四五次,根本睡不好。我想只要熬過這第一個月就好了!

非科班,野路子,他如何“彎道漂移”進天美
攝於2015年2月,無處可去的自己決定在當時的公司睡覺  圖源:阿升

我半個月沒洗澡,頭髮都油成了一坨,身上也一股味道,還好大家嘴巴上都沒有嫌棄我。

我把剩下的錢一咬牙,找了一家最便宜的能洗澡的賓館,300 塊錢,住了一晚上,把髒襪子洗了,然後洗了個澡!這是我半個月以來睡得最舒服的一次。

錢花光了,沒錢吃飯咯!如果晚下班的話,公司是免費提供晚餐的,所以我晚上待到很晚,這樣一天就有一頓飯吃。

熬過一個月,工資到手,好像是 3800 多點。心裡很高興,畢竟是自己人生的第一份正式工作。

這時候專案總監跟我說現在要去深圳封閉開發三個月,包吃住,讓我也去。我別提多高興了,有吃的,還免費住,多好的事啊,果斷簽字同意了。

我們公司是跟深圳一家大公司合作,是在南山科技園。

到了深圳,我站在公司陽臺上,看到了騰訊大廈,老激動了!

非科班,野路子,他如何“彎道漂移”進天美
攝於2015年3月 隨公司封閉開發來到深圳,在陽臺拍下夜色中的騰訊大廈  圖源:阿升

下了班,我和主程特地跑過去近距離的在門口轉悠了一會兒。

我:“如果有一天我也能進騰訊多好。”

主程:“唉,騰訊學歷要求很嚴格的。”

這家公司真的特別大,有一次聽同事說這公司有好幾個陽臺,另外一個陽臺有健身器材。我想過去瞅瞅,結果在公司迷路了 ......

他們公司每個星期五下午會有點心,有時候是蛋糕,有時候是水果。他們公司的員工感覺就像是吃膩了一樣,一點反應都沒有 ...... 我們團隊的人老激動了,每個人都拿了好幾盒,哈哈!

我們每天八點半起床走路半個多小時到公司,來得早的話還有早餐吃,來得晚的話啥也沒有了。

晚上正常下班,但我們程式一般會更晚,我和主程還有技術總監總是最晚的三個,回去的路上大家一起討論今天的技術難點,哪些地方沒有實現,有什麼好的思路,很累,但很充實。

非科班,野路子,他如何“彎道漂移”進天美
攝於2015年4月,和主程斌哥(左)與技術總監老懞(右)回宿舍的路上 圖源:阿升

在深圳我就一直改 bug,擴充套件原有的小的新功能,跟主程一起維護戰鬥系統。我的進步很快,不過我很滿足,因為吃住不用愁。

結果在深圳封閉開發了兩個月我們就回上海了,原因不太好講。

回上海後我們在深圳辛辛苦苦開發了兩個月的新玩法被老闆直接停掉了。唉 ......

在深圳兩個月存了些錢,足夠租房子的,我跟執行策劃和專門做 UI 的程式設計師三個人合租了一套房子。

非科班,野路子,他如何“彎道漂移”進天美
攝於封閉開發期間,附近應該是當時剛開始建地基的科興D棟   圖源:阿升

我這一間估計有不到十平米,一張床,一個電腦桌,一個衣櫃就塞滿了,1600 一個月。上海的房子真貴,貴的嚇人 ......

公司開始慢慢願意讓我做一些功能了,我上班一年,做了 7、8 個系統功能,自己感覺還是收穫挺多的。

其中有個功能,因為當時上面急著要這個新功能,我預估時間需要半個月,最快也得十天,專案總監說如果你能一個星期做完,我獎勵你一個機械鍵盤,說到做到。

然後我每天爆肝,把功能在一個星期內做完了,鍵盤真的到手了!正高興呢,不知道誰說了一句這鍵盤僅僅是使用權!使用權!使用權!臥槽。

不過後來想了想無所謂,一個鍵盤 700 塊,我買得起!能夠趕在一個星期之內能做完,說明我如果想做,還是可以做到的,對自己也是一種鍛鍊。

非科班,野路子,他如何“彎道漂移”進天美
攝於2015年8月,公司獎勵的機械鍵盤(使用權!)  圖源:阿升

我經常留得很晚,每天晚上就基本只剩我和技術總監兩個人。因為自己太笨了,東西安排得也多,時間也很緊張,所以沒辦法每天都要工作到那麼晚。但很晚也有好處,可以跟專案總監交流學習。

每當我寫程式碼寫累了或者感覺他寫程式碼寫累了,我就會主動去喊他透透氣,順便聊天問一些自己不懂的地方。

他人很好,很耐心地解釋給我聽,教我原理!他好像什麼都懂,問他什麼都知道。那肯定了,不然人家咋能當技術總監呢。

下半年我熟悉了這個遊戲,做東西也慢慢快了起來!但是我還是很晚才回去,到家了也繼續研究我的飛車。

有次在網上瞎逛,看到一個《QQ飛車》道具城,網頁裡有好多飛車裡面的道具,可以直接購買。

我看到那麼多道具圖示,心想我遍歷一下,那豈不是所有道具圖示我都能得到了嗎!正好 gsa 檔案我解不開,乾脆從網頁裡直接獲取。於是寫了一個小程式,通過道具地址+道具 ID 把所有道具圖片資源都遍歷下載了下來。

哈哈,踏破鐵鞋無覓處,得來全不費工夫。

好事接二連三地發生,我在網上看到一坨程式碼,看起來像是解析某個影像的。我研究了一下,他解析的影像跟 gsa 檔案的結構特別像!我又激動了。

那些程式碼我不知道是用什麼語言寫的,但是我能看懂,我就把那些程式碼翻譯成了 C# 程式碼。好多 API 不一樣,一百來句程式碼我翻譯成 C# 搞了好幾個小時,終於能跑通了。

把 gsa 檔案讀入進來解析試試!臥槽!成功了居然,居然把 gsa 檔案給解析出來了。但是有色差,應該是程式碼寫錯了,找到問題所在,修復了這個 bug,成功寫出 gsa 解析器。我發現一個一個手動解析速度太慢,乾脆遞迴遍歷所有 gsa,全部自動解析得了。

就這樣,我從網頁上的一坨程式碼翻譯成 C#,做了一個 gsa 解析器,得到了飛車裡所有高清圖片資源。

資源是拿到了,可是現在暫時不用,我現在是全心全意的在研究賽車漂移呢。以前我一直在研究 WheelCollider,想用他做出飛車那樣的效果,可是發現這個元件真的很蛋疼。

很多東西我想改,但是不能改,因為我沒程式碼啊。

一不做二不休,我放棄了 WheelCollider,直接操作剛體,使用 addforce 模擬動力。

輪胎懸掛全部都是模擬出來的假象,正像飛車那樣,真實的賽車哪有那樣的物理效果啊?都是模擬出來的假象。

漂移也很輕鬆的做出來了感覺,但是離我想要的漂移還差得有些距離,不過沒關係,我相信我肯定可以做出來,只是時間問題而已。

非科班,野路子,他如何“彎道漂移”進天美
攝於2016年,自己開發中的《飛車》 圖源:阿升

裸辭離開,偶遇契機

匆匆忙忙又是一年,春節後回公司我就立即提交了離職申請,我不知道我當時為什麼會這麼急,只知道心裡很亂、很煩。

憋了一段時間後跟朋友提起這件事,朋友說我還是太年輕、太浮躁!或許吧!我也不知道。

這是我的第一份正經工作,從進入公司的那天起,心裡別提多高興了,我終於也可以做遊戲了,這對於我來說,真的好不容易。

離開公司有多方面原因,我最大的不捨就是技術總監老懞和嘻嘻哈哈的團隊。雖然跟策劃撕逼,但是大家也是為了讓遊戲更好,私下都相處得不錯的。

技術總監老懞幫助了我很多,從他身上我學到的不僅有技術,還有對待事情的態度。

那天請吃離別飯,團隊的二十多個人都到了,美術不熟,沒叫。大家一起開開心心地吃飯。

那天老懞主動開了瓶啤酒,我很驚訝,老懞從來沒見過他喝酒的。平時工作累,身體太虛了,我喝了兩瓶酒下肚,有點暈暈的。以前一個人能喝一箱,和以前比起來感覺差多了。

我讓老懞旁邊的程式坐到了我的位置上,跟老懞聊著天。

說著說著我不知道咋的就哭了,哭得話都說不清楚了。老懞幫我真的太多,我沒有什麼能感謝他的,也只能希望在今後的路上自己更加努力,別讓他失望。

我交接工作文件寫好的時候發給他,讓他驗收,他這才知道我要離職。我一直沒勇氣跟他說我要離職,我不知道怎麼開口。

他 QQ 收到了我的文件,過了好久,他才回復我:“你真的忍心拋下我們就這樣走了嗎?雖然說人各有志,但是我自私點,我還是希望你能留下來。”

看到這句話,我心裡更不是滋味!

老懞,你就當是我年少輕狂不懂事吧,對不起,做出這個讓大家都難過的決定。如果有機會,我們以後再一起共事。

裸辭後發現工作現在真的好難找!好多公司都倒閉了,市面上 U3D 程式一抓一大把。

投了好多家簡歷,看見招人我就投,大多數都是投出去就沒訊息了。

後來有一家公司願意要我,叫我去面試。

他聽了我的介紹,說我是他見過路子最野的程式設計師。聽到這裡,我以為又沒戲了,可是他要我了,他表示他看好我,想試一試。

好吧,既然這麼看好我,那我也盡全力,爭取不讓看好我的人失望。

在決定錄用前,專案總監告訴我他們開了一個十年專案經驗的程式設計師,還有個大廠出來的也被開了。

我瞬間亞歷山大,心想那麼叼的人都被開,我這才一年工作經驗,能勝任嗎?

我怕我把他們坑了,所以我告訴他,距離我入職還有十天時間,這十天我會做一個 demo,如果達不到你們想要的效果,我就不入職了。

他說不用給自己這麼大壓力的!可我是認真的。

我花了三天時間做了一個 demo,錄製了視訊發過去,他表示還不錯,比之前的人做得好。

得到認可,我心裡總算舒緩一些了。

做之前我心裡也沒底,甚至不知道自己能不能做出來。或許我只是用心盡全力去做了,技術跟他們相比我還差得太遠太遠。

用心盡全力去做遊戲,不能讓看好我的人失望,不能讓自己失望,僅此而已。

這家公司到底能不能讓我留下來,我不知道。在這種不確定的情緒裡,我產生了個念頭,開始在部落格上寫這篇文,回顧下這些年都經歷了什麼。

不是我傲嬌,只是很多時候我不甘於現狀想往上爬,因為沒有退路,掉下去就可能再也爬不上來了。

等我哪天落魄了或者牛逼了,回頭看看,或許才知道我年輕時的決定到底是對還是錯。

幸運的是,這家公司最後還是要了我,總共三個程式設計師,只有我有過賽車遊戲的經驗,負責開發賽車控制和玩法部分。

工作還是很忙,但我已經習慣了這種節奏,只是有時感到比以前孤獨,下班回到家就繼續研究自己的遊戲。

有天凌晨,一個人突然加了我的 QQ,聯絡我,說他是騰訊的。

我心裡一驚,覺得這肯定是個騙子,他又說了些事我才勉強相信,結果下一句又讓我懷疑起來。

他說《QQ飛車》專案組看到了你的部落格,大家對你的經歷很感興趣,有沒有空來深圳聊聊?

我心想這該不會是要誆我過去,然後當場抓起來吧。畢竟我拿到的一些遊戲資源,其實是反編譯的,說不準會告我侵權,心裡挺害怕的。

但冷靜之後想一想,我一沒靠這東西盈利,二又窮得叮噹響,想騙我也騙不到錢,能有什麼損失?

後面就買了機票,揹著電腦來到深圳,好像又回到了跟著主程在深圳封閉開發,特地跑去騰訊大門口轉悠的時候。

非科班,野路子,他如何“彎道漂移”進天美
打包前往深圳的前一天   圖源:阿升

來了之後發現沒有騙我,也沒有想象中的三堂會審,而是喊了超多人一起去吃飯,場面很壯觀,對我態度也很親切。作為一個《QQ飛車》的老玩家,我真是受寵若驚,後來才知道里面有那麼多大佬。

吃完飯他們帶著我在工作室參觀了一圈,也聽我講了自己的故事,在休閒區我把電腦開啟,給他們展示了自己還不成熟的作品,但大家都很給面子,一個個排隊試玩,讓我高興得頭暈。

他們鼓勵我來應聘試試,我也認真準備了。後來回到上海,一邊上班一邊等訊息,不敢抱希望,但又很不想失望,晚上輾轉反側。

有天上班的時候接到電話,我好像有種預感,站起來接了,感覺難以置信,像夢裡一樣恍惚,居然真的有機會參與做官方的飛車手遊,而不再是一個人的自娛自樂。

就這樣,我來到了天美。

非科班,野路子,他如何“彎道漂移”進天美
攝於2016年5月,入職第一天,豔陽下的科興 圖源:阿升

轉眼已經過去了 5 年,我還是每天下班了會玩會飛車,我的企業微信簽名也一直都是“瘋狂漂移中...”。

它成了一種習慣,一個第二世界,開發它的想法把我從最頹廢的一年裡拔了出來,學習程式設計技術,一步步走到今天,我也希望能繼續看著它,能開向多遠的未來。

後記

《QQ飛車》專案組最初因部落格上的文章注意到了“熱心玩家”阿升,考慮到他的反編譯行為未構成盈利,也未將破解資源向第三方公佈,以及他個人研究的初衷,決定當面友好溝通。

在面談與體驗他的《手機版QQ飛車》後,專案組更多被他作為老玩家的熱忱所打動,最終決定不追責他的侵權行為,但仍保留權利,並鼓勵他參與正式的應聘流程。阿升也最終成功通過社招,參與到官方版《QQ飛車手遊》的研發中。

未經軟體著作權人許可,反編譯軟體資源並向第三方提供的,均屬違法侵權行為,也是不被提倡的。希望有意參與研發過程的同學,都能努力提升自己,並參與正式的應聘流程,踏上青睞的職業道路。

最後,不論路途幾多曲折,起步有多晚,只要堅持不氣餒,總能抵達終點。

也歡迎所有優秀人才加入天美 J1 工作室,可點選文末“閱讀原文”檢視崗位資訊。

簡歷可投遞至 kayzrlin@tencent.com。

來源:TiMi Club 天美俱樂部
原文:https://mp.weixin.qq.com/s/hc9m1EsQM8R0COZywRSrxA

相關文章