游戏开发流程-微信小游戏(含源码)
我們平時玩過各種各樣的游戲,那么一款游戲是如何開發出來的呢?流程是怎樣的呢?如何從零基礎來開發一款屬于自己的游戲呢?對于新手來說,不知從何下手,也沒有系統的資料來參考。萬事開頭難,很多人就是這樣放棄了,很可惜。我也是一個新手,但是我很想體驗游戲開發的整個流程,所以,一切從零開始,也饒了很多彎路,但是一步一步走下來,你會體會到其中的樂趣,過程最重要。
今天,我就簡單分享一下做游戲的流程,如有描述不當的地方,還望指正。
我的小游戲源碼分享:https://github.com/starbxx/Game
對于新手來說,想要做一款游戲,要從幾個方面入手;
1. 游戲類型
首先,要確定游戲的類型,是要做HTML游戲,還是手游,還是微信小游戲,這里,我們選擇的是微信小游戲,雖然稱之為“小游戲”,可內容和技術含量并不小哦!
微信小游戲屬于微信小程序的一個類別,需要用官方的web開發者工具來開發,web開發者工具也很容易上手,主界面分為模擬器,編輯器和調試器。對于新手來說有官方示例可以參考,示例是一個2D的飛機大戰demo,通過查看源碼,可以很快弄清楚每個模塊是做什么用的。
2.游戲定位和引擎選擇
當我們確定做一款微信小游戲的時候,其次要確定的就是游戲的主題,以及是做2D的還是3D的。我們的游戲主題是基于校園的“撿跑”,excuse me??什么叫“撿跑”??“撿跑”是我們拼湊的一個詞,實際上是酷跑的一種,酷跑是角色在固定路線上奔跑,并且收集路上的金幣,最后根據金幣來排名。那么,我們的“撿跑”,也是奔跑,但不是收集金幣,而是收集垃圾!哈哈哈哈哈哈!對,沒錯,是收集垃圾!最近垃圾分類不是很火嗎?而且我們的游戲場景是基于我們的校園環境來設計的,我們的學校真的很美!!想一想,在學校奔跑和收集垃圾是不是很有趣呢?所以我們游戲的主題就是“愛護校園,保護環境”。
既然要打造和校園環境一樣的游戲場景,那么2D怎么能滿足我們的視覺要求呢?所以我們將游戲定位于3D小游戲。
既然要做一款3D小游戲,那對于新手來說,游戲引擎是少不了的,因為引擎屏蔽了一些底層的操作,讓你的開發更便捷。所以,我們就去查找各種引擎的資料,(圖來自于網絡)
通過對比,支持3D游戲的引擎有three.js、layabox,但是只有layabox完成對微信小游戲的適配,也就是說,使用layabox開發游戲,可以直接發布成微信小游戲,不需要開發者去做適配工作,這對于新手來說很友好。所以我們選擇了layabox。
3.游戲制作流程
定位好游戲,選好引擎后,我們該干什么??這里我們饒了很多的彎路,希望大家可以節省時間。
(1)了解游戲的開發流程。
對于一個新手來說,首先要大概了解游戲的開發流程。對于一款3D游戲來說(其他類似),開發分為幾個模塊:
- 游戲策劃。在開始開發之前,要寫好游戲策劃,包括游戲的玩法、規則、關卡設計、角色設計等等,各個細節都要寫清楚,寫詳細。一份好的游戲策劃可以節約開發時間。
- 美術設計。要想做一款好的游戲,美術是少不了的。唯美的畫面才能給人視覺上的沖擊。美術設計主要是設計游戲的場景、人物demo、道具以及游戲UI等。
- 技術美術。美術設計重點在設計,那么技術美術就是要利用相關軟件來實現這些設計,在計算機上制作出完整的模型。
- 動畫設計。對于3D游戲來說,模型少不了骨骼動畫,因此還需要制作一些模型動畫。
- 主程序。編寫游戲框架和邏輯。
- 前端。主要負責編寫前端程序,與用戶直接交互的游戲scene。
- 后端。主要負責編寫后端程序,保存用戶的游戲數據。
- 測試。分為測試和測試開發,測試主要是黑盒測試,可以邀請一些外人來玩游戲demo,提出意見。測試開發是白盒測試,遇見BUG自行修改。
雖然一款游戲的開發流程分為多個模塊,但是都可以并行的,像我們的團隊其實就只有兩個人,但是明確的分工能夠節約很多的時間。
(2)熟悉和學習相關軟件。
熟悉相關軟件真的太重要了!!而且要了解相關軟件的兼容性以及插件的使用。在我們的開發中,用到了很多軟件。
- web開發者工具。用于微信小游戲的開發,調試,真機調試,以及最終的發布。
- layaAir。layabox出的一款IDE,這款IDE內嵌LAYABOX引擎,可視化開發,一鍵發布微信小游戲,兼容三種不同的語言(AS,JS,TS),2D、3D混合開發,很適合新手。但是IDE的文檔不是很完善、有些地方經常出BUG,需要去社區找答案,新手需要花點時間熟悉。
- unity3D。layaAir雖然提供了可視化開發,但是并不適合制作游戲的元素,比如游戲場景、人物模型、道具模型等,需要在別的軟件制作好,再導入layaAir。layaAir提供了兼容unity3D的插件,可以一鍵導入,包括模型網絡、場景文件、光照貼圖等等。所以我們需要在unity3D里面制作好場景,使用插件導出。這里有一個問題,同一個場景在unity3D和layaAir里面的顏色表現可能不太一樣,導出的時候需要選擇laya的材質,并且最好使用最新的插件。
- 3Dmax。unity3D雖然可以制作場景,但是設計一些模型的細節的時候,不好掌控。3D模型需要有專門的制作軟件,目前主流的有maya和3Dmax,那么我們選擇的是3Dmax,maya偏向于影視動畫的制作。3Dmax可用于制作各種3D模型,還可以制作骨骼動畫。蒙皮:在帶有動畫的骨骼上蒙上角色皮囊的過程叫蒙皮。3Dmax可將制作好的蒙皮角色直接導入unity使用。
- Photoshop 以及 paint3D。制作貼圖。3Dmax中制作的3D模型,需要賦予貼圖來讓它表現出不同的紋理,貼圖就是將一張圖片貼在模型的表面。那么貼圖需要自己去畫,可以用Photoshop或者paint3D自己設計貼圖。
- Crazybump。在給模型貼貼圖的時候,如果想要有立體感和凹凸感,就需要使用法線貼圖。Crazybump是一款可以制作法線貼圖的軟件。
- TileMap 。游戲中,如果使用到地圖,還需要地圖制作軟件,TileMap可以實現。
好了,我們的小游戲使用到的工具主要的就是這些,希望新手寶寶們可以快速找到要使用的工具,不像開始的我們一樣迷茫。。。
(3)明確的分工。
開發游戲,明確的分工真的很重要,特別是人手不夠用時,一個人可以挑兩個扁擔,哈哈哈哈哈。
| 1 | 游戲靈感提出 | ||
| 2 | 游戲策劃編寫 | ||
| 3 | 場景實地考察 | ||
| 4 | 3D模型設計 | ||
| 5 | 骨骼動畫制作 | ||
| 6 | 2D UI設計 | ||
| 7 | 貼圖制作 | ||
| 8 | 3D場景建模 | ||
| 9 | 游戲框架編寫 | ||
| 10 | 邏輯編寫 | ||
| 11 | 角色滑動算法設計 | ||
| 12 | 道路旋轉算法設計 | ||
| 13 | 攝像機跟隨算法設計 | ||
| 14 | 障礙物加載算法設計 | ||
| 15 | 測試 | ||
| 16 | ………… | ………… |
(4)先制作一個簡單的demo,web工具跑起來,再去優化。
當游戲有完整的思路,并且寫好策劃后,就可以動手了!一開始并不需要好看的模型和場景,只要用一些簡單的場景來代替,完整的實現一下游戲的整體邏輯,然后發布成微信小游戲,使用真機調試一下,這樣就可以熟悉整個游戲開發的流程,對于游戲中的場景和模型,只要寫好接口,后期直接替換就行了。
(5)真機調試,設置玩家權限。
由于最后要發布成微信小游戲,最終的玩家是在手機上體驗的,所以真機調試很重要,web開發者工具的模擬器雖然是模擬手機,但有些時候會出現意想不到的BUG ,而且不同的手機型號還需要做適配,所以需要管理員在后臺設置一些玩家權限,邀請一些人來體驗游戲。游戲未發布的時候可以設置體驗版,但是需要管理員設置權限。
(6)優化。
優化!優化!優化!重要的事情說三遍。
小游戲的開發局限性比較大,游戲的demo包整體大小不能超過4M,對于2D游戲這不算什么,一般都可以壓縮到4M以內,但是!!對3D游戲來說,特別是邏輯還挺復雜的3D游戲,幾個模型的大小估計就超過4M了,別說加上貼圖和代碼包了。所以!優化很重要!
優化可以從幾個方面入手:
- 優化3D模型大小。3D模型是以文件的形式存放,文件中記錄著點數和面數。所以我們在制作3D模型的時候,盡量使用最少的點數和面數,這樣可以減少加載和渲染的時間,還可以減少包的大小。
- 貼圖壓縮。一般來說貼圖的大小必須是256256,512512,10241024.。。等,那么對于場景中的一些小的道具,比如吸鐵石,就不需要用10241024的圖或者更大的圖,可以使用相關工具將圖片的大小調的很小,在體積和視覺上做一個折中。
- 圖集打包。UI界面中的一些元素圖片、按鈕圖片,不用每個都存為一張單獨的圖,可以整體打包成一個圖集,加載的時候一起加載,可以節約空間。
- 代碼冗余。對于一些需要重復使用的代碼塊,比如觸發器、碰撞器等,可以生成一個相應的組件,需要的時候掛在物體上,不需要的時候移除。
- 模型,貼圖循環利用。對于一些重復使用的模型或者貼圖,在內存中保留一個副本就行了,需要使用多個的時候clone就好了。
如果!!以上優化之后,還是超過4M,那么就要考慮網絡動態加載和分包了。分包對于新手來說不太友好,所以能動態加載的盡量選擇動態加載。
網絡動態加載是指將一些資源包放在服務器上,游戲運行的時候通過URL動態下載到本地,但是注意JS文件是不能動態加載的!!layabox是通過設置URL.basePath來實現資源的動態加載的,但是有一個問題,微信小游戲不支持http,只支持https,所以在配置服務器的時候需要相應的SSL證書。
好了!啰嗦了半天,只是希望新手胖友們可以少走些彎路,同時,放出我們的demo供大家參考,希望一起進步!、
(我們的demo是原創設計,僅供學習 !)
部分圖片:
游戲源碼(僅供學習):https://github.com/starbxx/Game
總結
以上是生活随笔為你收集整理的游戏开发流程-微信小游戏(含源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恩智浦智能车摄像头循迹部分
- 下一篇: ABB机械臂手眼标定