我的職業是遊戲程式設計師!

2021-02-13 網易遊戲學院

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

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

2013年畢業於華南理工大學,2015年加入網易。目前在《明日之後》項目組進行引擎優化與遊戲玩法開發等工作。愛造輪子,自主開發了整套遮擋剔除烘焙與運行時系統。喜歡分享技術,2017年度金牌沙龍主講人。

我從小就是一個愛打遊戲的人。

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

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

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

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

一本名為「Windows遊戲開發」的書成了我的啟蒙之書,悶頭鑽研了一個暑假,最終做出來了一款有十個關卡的貪吃蛇遊戲。

                            

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

心動了?對遊戲相關專業感興趣?

讓網易遊戲學院助你一臂之力~

點擊「閱讀原文」獲取「萌新資源大禮包」

相關焦點

  • 我很喜歡玩遊戲,那麼我就適合做遊戲程式設計師嗎?
    相信現在在看文章的你也玩遊戲,雖然愛玩的程度不同,但是至少都是感興趣的,當然你也知道,手遊行業利潤高,遊戲程式設計師自然也吃香,能一邊賺錢一邊玩遊戲,豈不是人生一大幸事呢?其實當年我也是這麼想的。為成為遊戲程式設計師而讀研大學的時候學的專業和計算機不太沾邊,對學的東西不太感興趣,每天的生活就是上課開黑打遊戲,在大學的男生宿舍裡,這樣的情況確實也比較普遍。
  • 程式設計師會成為非常內卷的職業嗎?
    在知乎上,有個500萬+瀏覽的程式設計師熱帖:程式設計師未來會成為非常內卷的職業嗎?「內捲化」是指發展到一定階段後,便停滯不前或無法轉化為另一種高級模式的現象。其中最高贊的是@沈世鈞 的回答:「不用未來,就現在,從加班文化看,程式設計師早已是一個高度內捲化的職業。」程式設計師基本在前三年工作裡就掌握基本編程技術,剩下的是在重複 CURD。很多人以為在一家大公司工作多年,到達舒適區後便穩定下來。可對於自身能力來說,此時反而是最危險的,因為你的工作能力下降並趨於平靜。技術迭代速度很快,沒有進步就是一種落後了。
  • 給你講個笑話:我是做遊戲的程式設計師
    比如你們是做網際網路的,你們是做CEO的,你們是做投資人的,不知道你們的行業到底是不是笑話,總之我要給大家講個笑話,畢竟我是做遊戲「程序猿」的。程式設計師又名「程序猿」,是一種非常需要保護的瀕危物種,一般分為兩類,程序設計猿與程序編碼猿,但是兩者的界限並不清楚,都可以進行開發、維護。
  • 串串脫口秀之我是程式設計師
    有陣子,我在非軟體公司的軟體部門工作,也學習到了很多東西,最有趣的一點就是,業務部門其實最喜歡的工具並不是我們開發出來的什麼系統,而是一個叫做Excel的工具。所以,為了更好地服務業務部門,我就好好學習了一門語言,叫做VBA。
  • Java程式設計師這個職業賺錢嗎?能賺多少錢?
    那麼這時,有些朋友聽到了我說的這些話也許會很失望,其實也不要失望,這個職業有讓你賺到高薪的機會,只是,賺高薪是在什麼時候,或者是在程式設計師的哪個所屬層級。我們來了解一下程式設計師的修煉三層境界,了解一下這個內容會比較容易抓住本書中的內容要旨。
  • 「我點開了程式設計師男友的瀏覽記錄......」
    當你第一次聽說程式設計師這個職業你可能以為他們是這樣的格子衫、禿頭、直男……關於程式設計師的種種謎團有多少是真的?多少是謠傳?如果說,有哪個行業的人不用穿制服,也能被一眼識破,那程式設計師一定是其中一類。996、脫髮、注孤生、隱藏富豪……難道程式設計師就離不開這些標籤了嗎?
  • 為何程式設計師工資高?
    總的來說,很多網際網路公司的本質是一場擊鼓傳花的遊戲,為了這個遊戲能夠玩下去,所以需要大量的燒錢燒出規模,燒出好的故事,只有好的故事,才能成為韭菜的事故。說到這裡,某個世界頂級咖啡品牌露出了笑容。因為網際網路行業的投入產出比可以做到十分巨大,所以大量熱錢湧入這個行業。
  • 遊戲程式設計師修煉手冊(一):適合初學者的幾點提升要訣
    我想聊的下一個話題,就是關於持續學習。程式設計師族群,早就身處在一個終身學習的時代,入行就是焦慮的開始,持續的學習,不能保證百尺竿頭,但至少能迴避逆水行舟的惶恐。雖說程式設計師都在學習,學習的質量差別還是比較大的。相當多的程式設計師並沒有良好的學習習慣,忽略了提前儲備知識的過程,只是被動的學習如何解決迫在眉睫的問題,掌握明天上班要用的技能。
  • 程式設計師是這樣玩遊戲的
    GitHub遊戲雖好,但對於一部分學渣來說,英語和鷹語沒什麼區別,於是就有一個網站,將GitHub上的一些有趣的遊戲,做成了漢化版本。接下來,跟隨大師兄來看看,都有哪些畫風太美的遊戲。玩慣了畫風精美的遊戲,玩玩這種畫風的遊戲,別有一番感受。既然是從GitHub上漢化下來的遊戲,不出意外的,這個網站的玩家,絕大部分都是程式設計師,尷尬的事情就發生了。如果按照遊戲的設定玩,無疑需要大量的時間,一名程式設計師就想到了一個辦法,寫一串代碼,自動點擊「採集貓薄荷」獲取資源。
  • Oculus CTO、傳奇程式設計師John Carmack宣布離職:我要去搞AI了!
    大數據文摘出品Oculus CTO ,也是遊戲程式設計師大神、開源軟體倡導者John Carmack昨天在Facebook上宣布,將辭去公司CTO職位,只擔任諮詢身份。而對於下一步的打算,John也毫不掩飾,直說,我要去搞AI了!
  • 【遊戲研究社 | 評測】《程式設計師升職記》
    看到遊戲名的那一刻,有的同學可能就要抗議了:「不是吧阿sir?在學校已經是天天掉頭髮了,在遊戲裡還要當程式設計師?」乍一看遊戲名,你可能會認為這是一款偏模擬經營類的遊戲,實際上這是一款以圖形化編程為核心的益智解密遊戲。程式設計師升職記是一家小眾的獨立遊戲公司——Tomorrow Corporatio旗下的遊戲。
  • 6個軟技能幫助我成為一個成功的程式設計師
    一個成功的程式設計師不只是指能寫一手好代碼的程式設計師,因為任何人通過學習也能達到這個目的。
  • 成為一名優秀的遊戲程式設計師的幾個修煉要點
    遊戲行業相對於IT行業有什麼區別?想要成為一名優秀的遊戲程式設計師需要怎樣的素質?很多人都會產生這樣的疑問,那麼我就試著解答一下這兩個問題。當然以下也只是我個人的一些不成熟的見解,歡迎各位拍磚。首先,遊戲行業相對於IT行業,其工作重心主要是在前端上面。因此,本文主要討論的是前端程式設計師,即所謂的「Gameplay Programmer"所需要的能力和素質。
  • 程式設計師專屬遊戲開發指南,人人都能開發遊戲
    程式設計師書庫(ID:OpenSourceTop) 編譯
  • 招程式設計師鼓勵師是性別歧視嗎?
    要求:必須漂亮,知道如何吸引不善於社交的程式設計師,會放鬆按摩。申悅的職業被稱為「程式設計師鼓勵師」。這個職業兼有心理學家和啦啦隊員的性質,這些女性被僱來與程式設計師搭訕,緩解他們的巨大壓力。她在中望金服的主要工作是在前臺服務、組織社交活動、購買茶歇的小食以及與程式設計師聊天。她會把一個程式設計師叫到會議室裡,問他,「你要加班嗎?」,然後聆聽他的各種不滿。「我就覺得挺新奇的,」申悅說,「因為真的之前沒有見過這種崗位。」最近的一個周五,她找到了郭振傑。28歲的郭振傑在辦公桌旁放著一張摺疊床。
  • 程式設計師鼓勵師真得能解放程式設計師嗎!
    來自:http://www.techug.com/programmer-gulishi程式設計師鼓勵師是最近興起的新興職業,有很多企業為了激勵程式設計師的鬥志
  • 我的職業是遊戲互動設計師
    「我覺得不萊梅藝術學院給我整體的感覺是『自由』和『藝術』,在這裡可以嘗試各種類型的設計,表達內心真實的想法。」相反,季凌熙導師遇到最大的困難居然是他玩的遊戲相對遊戲行業的人來說偏少。「大二之前,我還是經常玩遊戲的,但大二之後一直到研究生畢業,就沒什麼時間玩遊戲,只偶爾接觸手遊,所以就出現了『遊戲體驗斷層』。需要一段時間來『惡補』,瘋狂打遊戲。」
  • 1024,我也是一名程式設計師
    不知道什麼時候起,1024這個毫無意義的日子被程式設計師們定義成了自己的節日。有了Ruby,也沒必要再去學Python了。只是,Ruby確實慢。所以,後來我離職創業後,我們開發Web系統主要的語言就是Erlang。也曾想過用Elixir,但Elixir對於非Rails程式設計師來說,其實也沒有什麼吸引力。而我人團隊裡的人都是沒有用過Rails的。開發Web系統當然離不開Javascript。
  • 為什麼程式設計師工資比產品經理高?
    昨天有個 98 年的讀者加我微信,說自己是計算機專業畢業的,馬上要找工作,如今在程式設計師和產品經理這兩個崗位間糾結。他有過兩段實習經歷,一段是在中型公司做技術,一段是在大廠做產品,按他自己的描述,這兩個職業他都喜歡,沒有特別傾向性。後來,他說自己也問了一圈,發現程式設計師的工資普遍比產品經理要高,所以他動了之後做技術的念頭。
  • 為什麼程式設計師編寫的第一行代碼是Hello,World
    編程是一種「告訴石頭該怎麼想」的藝術,就像程式設計師艾琳·斯普雷克蘭(ErinSpiceland)曾經嘲諷的那樣。即使是我見過的最疲憊的職業後期程式設計師,仍然例行地對他們工作的怪異本質感到驚奇。「幾百年前,在我的家鄉新英格蘭,如果準確地描述我的職業,我會被燒死在火刑柱上,」程式設計師丹尼·希利斯(DannyHillis)曾經這樣寫道。