遊戲程序員的工作是怎樣的?

純外行,問題若小白請見諒。

1.現在編那些動輒幾十個G的遊戲和以前編DOS遊戲的方法是一樣的嗎?是原理不同還是原理相同只是工作量變大?

2.從事這行在現在的高等教育中最對口的專業是哪些?(比如遊戲程序員對應的是哪個專業;遊戲美工對應的是哪個專業;遊戲音樂對應的是哪個專業;等等。你算是科班出身的嗎?)

3.你在編寫遊戲的過程中有沒有一些值得一說的故事?

4.做這行,收入高嗎?大約是多少?

5.從事這個行業未來的上升空間大嗎?如果做到管理層級別,負責的內容和一線程序員有什麼不同?

不一定全部回答,挑你喜歡的說說看。


謝邀。

1.現在編那些動輒幾十個G的遊戲和以前編DOS遊戲的方法是一樣的嗎?是原理不同還是原理相同只是工作量變大?

沒有寫過DOS遊戲;

現在遊戲大主要是因為美術資源量大:模型複雜,貼圖精度高,動作豐富,特效絢麗等。代碼量再多也不會導致遊戲包大到哪裡去;

現在遊戲和以前的遊戲有一些不同,現在遊戲基本上都基於一款引擎來製作(例如OGRE,寒霜,CRY,虛幻,U3D等引擎),也就是說已經有一些常用、公用的東西(渲染,物理,動作等)被從遊戲邏輯里抽離出來了。

這樣遊戲寫起來反而更容易一些,生產力一直都在提高嘛。想了解引擎的話,推薦看一看《遊戲引擎架構》 @Milo Yip。

2.從事這行在現在的高等教育中最對口的專業是哪些?

程序猿當然是計算機最好了,另外通信,自動化也可以,也有很多學生物化學的同學憑藉毅力轉到這條路上來,當然那更辛苦了。

最重要的相關知識有:用到的計算機語言,演算法與數據結構,設計模式,圖形學等…當然要增強內力的話要學的更多更深。

技術美術的話,請我廠TA大牛@Ocelot Revolver 同學來回答吧。

3.具體工作

個人先按自己的經驗分一下遊戲前端的工種(同行請輕拍):引擎程序,遊戲底層程序,戰鬥程序,上層邏輯程序;

引擎程序:主要有3大主要業務:渲染,物理,動畫。幾個分支業務:音效,地形等……例如渲染來說,從像素開始,向量,矩陣,導入模型,攝像機各種矩陣計算(旋轉,位移,縮放),各種模型填充方式,材質,光照模型等等。——這一部分的工作大部分都被商業引擎做完了,少數大廠會養一些大牛來維護自研引擎。

左圖是你眼中的遊戲;右圖是引擎程序眼中的遊戲;

遊戲底層程序:具體業務具體辦——例如實現前端數據的存儲,需要研究xml,binary,excel表等東西怎麼讀,怎麼寫(核心3~5千行),讀寫工具最好自動生成(代碼生成代碼);例如實現與伺服器通信的邏輯,需要知道TCP/IP,協議最好自動化生成(代碼生成代碼),怎麼加密解密等(核心3~5千行);例如實現資源打包,需要思考怎麼壓縮資源,怎麼解壓資源,怎麼從伺服器下載資源,存放在哪裡等(核心3千行)。——一般是主程做這些工作。

看見右下角的24%(7103.3kb/40759.0kb)沒有?資源的打包,壓縮,下載,存儲,以及版本管理,可能就是一位底層程序大叔好幾個月的心血。

戰鬥程序:和策劃討論好需求後,寫角色的身體控制,特效控制,動作控制,封裝出技能,然後實現AI;然後從角色派生出主角,NPC,怪物,寵物以及各種小物件等東西,然後寫一下攝像機的鏡頭控制(共3~8萬行)。當然,最好寫一些編輯器讓策划去使用,或者指定好表格結構告訴策劃怎麼配置,以達到他們的需求。——一般是核心元老程序做這些工作。

流暢的動作,順滑的操作,這樣的高水準戰鬥控制沒有一位戰鬥程序大牛是不可想像的。

上層邏輯程序:與策劃討論需求,確定需求後消化之,然後確定表格結構,確定數據存儲結構,確定網路協議,用已經寫好的工具生成一些基礎代碼,然後就是編碼實現各種邏輯(普通功能3千行),再把相關的UI的按鍵,效果寫完(普通功能2千行)。例如實現一個鐵匠鋪,定好哪些是材料(鐵錠),哪些是產品(鐵鎚),然後按什麼邏輯從材料到產品,向伺服器要哪些數據並告訴它存哪些東西,最後把UI的按鈕以及效果寫完。——界面可能改動量非常大,仔細認真,任勞任怨的工作態度尤為重要。

國內大多數遊戲,尤其是策略型網頁遊戲,都有著複雜的遊戲界面,像這樣一個繁雜的界面,沒有幾個月的功夫是做不出來的。

以上工作統稱為遊戲前端,僅是大型網路遊戲的1/2的工作量,除此以外還有一半是後端程序員,後端本人不熟,還是讓有經驗的同學來回答吧。

PS:

建議樓主如果真心喜歡打遊戲的話,再走上這條路吧。再一點注意就是盡量廣地去學習,除了程序,還可以學一些美術、策劃、運營的東西,也是非常有用的。

我以前是非常喜歡打遊戲才走這條路的,在學校時窮,經常去蹭水晶石、完美動力、火星時代的3DMax、Maya的免費課聽,一到收費時就溜號……還有,廣播電視大學的ps,ai,painter等公開課都被蹭全了,背著數位板回學校時候的感覺真的非常幸福。

stay hungry, stay foolish.


1.DOS時代的遊戲我沒做過,現在的那些幾十個G的遊戲都是有引擎的,也是賣點,這些遊戲要是都從第一行開始寫的話,呵呵,我們就沒幾個遊戲可以玩了。

2.程序對口專業的話,呵呵,幾乎沒有,學校里教的那點兒,最多可以在公司當個實習生,還得有地方要,至少我從來不要實習生和應屆生,很多現役程序員都是畢業後在社會上的培訓機構再培訓,才去應聘的。

請稱呼為「美術」,忘記「美gong」這個詞,很難聽,真的很難聽,也很傷人,這是一個相互尊重的問題。遊戲美術的分工很細,原畫,UI,場景,建模,特效等等等等,太多了,不可能在一個專業里學全的。另外,美術這東西需要一定的「天賦」,而且還需要從小培養,半路出家很難。

至於遊戲音樂,算了吧,大多數遊戲的音樂和音效都是外包的,只有一些比較大的遊戲公司才有這個部門。(個人認為這是一個更苦逼的領域,因為好些人玩遊戲,比如手游,都是靜音的。。。)

3.加班、加班、加班。。。

4.收入嘛,得看城市,看公司,看個人能力,還得看你曾經參與過的項目,比非遊戲行業的程序員掙的還是要多一些的,但加班也要多,壓力也大。

5.發展這還得看公司,比如大公司里,你就幾乎不可能做到技術總監那個位置。管理層可以理解為管技術,管人,管進度。你可以不寫代碼,但不能不懂代碼,要是你的技術能力被下屬鄙視,那也就很難管了。

另外說下哈,遊戲行業從業者的健康狀況一直是個問題,查下已有多少兄弟倒下就知道了,

所以捏,入行前三思。


作為一名國內手遊程序,發表一下看法:

1:本人入行時間不長,沒有接觸過編寫DOS遊戲,不做評論。

2:其實遊戲美工也會細分的,比如原畫,UI,特效啥的。原畫和UI都需要美術的底子,特效少一些,主要是製作的問題。

策劃的話,國內基本沒有對口專業,但是數學如果去做數值策劃會好一點,還有就是如果你玩的遊戲很多會加很多分。但我說的不是英雄聯盟那種遊戲,我認識的好策劃家裡從小到大玩過的正版的遊戲能堆成山。

程序不用說了吧,軟體工程專業最對口。本人就是。

3:程序、美術、策劃之間會有很明顯的矛盾,處理不好會很麻煩。還有就是如果你不喜歡你在做的遊戲,你會很彆扭,沒有成就感。

4:作為一個程序,收入自然是不低。具體價位你在招聘網站上看看就好了。

5:個人感覺前景還是不錯的。如果你能混到總監、製作人級別,自己乾的活就相對會少些,多數是給別人分配工作,和解決別人解決不了的問題。

以上均為個人觀點,若有不妥請指出。

湊 誰給標題加上遊戲策劃標籤了…… 竟然被我們公司策劃看到了


從題主的提的幾個問題來看,可能接觸到的做遊戲開發的程序員比較少,好幾個問題排第一的答案已經說得挺多了,我就不重複了 :)

目前國內真正和遊戲開發相關的專業其實沒幾個,比較對口的也就計算機相關的那幾個專業,和我同一屆畢業的一個專業內的童鞋(總共100多人),在遊戲行業的不超過5個,基本選擇做遊戲開發的同學都是自己本身就對遊戲有很濃厚興趣的人,一線的遊戲開發在程序員行業里算比較辛苦的(當然,其實大部分程序員都很辛苦),就自己最近的工作情況,一個星期6天,早上9點到晚上12點,"996"在我們看來那真不算什麼,每天工作完基本都是累得趴下了...

不過,能做自己喜歡的事情其實還是挺開心的,不做程序員也許我會去開一個植物店,哈哈..說一說當"遊戲程序員"(其實應該稱為"遊戲開發者"比較合適)的感觸吧.

0. 我是客戶端開發,所以入了這行之後有一個最大的影響,就是玩任何遊戲首先會去思考這個遊戲的實現方式!! 比如看到一個動作遊戲,我首先可能不會關注這個人物的動作有多漂亮多酷炫,而是關注不同動作的銜接如何,打擊感通過哪些方式控制(打擊點與被擊動作和特效的配合/遊戲振屏/冒血數字的感覺等等)..不好意思扯遠了, 大概就是, 已經沒辦法按普通人那樣正常玩遊戲了,上手一個新遊戲首先會觀察各個地方,思考如何實現,然後,會去嘗試找bug........對,就是找bug. 感覺找到別人遊戲的一個bug會比玩遊戲有意思,感覺是沒救了.

1. 遊戲開發的工作內容比自己想像的內容要簡單,但是更加繁瑣. 遊戲開發的程序員方面,其實門檻挺低的,很多程序員同事也不是計算機專業,各種半路出家的/自學的. 同事的水平也層次不齊,有工作了5年多的,寫代碼和debug水平在我看來和應屆生還在一個層次上的. 我說這些其實只是想表達,遊戲開發其實不難,只是繁瑣,客戶端非常繁瑣. 目前參與的項目,客戶端開發涉及的語言就很多種, C++做主框架,Lua做遊戲的業務邏輯,AS做UI(Flash),C#做遊戲場景的編輯器,還有Python做一些工程的配置腳本等. 呃,偏題了,這段話主要是想表達,遊戲開發的門檻其實很低.

2. 做遊戲就像養一個孩子,從一個受精卵,不斷地照顧它,看著它一天天完善,成長,慢慢有了雛形,然後變得越來越像個遊戲,最後長大成人(經常會長殘),是一件挺有成就感的事. 短期的目標是想去更專業的遊戲公司工作,比如暴雪/育碧這種. 做一些更好玩的遊戲 :)

利益相關:實習一年,工作一年. 算入行兩年么..


反對高老師的答案:

第1點:不能武斷認為遊戲邏輯比電商複雜,遊戲ai,行為樹可以滿足大部分需要,複雜的是一整套東西。比如你得做個編輯器。再比如ai的尋路(一般用a*),你得定義地圖的表示,做編輯器。。

第2點,

遊戲本來就是分散式的,大部分遊戲是可以部署到多台機器上的,比如網關,地圖。

在線更新很重要。例行維護是停服,大部分的小修小補,是在線更新的。

之所以需要停服更新:遊戲的熱更一般是邏輯(代碼、配置)的熱更,不包含內存中數據的處理。如果要熱更的同時處理內存中的數據,工作量會大很多很多:比如,內存中的玩家是沒有裝備的,如果你要熱更裝備模塊,必須在熱更代碼中,將老玩家的數據結構,轉換為新的有裝備的數據結構。

對於百度、淘寶這種,估計是從架構上設計為可以分批維護(分散式、部分模塊的重啟不會影響到整體)。

其它很認同,一個同行說得好,服務端程序永遠是減分項。

策劃是老大 :)


第四點,如果你算時薪的話,真的不高。


1.遊戲世界是個充滿神奇的地方,而你是那個造物主(如果職位不夠另說)

2.說遊戲沒有技術含量簡單的,肯定是沒開發過遊戲,或者僅摸過部分功能的。

3.大型遊戲世界,會有很多的架構,技術設計和細節。因為需求是千變萬化的。如何在設計之初考慮到未來要修改變動的東西,如何復用,如何以最小的代價完成每個需求變動。這是一門學問。

4.遊戲服務是需要長時間不斷運營的,如何在大量log中捕獲你尋找的bug,需要你敏銳的嗅覺,和對代碼的熟悉程度。

5.對於真正的遊戲設計者來說,不要求熟悉每一行代碼,但是要熟悉沒一個邏輯,換句話說,在高bug風險區的代碼,你應該不開代碼都知道哪一行出的問題。


一說遊戲都是在說網遊,沒意思。


我來從該死的死策劃的角度來回答一下題主:

1. 功能開發:大多數程序猿的大部分工作,也就是實現策劃各種姿勢的需求

2. bug修復與系統優化:每個版本上線之前的家常

3. 工具開發:開發各類編輯器,幫助策劃、美術以及程序自己更高效地工作

4. 底層開發與維護:一般開發工作在項目初期就完成得七七八八了,後面會針對伺服器效率/客戶端表現(非端游項目還有客戶端包大小)進行持續優化

5. 版本管理:手游團隊比較明顯---安卓,ios,國內外各種渠道---一款遊戲往往會同時出數個甚至十幾個版本,不同版本之間又有大大小小的差異,甚至針對某版本需要單獨開發功能;一般情況下程序會在代碼裡面做兼容處理

6. 渠道接入,打包:苦力活

7. 設計文檔審核:這個是比較文藝的說法,通俗一點的說法是與策劃嘴炮

8. 內部代碼審核:主程檢查小弟們代碼姿勢正確與否,是否美觀整潔高效無bug

//工資嘛,一看項目,二看人品,三看地區,四看能力


作為一名還未正式開始職業生涯的學生,我也談談自己有限的心得:

1. 當前的遊戲製作和以前的遊戲製作原理大致相同。但是由於技術的迅速發展,當前遊戲與過去的最大區別在於:你不用太擔心遊戲引擎的問題。過去製作一款遊戲,往往意味著你必須先開發一個遊戲引擎。而現在,各種商業化的遊戲引擎使整個過程大大縮短。儘管還是有很多遊戲使用自己開發的引擎製作,但是整體情況已經比過去好了很多。

2.目前我了解到的情況是,許多在遊戲行業打拚多年的人,其最初的專業完全不和遊戲沾邊。很多前輩早年生涯都和遊戲界毫無交集,但由於對遊戲的熱愛,他們最終都進入了該領域並取得了驚人的成績。

至於現在,遊戲編程當屬計算機出身居多。遊戲美工我國內情況了解不多,不過國外都有對應的遊戲美術專業。至於遊戲策劃,則是各類出身都有,它甚至包含了前兩類出身的遊戲人。

至於最對接的專業,國內當然莫屬中國傳媒大學和浙江大學的遊戲專業。而國外,許多大學也開辦了相應的遊戲專業。這些專業的特點都是包含了幾個方向,比如編程,美工,設計。

3. 關於做遊戲的故事,可以看看我之前在 遊戲製作是不是軟體製作層面上最困難的了? - 董晶暉的回答 提到的內容。這裡就不詳說了。

4. 工資我了解不多。但是我可以肯定地說,若工資除以工作小時的話,結果其實不太樂觀。所以要有愛才行!

5.路漫漫其修遠兮,與君共勉。


策劃一隻。

我只知道我們公司的程序大大:

——新增個功能怎麼樣?

——沒問題。

——可以實現嗎?

——我想讓它實現就能實現。

——多長時間可以完成?

——給我十分鐘。

每天在裝逼和牛逼中度過。

令人佩服。


遊戲編程特點

1. 邏輯難,畢竟要寫這種玩法,會涉及到很複雜的邏輯,不像電商,論壇這種,基本就是前段請求,讀資料庫(或緩存),數據返回,前段顯示。遊戲里複雜的ai真是比這些複雜一百倍,這僅僅是伺服器端,客戶端需要了解很多圖形學的知識,涉及大量數學方面的積累。

2. 架構簡單,存儲簡單,一般遊戲根本用不到互聯網行業的那些分散式架構,什麼lamp架構,

不用考慮在線更新,基本都是停服更新(也有少量的簡單需求是不停服更新),你就不能要求淘寶,百度停服維護吧,維護個1小時,大家都別用淘寶,百度了。

工資水平,平均來說真的不如互聯網開發,和bat相比。

而且遊戲開發比互聯網開發要累,因為你總要寫新玩法,新功能給玩家玩。尤其是現在大家都搞手游,手游生命周期很短,很多公司都是靠量來砸,做出一款新遊戲,馬上得做下一款。每個人都相信自己團隊能做出刀塔傳奇,實際你懂的,手游現在是渠道為王的時代,一款產品要成功,程序實力只是一個方面,而且不是最重要的方面,策劃,運營才是決定遊戲成敗的關鍵。


策劃主導的公司,遊戲程序員每天工作就是哄策劃開心。

技術主導的公司,遊戲程序員每天的工作就是哄老闆開心。

沒辦法,這就是國內遊戲行業現狀。


乾死產品狗


1. 原理大概是一樣的,隨著機能提升遊戲材質越來越精密所以體積越來越大。

2. 我們公司程序員多數是科班出身,不過這不重要,關鍵看能力和悟性。美術師當然是美術學院的。

3. 遊戲產業是個創意產業,樂趣無窮也很辛苦。

4. 元老和新人收入差距很大,相信大多數行業都是這樣。

5. 等你有一定經驗,你可以選擇轉到管理,也有不少優秀的程序員就是熱愛編程,從而成為資深程序員,看個人選擇。

基本上遊戲程序員的工作,歸納一下就是開發工具,讓使用工具的人(game designers)用工具開發遊戲。


先挑兩個 碼一下,有時間再補充。

遊戲體積變大體現在遊戲邏輯的複雜和遊戲資源的增加,遊戲資源增加包括量的增加和質的提升,遊戲邏輯複雜一定程度上體現在代碼量的增加。

關於對口專業,這其實跟你大學學的專業關係不是很大。我是做技術的,我大學的同班同學(數字媒體技術)專業,有做設計的,有做策劃的。同事當中,做技術的有學物理的,有學化學的;策劃也有學馬克思主義的。關鍵還是大家都熱愛遊戲。我覺得大學並不決定你以後的發展方向,老師只是給你一個引導,如果這個引導不符合你的口味,就可以去做自己感興趣的事了。所以,如果對某件事感興趣,比如遊戲,不要在意你是什麼專業。


以前一直聽說,遊戲是所有程序中最複雜、先進的,真的進了這一行才發現完全不是這麼一回事……

其實和其他程序也差不了多少,特別是現在這個環境……

我們都被叫做CP(內容提供商),只能呵呵了


一入遊戲深似海,從此節操是路人。


或許作為小白程序員,我說工作狀態有點不夠資格

入行半年,從最初的啥都不太懂,到現在嘗試著寫一些小功能了,從基礎ui到對bug的修復,雖然深入的一些東西還沒接觸到,但是越工作卻越讓我深愛這個職業。

喜歡不經意的發現,實現功能後的喜悅,而往往這些正好都是我每天經歷的很振奮。

說到加班,或許我沒去過幾家公司,但就我目前而言,從來沒頭準時下過班。

每天都沉浸在遊戲世界之中,這比玩遊戲更加讓人激動

最後說一點,學習永遠都不要停下,因為你會發現如今的生活,除了不斷學習,沒啥事可做

別害怕,也別沮喪,相信勞動最光榮,也相信總有一天生活會精彩紛呈。

午休結速了,繼續剛——-


4.做這行,收入高嗎?大約是多少

-- 答:還可以,但是累。不管你是工作幾年的程序員,總要經歷996(早九晚九,一周六天),大半年甚至整個項目期間,(鵝廠、豬廠都如此)。

5.從事這個行業未來的上升空間大嗎?如果做到管理層級別,負責的內容和一線程序員有什麼不同?

-- 答:做到管理層就不是程序員了,你說的是遊戲程序員,主程(算是管理級別吧)除了管理項目也要寫代碼的。


推薦閱讀:

你在騎馬與砍殺這個遊戲中干過什麼有趣的事情?
騎馬與砍殺2到底什麼時候出??
如何設計同人遊戲《彈丸論破:王自如絕望學園》?
騎馬與砍殺到底好玩在哪裡?
如何評價源氏這名英雄?

TAG:遊戲 | 程序員 | 遊戲策劃 | 遊戲程序員 |