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