如何從零開始做一款遊戲?

不利用現在市場上的引擎,如unity等,從Directx或者Opengl開始。


遊戲設計的我就不講了,只講開發的部門。首先素材要準備好,但是素材是什麼內容,其實取決於你的程序怎麼寫。這兩個東西互相制約,你很難先做一個再做另一個。

然後一個遊戲執行的過程,大概就是在做下面的事情:

  • 載入UI
  • 載入場景
  • AI跟玩家互動
  • 結果判定,亮瞎好友

所以顯然你應該做下面的事情

  • 把OpenGL按照DirectX的樣子封裝一遍,這樣你就可以在OpenGL和DirectX之間切換了。因為除了opengl以外其他圖形引擎基本都在抄DirectX。這對於你以後兼容更多的圖形引擎有無窮的好處。
  • 場景管理演算法,總的來說就是根據玩家的視野來決定,什麼肯定最終不會畫出來的東西不要浪費時間送給顯卡。
  • LOD,譬如說遠處的東西用更簡單的模型代替,或者乾脆不畫。
  • (骨骼)動畫。
  • UI庫。
  • 腳本引擎,用來運行AI,或者附著在地圖上的程序,用來驅動物體、物品的動作和劇情等。
  • 聲音引擎,最簡單的譬如說3D環繞效果。

這些基本的東西做好之後,應該就可以硬擼出一個遊戲了。等你熟悉了之後,再考慮其他更高層次的事情。


1.從頭開發一款3A級的遊戲及遊戲引擎,引擎跨4個平台(Windows、Mac、Linux、樹梅派),從頭開始,講解每一行代碼:

https://www.youtube.com/user/handmadeheroarchive

2.《時空幻境》開發者的遊戲開發教學視頻


拿個以前的回答:

winform三國志:可以用C#編程語言做哪些好玩的東西? - 沐漁的回答 - 知乎

參考rpg maker 做的

核心內容是用dx來寫聲音,圖像用gdi的話效率慢了,準備有空翻新一下,用dx繪圖,效率杠杠的。


非專業人士經常把電子遊戲開發中需要用到的技術和遊戲本身對等,這是一種錯誤的認識。

你的問題中提到了幾個電子遊戲中常用的技術術語,所以我猜你是想學習一套完整的開發電子遊戲的技術,那麼一些高票答案已經可以引導你走上這條路了。

如果你希望掌握電子遊戲開發中的技術,以便於製作你設計好的遊戲,那麼我認為你應當直接學習unity,unreal這類遊戲引擎,獨立遊戲開發者,都大量使用現有的高效技術(遊戲引擎,開源框架等),以減少耗費在技術上的時間,而把主要精力放在遊戲內容的製作上。


簡單描述一下過程。

  1. 學習DirectX或者OpenGL
  2. 先畫三角形,添加顏色
  3. 畫矩形,多邊形,線段,點等各種圖形,控制顏色
  4. 了解著色器語法和功能實現
  5. 給圖形添加紋理,了解紋理參數設置
  6. 了解圖片數據格式,添加圖片數據讀取
  7. 繪製任意圖片,控制顏色和透明度
  8. 控制圖形旋轉,平移,縮放
  9. 了解攝像機原理和鏡頭控制
  10. 學習控制頂點實現網格
  11. 找一款骨骼動畫編輯器,了解導出數據格式
  12. 用網格實現骨骼動畫運行時
  13. 實現簡單的碰撞檢測
  14. 設備的輸入輸出交互控制
  15. 控制骨骼動畫交互
  16. 資源管理
  17. 場景管理
  18. 實現遊戲邏輯
  19. 數據存儲讀取
  20. 界面
  21. 聲音
  22. 打包自測
  23. 完成

中間涉及到很多代碼的封裝,抽象,重構,每一步都有很多選擇,選一個實現,做下去。

自研遊戲引擎 + 製作遊戲 + 跨平台發布,全套開源 scottcgi/Mojoc


基本上大部分都在教題主怎麼寫遊戲引擎或者說怎麼重構一個類似unity的東西

估計題主也不是很清楚做遊戲和做引擎的區別

首先題主問題描述很明顯是想從零開始做3D遊戲,不過如果題主沒有任何遊戲開發經驗,個人推薦先從2D遊戲開始做,了解整個製作周期後再開始轉3D,時間不是很長。

至於用什麼軟體,RPG Maker作為入門就很好,下面簡單描述一下要做什麼

  • 第一步就是思考IP,就是所謂的要做什麼內容,核心玩法是什麼,如果有劇情最好能有個簡單的劇本
  • 第二部就是思考具體的一些細節,這時候你需要確定每個場景或者說每個人物的外觀balabala設定,這個階段你就要取找資源(這一步是最重要的,做遊戲基本就是處理資源),資源可能包括圖片啊,本文啊,音頻啊之類
  • 第三步就是做了,這個時候你可能就要添加一些腳本或者一些交互,RPG Maker都很簡單的,並不複雜,應該不需要什麼專業基礎

等到你堅持做完,可以說已經是從零做出一款遊戲了。不要小瞧這個流程,《To the moon》這樣傑出的作品就是這麼誕生的。

接下來就可以轉3D了

從Directx或者Opengl開始工作量可以說是巨大的,不過比較底層的兩個流程是一定要跑通的

  • 渲染流程,也就是能再屏幕中畫出基本的圖元,同時可以載入紋理
  • 動畫流程,這個從零學比較困難,弄懂bone、motion和mesh之間的關係,能夠實現skin的一整套流程,基礎就夠用了

這是最基本的流程,這樣你就可以在場景中載入一個地板和一個運動的人物角色

接下來你要思考做什麼。玩法是什麼,場景有些啥,資源要什麼,交互怎能做,UI是什麼。。。等等等等,然後一點點去完善的你的整個代碼。

其中可能加入blend tree,sky box,tessellation等等新的技術

可能需要不斷的重構代碼,從零學這肯定是必然的過程

等資源一定規模後,還可能需要開始寫一些資源管理的類,甚至是內存分配等功能(這才是做遊戲中的最重要的功能)

最後你會發現還是unity最好用

從零做遊戲 ≠ 從零寫引擎,從OGL和DX開始寫的那是引擎不是遊戲


日本早期的遊戲應該都是這種,不利用引擎,從頭編寫。在Github找一些開源項目吧,應該很多


抖個機靈,跟朋友在小學的時候做的遊戲,因為題材混雜(武俠啊魔法啊口袋啊各種都玩過)我後來就加了個總稱叫紙上談兵系列。

這是_(:3 」∠ )_地圖

這是_(:3 」∠ )_商店

_(:3 」∠ )_後面戰鬥還有人物界面就不更了吧。橡皮塗的又臟又亂的懶的拍了~

就醬。

ps :圖片里的畫是初中改進版==,小學的畫風可能更渣,不過還是小學人多好玩。唔,物是人非~


看doom源碼


"從Directx或者Opengl開始"起點有誤。

從零開始做一款遊戲,首先要明確的是你的遊戲要達成的目標是什麼。

明確目標後著手設計遊戲內容,如角色、場景、道具、角色行為等。

再之後才考慮進入到編程階段。

推薦一本書,雖然是講在線遊戲的開發,對於單機遊戲也差不多適用

《大型多人在線遊戲開發(附光碟)》(亞歷山大(ThorAlexander))【摘要 書評 試讀】- 京東圖書


從改demo開始啊。

學習一件事首先就是模仿,學會流程,再加上自己的思想和設計,差不多就可以出師了。

遊戲設計課程的第一個作業,ogre 兩個demo合到一起。

別問我ogre 是什麼。。。那是一個不怎麼被工業界用到的引擎。


試試這個:

Microsoft/DirectX-Graphics-Samples

完整的渲染流程,輸入控制,甚至有示例。

可以把玩一下,用這個來學習DX12也是不錯的選擇。


從Directx或者Opengl開始,可以有效的鍛煉能力,但很難做出一款好遊戲

我認為題主對起點的理解有點偏差,無論哪種開發都是從分析和設計開始的

先找身邊有策劃能力朋友或者自己做一個企劃,擴展成完整的產品設計,然後才選擇實現方案

coding固然重要,但應當先著眼於難以提升的短板,就是代碼以外的部分

不過我並沒有獨立開發經驗,以上只是紙上談兵而已,看完笑笑就好


遊戲碼農怒答一發,本人遊戲從業時間很早,經歷過一個完整遊戲引擎加大型遊戲的開發,應該可以簡單回答一下這個問題。

首先要強調遊戲引擎和遊戲的差別,大而全的通用遊戲引擎如Unity、Unreal Engine、CryEngine的目的是儘可能包含所有遊戲類型都可能用到的功能,所以龐大,但特定類型和策劃的遊戲不可能用到它們所提供的所有功能,也不可能只用到它們已提供的功能,因此從零做遊戲不等於從零做一個大而全的引擎。

不同類型的遊戲差別非常的大,幾乎可以說是不同的程序,因此在動手之前,最好心裡想清楚目標遊戲的以下幾個方面:

1、遊戲類型。FPS、MMORPG、RTS等,可以說遊戲類型決定了接下來大部分技術的選擇。比如,FPS遊戲幾乎大部分都是3D遊戲,需要設計3D引擎,而MMO可以是2D的,則需要設計2D引擎,早期的很多RPG遊戲甚至只有文字界面,但它文字Mud也是遊戲 。

2、圖形界面。主流就是3D、2D。如果是3D則需要根據遊戲表現需要設計渲染管線。2D很多也是通過3D介面實現的,不過材質要簡單很多。

3、運行平台。是Windows、IOS、Android、PS4還是Web,平台決定了你最底層介面界面,如3D API。如果從零開始做遊戲,強烈建議剛開始只選擇一種發行平台,遊戲完成後再port到其他平台,不要將熱情和精力過多浪費在非核心點上。

4、單機or網路。單機遊戲和網路遊戲差別是很大的,遊戲的安全性兼容性都不一樣,工作量也差別很大。如果是單機自然也不需要網路模塊,安全檢驗,伺服器同步,賬號管理等。

以上四點選擇決定了遊戲技術複雜度和開發模式。

假設你選擇了最大眾的配置:一個3D第一人稱設計的Windows平台網路遊戲,我們來看如何開始著手。鑒於題主說從零開始,那我就假設可用的現成軟體只有C++編譯器和Runtime,DirectX介面和Windows操作系統API。

首先,你需要編寫六個最基本的組件,數學、內存管理、圖形、物理、網路和腳本模塊。音效,文件系統等非核心組件我就不說了。

1、數學模塊最基本,圖形物理都得用,要包含基本的向量矩陣幾何等運算。

2、圖形模塊需要實現你遊戲中所有的材質和效果,如常見的金屬、水、皮膚、布料等,還有動畫,一般包括骨骼動畫和蒙皮動畫,如果高級點還需要實現一些程序動畫。還有一些特效系統,太多了,不一一列舉。

3、物理則包含基本的碰撞檢測,剛體運動,如果有追求還可以實現簡單柔體物理給布料等使用。FPS遊戲中物理一般還包含布偶和IK。

4、網路模塊,數據打包解包,時間同步等。

5、腳本模塊,一個編譯器,一個虛擬機,一個調試,不想自己寫就用現成的,如Lua等。腳本一般用來寫GamePlay。

然後就是上層模塊GamePlay,一般用腳本實現,主要包含消息系統,行為樹,狀態機,還有一些AI模塊,如觸發器。

最後是輸入和UI,懶得打了,手機敲字好累,希望能有所幫助。


要不然看看我做的掃雷?我這種連語言都是剛學的,算的上從零開始吧。哈哈

https://zhuanlan.zhihu.com/p/27399426?utm_source=com.miui.notesutm_medium=social


你是要做遊戲還是想了解怎樣做到你說的?

如果是前者就不用看下去了,你既然問了這樣的問題,很大幾率堅持不下去的。後者可以往下看。

我們從遊戲完整的項目來分析。

一個遊戲需要下面幾點或更多:

1.渲染模塊

2.物理模塊

3.音效模塊

4.腳本管理模塊

5.Asset以及其他模塊

從1來說,又分為多種圖形API,DirectX、OpenGL/ES、Vulkan等等,首先你要給這些API的調用封裝一層常用的組合,也就是函數。還有一大坨RHI。為了復用,最好提供一個渲染引擎。

從2來說,如果你發現自己寫物理模塊,起碼你要懂力學、數學等。如果不懂,就選擇Havok、PhysX、Bullet等引擎做集成封裝。

從3來說,如果你要寫音效引擎,放棄吧,涉及到很多很多專業知識。老老實實選擇FFMOD之類的集成,或者使用老傢伙OpenAL。

從4來說,你還要了解Lua或其他語言(C#、松鼠等等)如何設計與底層代碼的交互,這樣才能免去編譯等待的過程。

從5來說,沒法說,裡面超級多個樣亂七八糟的功能以及系統,這些東西是一個龐大的體力活。

然後需要一個策劃案,需要美術。

接下來,不是技術上能解決的問題,從業這麼久我一直遇到的問題。

沒錯,從業人員很多,能夠做好自己本分工作的,能夠跟得上節奏的人員太少。導致了各種各樣尿性的問題。策劃人員的短見、程序人員

的能力、美術人員功底的質量、運營人員的不專業、產品經理的蝦扯蛋,這些人員,都是一個遊戲項目的組成部分。

所以,說了那麼多就是為了讓你放棄做遊戲。


你應該一開始就假設你有無窮的技術力,然後看看你和小夥伴能自己出原畫動畫模型場景文案和音樂不,如果不能學那些引擎作甚。。。就業另當別論


@Milo Yip 《遊戲引擎架構》

你需要先寫低階引擎系統(內存池、底層操作、基本繪製),然後再寫高階系統(粒子、腳本、骨骼、物理)


看你要寫什麼樣的遊戲,簡單的可以,3A級幾乎不可能。真要寫那就從引擎開始寫吧,有本書叫 引擎架構設計。去看一下。


完全從零開始,可以試著自己寫圖形API,這樣你對底層的圖形學部分會有深刻的認識,記得以前在知乎看到過有人自己寫API實現的,包過光柵化用純軟體實現,還有狀態機啥的。


推薦閱讀:

有哪些好玩有趣的安卓遊戲?
暗黑破壞神 3 有哪些有意思的裝備或者道具?
為什麼國產遊戲目前沒有類似《巫師3》或《刺客信條》那種的高自由度武俠/仙俠題材動作遊戲?
20歲的姑娘,想玩DOTA,是玩DotA1好還是DOTA2?
情懷是不是阻礙國產單機發展的一個重要因素?

TAG:遊戲 | 遊戲開發 | 計算機 | 遊戲引擎 |