如何從零開始做一款遊戲?
不利用現在市場上的引擎,如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這類遊戲引擎,獨立遊戲開發者,都大量使用現有的高效技術(遊戲引擎,開源框架等),以減少耗費在技術上的時間,而把主要精力放在遊戲內容的製作上。簡單描述一下過程。
- 學習DirectX或者OpenGL
- 先畫三角形,添加顏色
- 畫矩形,多邊形,線段,點等各種圖形,控制顏色
- 了解著色器語法和功能實現
- 給圖形添加紋理,了解紋理參數設置
- 了解圖片數據格式,添加圖片數據讀取
- 繪製任意圖片,控制顏色和透明度
- 控制圖形旋轉,平移,縮放
- 了解攝像機原理和鏡頭控制
- 學習控制頂點實現網格
- 找一款骨骼動畫編輯器,了解導出數據格式
- 用網格實現骨骼動畫運行時
- 實現簡單的碰撞檢測
- 設備的輸入輸出交互控制
- 控制骨骼動畫交互
- 資源管理
- 場景管理
- 實現遊戲邏輯
- 數據存儲讀取
- 界面
- 聲音
- 打包自測
- 完成
中間涉及到很多代碼的封裝,抽象,重構,每一步都有很多選擇,選一個實現,做下去。
自研遊戲引擎 + 製作遊戲 + 跨平台發布,全套開源 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?
※情懷是不是阻礙國產單機發展的一個重要因素?