網易遊戲崗位大揭祕(在網易互娛做程序猿是一種怎樣的體驗?)

對於熱愛遊戲的人,能夠開發出一款自己的遊戲,絕對是一件很酷很有格調的事。遊戲行業的高成長高回報,也吸引着越來越多的程序員躍躍欲試。

我是網易遊戲的程序開發文翔,今天就想和大家分享一下,從愛玩遊戲開發遊戲,我都經歷了什麼?

與父母鬥智鬥勇的遊戲開發之路】

我從小就是一個愛打遊戲的人,與電腦的結緣在我六歲的時候,我爸在報紙上看到一篇專家寫的報道稱電子遊戲能開發兒童智力。我爸是大學老師,他當時管理着一個實驗室。於是乎,每週我爸都會帶我去機房玩電腦,在那時,從喫豆人、大金剛到瘋狂賽車,這些現在看來畫面非常簡陋的遊戲給我帶來了無窮的快樂。

然而好景不長,半年後我爸在報紙上看到另外一篇專家寫的報道稱電子遊戲會損害兒童的腦補發育。從那以後,我爸再也不讓我接觸電腦。然而此時我已一發不可收拾,從此與父母圍繞着電腦遊戲展開了十多年的鬥智鬥勇。偷偷去同學家玩,父母不在家時玩,調鬧鐘半夜起牀玩,不一而足。

初中,我開始接觸到了計算機編程。當時學校有開設編程課外興趣班,用Pascal語言在屏幕上繪製字符畫。對於大部分人來說,在黑底白字的命令行中輸入一些意味不明的英文字母,然後等待返回結果是一件非常枯燥的事情。對於我來說也是一樣。但學習編程是我爲數不多的能夠光明正大地“玩電腦”的機會,因此我咬牙堅持了下來。

大學讀的是軟件工程專業。由於有初中和高中的編程基礎,課程對於我來說比較簡單。大一結束時,有一門C++語言的大作業,要求完成一個命令行輸入的計算器小程序。此時這種練手類型的小程序已經滿足不了我了,我希望去開發一些“真正有趣”的程序。一個想法在我腦海裏浮現——既然如此喜愛電腦遊戲,我何不自己開發一個呢?

編碼+遊戲,雙重成就讓我沉迷

一本名爲“Windows遊戲開發”的書成了我的啓蒙之書,悶頭鑽研了一個暑假,最終做出來了一款有十個關卡的貪喫蛇遊戲。

遊戲製作完成後,熱情高漲的我還爲它製作了一個漂亮的UI界面,並配上了背景音樂和音效。作業展示時,絕大部分同學的展示的都是黑底白字的命令行,我的貪喫蛇遊戲簡直是其中的一股清流。毫無疑問,我的作品獲得了滿分。收貨了巨大成功喜悅的我從此堅定地走上了遊戲開發的道路。

第一次實習,團隊開發的是一款格鬥遊戲。那時的我除了心情激動以外,格鬥遊戲一無所知,看着策劃需求二臉懵逼。爲了儘快弄明白遊戲原理,向前輩請教,閱讀代碼,網上查資料。一開始雖然進展緩慢,但隨着時間推移,事情漸漸豁然開朗。

噢,原來抓投技可以破防,是因爲判定的優先級不同。

噢,原來打在不同部位傷害不一樣,只是簡單的矩形相交檢測。

曾經我只是芸芸玩家中的一個,而現在遊戲機制的祕密在向我徐徐展開。我把每一個難題當做遊戲中的關卡去攻克。當實習結束時,已經對格鬥遊戲的機制瞭解得七七八八,再也不會手足無措。

編程與遊戲一樣,也是智力活動。編程講究的是代碼形式上的優雅,結構上的穩定,與性能上的高效。就像是使用最少的建築材料,搭建出最高的寶塔,是一門十足的手藝活。一旦沉浸在編程的世界中,所獲得的身心上的愉悅不遜於沉迷遊戲,而使用拿手的編程語言,看着遊戲的玩法一步步地在手中實現,就獲得了雙倍的快樂。

【淌過菜鳥之路,在寫Bug中不斷成長】

後來,有幸加入了《亂鬥西遊》項目組。相對於格鬥遊戲來說,MOBA遊戲的技能機制複雜了一個數量級。此時的我躊躇滿志,對所有代碼都不放在眼裏,卻不想闖出了一個不大不小的禍來。

一次,要製作一個新英雄。有一個技能,可以讓敵方目標單位複製出多個幻象,當AOE技能打在這些幻象身上時,敵方目標單位就會受到多重的傷害。此時《亂鬥西遊》已有多達50位英雄,比較穩妥的做法應該是一一標記出屬於AOE的技能,並在它們結算時增加一定的傷害。而我出於偷懶沒有這麼做,而是創建了幾個隱藏的實體接收傷害,並將傷害轉移到敵方目標單位上。沒想到,有些英雄的技能與這個新英雄的技能產生了連鎖反應,可以打出“爆炸傷害”。此時新英雄已經推出,覆水難收,策劃就默默地接受了這個設定。

經過這件事情,我在後續的開發工作中成熟了許多,除了實現策劃需求外,還要多考慮可能會發生的情況,避免出現意料之外的問題。

而現在,我加入了《明日之後》項目組。《明日之後》是一個自由視角的3D遊戲,場景非常複雜,性能壓力很大。我開始慢慢地接手遊戲引擎的研發和優化工作。如果說遊戲是一出盛大的戲劇,那麼遊戲引擎就是承載它的舞臺。遊戲引擎應該是穩定而高效的,只要出現了bug基本上就是大bug。

當時整個項目組都在熱火朝天地進行開發,而我爲了提高遊戲的幀率,不得不逐步重寫掉部分渲染邏輯。我感覺我所做的事情就是在幫一輛飛速行駛的汽車換輪子。幸好多年的遊戲開發也爲我積累了大量的經驗。最終,我成功地在不影響項目組開發進度的情況下,完成了引擎底層渲染的重構工作。

【選擇了遊戲開發就選擇了學習】

遊戲與常規軟件最大的不同之處在於,每個遊戲都是獨一無二的。每個遊戲都希望給玩家帶來獨特的體驗,由此衍生出的遊戲類型各不相同。從最爲流行的車槍球(賽車、射擊、體育)遊戲,到稍顯小衆的文字冒險遊戲;從驚悚嚇人的恐怖遊戲,到畫面優美的互動電影;從血脈僨張的格鬥遊戲,到燒腦的策略遊戲;遊戲的種類多如牛毛。遊戲種類的繁多,導致遊戲開發中用到的技術非常的多,不同遊戲用到的技術也不盡相同。

例如,《守望先鋒》是一個強調團隊合作的第一人稱射擊遊戲,這種類型的遊戲需要給玩家提供低延遲、高同步的操作體驗,流暢的角色動作,酷炫的技能效果,以及與場景較爲真實的物理互動。因此,《守望先鋒》使用到的技術包括客戶端操作預計算、狀態快照與回滾、場景遮擋剔除、反向動力學骨骼、物理系統等。

而同爲暴雪出品的另一款遊戲《星際爭霸》,則使用了許多與《守望先鋒》不同的技術。作爲一款支持自定義地圖的即時戰略遊戲,《星際爭霸》使用到的技術包括基於狀態機或行爲樹的AI、大規模動態單位尋路、用於支持錄像回放功能的事件與操作記錄、以及一個功能十分強大的遊戲編輯器。

完全學習和掌握這些遊戲中常用的技術,需要花費大量的時間。同時,隨着時代的發展,技術也在不斷地革新、發展。因此對於身爲遊戲程序員的我們來說,強大的學習能力是必不可少的。

對於我自己,我經常會在網上搜索我感興趣的遊戲技術。比如當初在玩魔獸世界的時候,我很好奇魔獸世界是如何做到跨地圖無縫銜接的。通過Google,我瞭解到了世界服務器與地圖服務器的架構,瞭解到了玩家角色是如何在不同地圖服務器之間遷移的。隨後我會開始思考,如果要我實現一套這樣的架構,會遇到哪些難點?需要解決哪些問題?這種思考不需要實際寫出代碼,只是純粹的腦力鍛鍊,但是對於記憶和理解非常的有幫助。

對於更進階的遊戲技術,我推薦觀看GDC的技術分享。GDC中文名是遊戲開發者大會。每年,在GDC上,來自世界各地的遊戲開發者齊聚一堂,分享各自的經驗和技術。GDC上分享的技術類別很廣,包括渲染方面的、遊戲玩法方面的、美術製作方面的等等。一般來說,GDC上分享的都是次世代技術,學習難度較大,適合對遊戲開發技術已經有一定基礎的同學觀看。

 

網易遊戲內部也有着良好的知識分享傳統和氛圍。網易遊戲的各個項目組,在嘗試了新的遊戲開發技術後,都會在內部的分享平臺——KM上進行分享。同時,網易遊戲還會定期組織沙龍分享會,讓不同項目組的程序員們可以面對面地進行技術交流。通過閱讀KM分享、以及參加沙龍,讓我接觸和學習到了不少新知識。

古人云,讀書破萬卷,下筆如有神。只有平日不斷地學習和積累各種遊戲開發技術,在遇到新的問題時才能從容不迫,解決方案信手拈來。

【最重要的,要有愛】

做遊戲其實是一件很累的事。

每天都會遇到新的困難,剛解決完一個問題,下一個挑戰已經在等着你。各種各樣的情況都可能會導致項目延期。也許是策劃在設計時沒有考慮清楚,也許是美術希望實現一個當前機能無法承載的美術效果,又或許是你自己,在程序中無意間埋下了bug。一方面是遊戲發佈前的加班加點,另一方面是來自玩家期待的壓力,指責跳票,身心都備受煎熬。

但對於我來說,只要真正熱愛遊戲,所有的困難都不是問題,所有的困難都只是暫時的。完成了一件作品,有許多玩家喜歡這件作品,這纔是最重要的,因爲我是一名遊戲程序員。

最後,寫給有志加入遊戲行業的同學:

如果你只是被遊戲行業的高薪所吸引而選擇加入這個行業,那麼要知道,高薪同時也意味着高強度和高壓力,但它的確是一個值得你去奮鬥的行業,希望不久的將來你會愛上這個行業。

如果你和我一樣,從一開始就打心底裏喜歡遊戲,並希望有朝一日能製作屬於自己的遊戲,那麼歡迎加入,來遊戲,就是玩。


網易遊戲內推及內部職業乾貨交流羣,入羣即可享受超多福利!!

入羣方式:鏈接進入【網易互娛|校招知識儲備&新遊體驗館探營無限福利羣】:https://jq.qq.com/?_wv=1027&k=5dJP4EB

還可以添加“網易遊戲學院菌”微信號(NetEase_study)及時獲取更多知識乾貨哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章