資料介紹
來(lái)源:游戲開(kāi)發(fā)那些事
作者:Jerish
在知乎上,經(jīng)常能看到類似“如何入門游戲開(kāi)發(fā)”這樣的問(wèn)題,對(duì)于進(jìn)入游戲行業(yè)快三年的我來(lái)說(shuō),現(xiàn)在應(yīng)該有能力解答這個(gè)問(wèn)題了。
之前偶然在Gad上看到一個(gè)游戲開(kāi)發(fā)入門系列的視頻,覺(jué)得內(nèi)容挺全面的,就定了一個(gè)月的計(jì)劃把這些課程都看完了,同時(shí)在我的博客上面做了很多筆記,收獲非常大。從今天開(kāi)始,我決定進(jìn)一步完善游戲開(kāi)發(fā)入門系列的文章并把他們搬到公眾號(hào)里面。
如果你想進(jìn)入游戲行業(yè),覺(jué)得學(xué)習(xí)資料太多很難入門,那我覺(jué)得這個(gè)系列會(huì)對(duì)你非常有幫助。文章大概會(huì)有12篇左右,從AI、渲染到地形、物理再到動(dòng)畫、網(wǎng)絡(luò)我都會(huì)盡可能的涉及到,有什么問(wèn)題歡迎留言提問(wèn)。
第一篇文章里面,我試著概括性的對(duì)游戲開(kāi)發(fā)所需要的技能做一個(gè)總結(jié),希望大家對(duì)游戲開(kāi)發(fā)能有一個(gè)基本的認(rèn)識(shí)~
游戲開(kāi)發(fā)基礎(chǔ)要求高么?
和其他程序猿一樣,要想做一名優(yōu)秀的游戲開(kāi)發(fā)者,底子不能差,算法,數(shù)據(jù)結(jié)構(gòu),語(yǔ)言等基礎(chǔ)一個(gè)都不能少。當(dāng)然,除了這些基本功外,還要對(duì)游戲有比較深入的理解,比如看到一個(gè)功能就能猜出或給出一個(gè)大概的實(shí)現(xiàn)思路。
看一下游戲開(kāi)發(fā)的基本功有哪些:
數(shù)學(xué)基礎(chǔ):根據(jù)你所做內(nèi)容來(lái)決定,一般上層邏輯比較少的去考慮到積分等高數(shù)內(nèi)容。但是如果想搞圖形學(xué),矩陣線性代數(shù),高數(shù)必須要有一定的功底
算法:常見(jiàn)的排序,查找需要理解并掌握,進(jìn)一步常見(jiàn)的還有分治,貪心,動(dòng)態(tài)規(guī)劃,有時(shí)候現(xiàn)學(xué)現(xiàn)賣也是可以的。另外,除了這些基本的算法,在游戲領(lǐng)域還是有很多其他領(lǐng)域不太常用的算法,比如八叉樹(shù)查找,碰撞檢測(cè),A*。還有一些很特殊的情況需要開(kāi)發(fā)者自己去尋找合適的算法。
C++(C#):基本語(yǔ)法,模板,代理,命名空間,const,繼承,內(nèi)存結(jié)構(gòu),虛表,引用,斷言,宏定義等
數(shù)據(jù)結(jié)構(gòu):首先是掌握鏈表,數(shù)組,隊(duì)列,堆,棧,圖,樹(shù)等數(shù)據(jù)結(jié)構(gòu),然后是各種排序,查找,遍歷等算法。這些掌握了以后可以很快的熟悉stl或者類似的基本庫(kù)原,用的時(shí)候可以更準(zhǔn)確的選擇合適的數(shù)據(jù)結(jié)構(gòu)
設(shè)計(jì)模式:一般來(lái)說(shuō),我們需要設(shè)計(jì)模式來(lái)快速的搭建游戲邏輯框架,比如前面提到的各種邏輯系統(tǒng)。而且還需要通過(guò)設(shè)計(jì)模式來(lái)理解引擎各個(gè)模塊的設(shè)計(jì)思路。當(dāng)然,如果你想設(shè)計(jì)游戲引擎,那更不能少了設(shè)計(jì)模式了。
對(duì)引擎各個(gè)模塊由一定深入的理解:這個(gè)不用多說(shuō),看一遍游戲引擎架構(gòu)吧,不理解寫出的代碼經(jīng)常會(huì)出現(xiàn)各種問(wèn)題(比如同步問(wèn)題),編輯器各種功能也用不好。
內(nèi)存管理:可能很多引擎或者語(yǔ)言已經(jīng)盡可能的幫你處理內(nèi)存了,但是你難免需要在一些特殊情況下自己處理,內(nèi)存池技術(shù),各種C++的new的使用,不得不會(huì)。
對(duì)開(kāi)發(fā)工具的熟悉:這里并不是指只是對(duì)某一個(gè)引擎使用熟練,而且對(duì)不同引擎相關(guān)的內(nèi)容都有一定理解,可以很快的觸類旁通。
編譯原理,鏈接,第三方庫(kù):經(jīng)常會(huì)遇到各種鏈接錯(cuò)誤,編譯錯(cuò)誤,打包錯(cuò)誤,這需要你有一定的相關(guān)知識(shí)與經(jīng)驗(yàn)去解決這些問(wèn)題。
性能分析與性能優(yōu)化: 主要就是三個(gè)方面——內(nèi)存,CPU,GPU。著手點(diǎn)有渲染批次,渲染實(shí)例化,布料優(yōu)化,網(wǎng)絡(luò)同步數(shù)據(jù)量,物理開(kāi)銷等,加載資源優(yōu)化(包的合并),裁剪,聲音文件加載,LOD,美術(shù)資源制作規(guī)范化等。調(diào)試的時(shí)候可以使用引擎內(nèi)置工具,進(jìn)一步的細(xì)節(jié)可以采用Intel的VTune工具(有時(shí)間我可能寫一個(gè)相關(guān)的使用文檔)
對(duì)游戲的理解:雖然不玩游戲也一樣能參與游戲開(kāi)發(fā),但玩過(guò)游戲的人還是有優(yōu)勢(shì)的。最明顯的是玩過(guò)游戲的人會(huì)對(duì)游戲有更多的想法與意見(jiàn),也習(xí)慣去主動(dòng)學(xué)習(xí)其他的游戲的技術(shù)與優(yōu)點(diǎn)。(程序這樣,策劃更是如此)
開(kāi)發(fā)經(jīng)驗(yàn):這個(gè)就比較寬泛了,難以只言片語(yǔ)說(shuō)清。比如你的游戲莫名其妙的出現(xiàn)了一些bug,新手完全無(wú)從下手,而有經(jīng)驗(yàn)的人會(huì)有各種手段去調(diào)試并解決。經(jīng)驗(yàn)豐富的老手有時(shí)真的抵得上N個(gè)新手的,所以這需要各位不斷的學(xué)習(xí)與實(shí)踐了。
經(jīng)常聽(tīng)別人說(shuō)游戲開(kāi)發(fā)很復(fù)雜,復(fù)雜在哪呢?
總結(jié)來(lái)說(shuō)就是內(nèi)容太雜,細(xì)分又太深。隨便舉兩個(gè)技術(shù)方向(渲染,AI)就夠你無(wú)限深入了。還有一些模塊,說(shuō)難不算太難,但是內(nèi)容相當(dāng)復(fù)雜,需求變更頻繁,處理不好就如無(wú)底洞一般~
那么我們簡(jiǎn)單的對(duì)游戲模塊做一個(gè)總結(jié):
游戲邏輯模塊系統(tǒng):游戲玩法核心,包括各種武器,狀態(tài),技能,背包,戰(zhàn)斗等邏輯系統(tǒng)
動(dòng)畫模塊系統(tǒng):狀態(tài)機(jī),Montage,動(dòng)畫融合,IK等
物理模塊:給需要交互表現(xiàn)的對(duì)象賦予物理特性(包括剛體,流體,粒子,布料等),調(diào)整重力大小等各種參數(shù),調(diào)整交互中力的大小,調(diào)整物理約束
AI模塊: AI導(dǎo)航,與玩家交互等,玩家的很多功能系統(tǒng)也需要給AI來(lái)使用,更深層次的可以考慮將機(jī)器學(xué)習(xí)相關(guān)的內(nèi)容融入
UI模塊:搭建各種界面框架(背包,捏臉,地圖等),非常耗時(shí)間與精力,后期需要不斷調(diào)整
渲染模塊:客戶端表現(xiàn)核心,不用多說(shuō),內(nèi)容非常多且深
網(wǎng)絡(luò)模塊:底層架構(gòu),同步,網(wǎng)絡(luò)連接
場(chǎng)景模塊:包括地形,關(guān)卡,植被,角色管理與優(yōu)化等
輸入與輸入處理模塊:將玩家輸入處理轉(zhuǎn)換成邏輯,需要注意的有組合鍵,輸入法切換等
游戲登錄與更新:一般這是專門的工具組來(lái)做,比如我們常見(jiàn)的各種游戲登錄器,在線更新等。
這里面的除了網(wǎng)絡(luò)基本上都需要美術(shù),策劃,程序共同參與與合作。
游戲開(kāi)發(fā)僅僅是寫邏輯代碼么?
當(dāng)然,不是~~~ 游戲也是一個(gè)軟件項(xiàng)目,是一個(gè)需求變化極為頻繁的項(xiàng)目。當(dāng)你跳出底層的邏輯程序員時(shí),你會(huì)發(fā)現(xiàn)你還有好多事情要去做。
比如:
版本控制:一般使用git或者svn
存儲(chǔ)與序列化(如protobuf):?jiǎn)螜C(jī)玩家的游戲存檔需要通過(guò)序列化。游戲中的同步系統(tǒng)也需要通過(guò)序列化 對(duì)象來(lái)搭建
反外掛:保證游戲公平性,一般服務(wù)器上做各種校驗(yàn)措施,這個(gè)東西真的不容易,而且又麻煩,身邊懂得人真的不多,我本身也很希望有高人指點(diǎn)一二
多線程優(yōu)化:一般用于渲染,物理,網(wǎng)絡(luò)同步等,減少開(kāi)銷,增加cpu利用率
數(shù)據(jù)庫(kù):什么數(shù)據(jù)要存在數(shù)據(jù)庫(kù)里面,什么存在本地就可以。應(yīng)該選擇什么數(shù)據(jù)庫(kù)?之后會(huì)不會(huì)出現(xiàn)游戲合服數(shù)據(jù)庫(kù)合并?合并的Key怎么處理?
CDN /服務(wù)器的部署與運(yùn)行等:這個(gè)也很復(fù)雜,又要考慮成本又想容納更多玩家(網(wǎng)游),有時(shí)可能需要用到CDN技術(shù)來(lái)優(yōu)化網(wǎng)絡(luò)同步,另外還要考慮成本等問(wèn)題來(lái)決定是否租用云服務(wù)器
實(shí)現(xiàn)網(wǎng)絡(luò)穿透 :對(duì)于玩家自己開(kāi)房間類的游戲,需要我們提供網(wǎng)絡(luò)穿透的手段,才能讓兩個(gè)內(nèi)網(wǎng)的玩家鏈接并通信。有的時(shí)候,網(wǎng)絡(luò)穿透技術(shù)平臺(tái)會(huì)提供,不需要自己造輪子。
使用性能分析工具:前面提到了性能優(yōu)化,優(yōu)化前我們需要各種工具來(lái)輔助我們找到影響游戲效率的瓶頸(如VTune)
配置:需要大量策劃配置的數(shù)據(jù)存放在哪里?配置文件?XML?這需要構(gòu)建一套小的系統(tǒng)(或者引擎提供)
聲音數(shù)據(jù)處理:一般引擎提供基本的音樂(lè)與音效處理,但是有的引擎對(duì)音頻方面處理的更深入,效果更好
平臺(tái)對(duì)接:游戲需要發(fā)布到不同的平臺(tái),這個(gè)平臺(tái)不僅僅指硬件平臺(tái)(Android,iOS,PS4,PC,XBOX)還包括各種軟件平臺(tái)(各種應(yīng)用商店,如PC上的Steam,WeGame。安卓上的應(yīng)用寶,各種軟件管家等)該過(guò)程其實(shí)也相當(dāng)繁瑣,有一些平臺(tái)的審核非常嚴(yán)格,需要積累一定的經(jīng)驗(yàn)才能快速的處理相關(guān)內(nèi)容
國(guó)際化與本地化:簡(jiǎn)單來(lái)說(shuō),就是不同國(guó)家的語(yǔ)言版本不同。如果你的游戲不是只賣給英國(guó)美國(guó),你就不得不面對(duì)本地化,坑很多
日志系統(tǒng):開(kāi)發(fā)與運(yùn)營(yíng) 游戲上線一定很多bug,你又沒(méi)辦法去玩家電腦上調(diào)試,如何快速定位bug,日志系統(tǒng)很有效
調(diào)試與維護(hù):
開(kāi)發(fā)期 斷點(diǎn)調(diào)試(最有效)、日志調(diào)試、dump調(diào)試 、控制臺(tái)調(diào)試,可視化調(diào)試(在場(chǎng)景內(nèi)繪制特定的幾何體),截圖錄屏調(diào)試(一般用于調(diào)試渲染,動(dòng)畫等)
上線期 日志調(diào)試、服務(wù)器可以用dump調(diào)試,也可以想辦法把客戶端的dump傳送到服務(wù)器(做一個(gè)內(nèi)置的自動(dòng)收集客戶端dump程序) 、管理員GM調(diào)試(非常重要,可以避免重啟服務(wù)器)
bug處理:
嚴(yán)重?fù)p失的bug 有時(shí)候已經(jīng)發(fā)生的造成玩家嚴(yán)重?fù)p失的bug(如玩家投入大量時(shí)間、金錢獲取的)無(wú)法改變,又不能及時(shí)修復(fù),想要彌補(bǔ)玩家,可以通過(guò)GM來(lái)給予玩家補(bǔ)償。
游戲崩潰性bug 需要在游戲上線的前兩天,把發(fā)生概率高的所有Bug通過(guò)Dump調(diào)試后盡快修復(fù)并更新
腳本:簡(jiǎn)單邏輯代碼,熱更新
打包流水線,包的大小優(yōu)化,包的多層遞歸引用優(yōu)化等:整個(gè)項(xiàng)目從編譯到配置再到打包需要哪些處理,要注意哪些配置等
工具開(kāi)發(fā):針對(duì)特殊需求開(kāi)發(fā)特定的工具來(lái)提高程序、美術(shù)、策劃的開(kāi)發(fā)效率
當(dāng)然,上面的內(nèi)容還遠(yuǎn)不足以覆蓋游戲開(kāi)發(fā)的所有內(nèi)容,我會(huì)在后面學(xué)習(xí)的時(shí)間里繼續(xù)擴(kuò)充。當(dāng)然呢,學(xué)習(xí)任何東西都需要一個(gè)過(guò)程,我們不需要一開(kāi)始就掌握這么多東西。日積月累,我們都有可能稱為一名優(yōu)秀的游戲開(kāi)發(fā)者~
- 我想做個(gè)MP3,要怎么入手?
- 高速軸出現(xiàn)鍵槽磨損問(wèn)題應(yīng)該如何修復(fù) 7次下載
- 如何對(duì)你手頭的MCU和開(kāi)發(fā)板或者STM32進(jìn)行性能測(cè)試?
- 視頻介紹Arduino的歷史和創(chuàng)始人馬西莫·班茲的故事,看過(guò)這篇您再學(xué)Arduino! 為 初學(xué)者 和 創(chuàng)客教師 介紹Ard
- 真正的嵌入式開(kāi)發(fā)高手該會(huì)些啥?
- 基于Unity3D游戲引擎的神經(jīng)反饋治療系統(tǒng) 5次下載
- Android開(kāi)發(fā)APP應(yīng)該如何省電
- C語(yǔ)言能開(kāi)發(fā)什么?應(yīng)該怎么去學(xué)習(xí)
- 嵌入式開(kāi)發(fā)人員應(yīng)該具備哪些知識(shí)和能力
- 嵌入式開(kāi)發(fā)的基本步驟是怎么樣的
- Android開(kāi)發(fā)教程之實(shí)用的安卓游戲開(kāi)發(fā)電子書(shū)免費(fèi)下載 4次下載
- 基于安卓開(kāi)發(fā)C++語(yǔ)言的游戲開(kāi)發(fā)入門 4次下載
- Android游戲開(kāi)發(fā)之重力系統(tǒng)開(kāi)發(fā) 10次下載
- 新建文件夾充電仿真 5次下載
- Lua游戲開(kāi)發(fā)實(shí)踐指南 - 詳章 29次下載
- 程序中增加一個(gè)變量導(dǎo)致異常的分析 625次閱讀
- 簡(jiǎn)單講講u-boot和bootloader有啥區(qū)別 1325次閱讀
- 板卡上散熱硅脂下滑可能是什么原因呢 853次閱讀
- 鴻蒙上開(kāi)發(fā)“推箱子”小游戲 1123次閱讀
- 如何選擇合適的DAQ軟件 957次閱讀
- 由淺到深搭建遠(yuǎn)端容器開(kāi)發(fā)環(huán)境 813次閱讀
- Android游戲開(kāi)發(fā)工具以及游戲調(diào)試、打包和分發(fā)技巧 2820次閱讀
- 盤點(diǎn)影響電動(dòng)汽車電池續(xù)航的要素 2151次閱讀
- MKR Vidor 4000一款拇指型的FPGA開(kāi)發(fā)板 1244次閱讀
- 基于Java的游戲服務(wù)器開(kāi)發(fā)技術(shù)體系詳解 7320次閱讀
- 無(wú)線充電技術(shù)應(yīng)該會(huì)肉眼可見(jiàn)的速度逐漸普及 6343次閱讀
- 游戲的優(yōu)化應(yīng)該考慮的四個(gè)方向 1787次閱讀
- 醫(yī)療產(chǎn)業(yè)臨轉(zhuǎn)型應(yīng)該會(huì)出現(xiàn)的五種醫(yī)療技術(shù)趨勢(shì)及新興產(chǎn)品概述 5512次閱讀
- 整理了所有數(shù)據(jù)專家都應(yīng)該會(huì)的七款Python工具 4251次閱讀
- 無(wú)線充電的三大誤區(qū) 3103次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多