簡單的2D游戲開發(fā)經(jīng)驗分享
前言
? ? ??本文主要介紹的是我在參加學校工作室考核(是的)時開發(fā)一個簡單的2D橫板跳躍游戲時的一些思路和開發(fā)記錄,如果你對游戲開發(fā)比較感興趣并且想成為一個游戲開發(fā)者的話,這篇文章或許對你會有一些幫助!如果你是一個游戲開發(fā)者的話歡迎來和我交流:D!
1、引擎選擇?
? ? ? ?當決定開發(fā)一款游戲的時候,第一步要考慮的是游戲引擎的選擇。所以首先要問自己一個問題:我需要用什么游戲引擎來開發(fā)游戲?相對主流的兩款游戲引擎分別是Unity和Unreal Engine4(UE4),二者各有利弊,比如Unity的3D渲染效果不如UE4,但Unity有許多插件可以使用,開發(fā)效率會更高。

? ? ? ??由于本文介紹的是2D游戲的開發(fā),所以我個人覺得Unity是一個更優(yōu)的選擇(其實是因為我們學校工作室考核要求用Unity)。但是說到Unity,你的第一反應可能是胖鼠的某首電音神曲,而對這個作為游戲引擎的這個單詞感到陌生。為了讓你對Unity產(chǎn)生一點熟悉感,我來舉幾個用Unity開發(fā)的游戲的例子。
? ? ? ?許多優(yōu)秀的2D游戲都是用Unity開發(fā),比如DEEMO(古樹旋律)、Plague Inc.(瘟疫公司)、Hollow Knight(空洞騎士)、Gris、Ori and the Will of the Wisps(精靈與螢火意志)、Lobotomy Corporation(腦葉公司)等等。除此之外,一些相對輕量的3D游戲也可以考慮使用Unity開發(fā),比如Monument Valley(紀念碑谷)、The ROOM(謎室)、Outer Wilds(星際拓荒)、The Almost Gone(憶落謎境)、Kerbal Space Program(坎巴拉太空計劃)等等。?
(上面舉例的游戲都很好玩XD!感興趣可以玩玩看。?
(明日方舟也是用Unity開發(fā)的?。▏L試抓人入教 )


? ? ??那么,選擇好了游戲引擎接下來應該怎么做呢?當然是從官網(wǎng)上下載Unity(廢話)!下載和安裝Unity是完全免費的,建議在下載時選擇“從Hub下載”(p4中的綠色選項)。Unity Hub非常便于管理項目和許可證(有的時候打不開項目是因為許可證過期,手動激活即可),也可以在Hub中選擇安裝多個不同版本的Unity自由切換。但是注意,更高級的編輯器版本中的一些功能可能無法在舊的編輯器上使用。


? ? ? ??在安裝好Unity之后,還有一個很重要的軟件需要安裝,那就是Visual Studio(VS)。VS是用來寫代碼的,因為做一個游戲肯定要通過寫腳本來實現(xiàn)各種炫酷的功能啦。Unity的腳本編輯語言可以選擇C#或者JS,這里建議選擇C#(原因會在下文中解釋)。如果本身有一定的JAVA編程基礎的話是可以比較快上手C#的,因為二者在語法上有點像。
? ? ? ?到這里,游戲引擎的選擇和基本設置就完成了,我們可以進入下一個步驟——開發(fā)了。
2、開發(fā)流程?
? ? ? ?因為要做的是橫板跳躍游戲,所以游戲的必備的兩個元素已經(jīng)出來了:地圖系統(tǒng)和角色操控系統(tǒng)。在這個基礎上開始思考接下來我們需要加入一些什么元素呢?我們可以給游戲加上故事和驚險刺激的戰(zhàn)斗,這一切都基于“你想做一個什么樣的游戲”。
? ? ? ?我的大體思路是:主人公與幾個NPC對話之后在商店里購買了武器,接下來用這武器打敗了游戲里的大boss(可以吐槽我確實沒有什么創(chuàng)新能力,這什么劇情...)。這個思路里面就包含了對話系統(tǒng)、商店系統(tǒng)、物品系統(tǒng)和戰(zhàn)斗系統(tǒng)這么幾個要實現(xiàn)的模塊。于是,我們從思路中明確了我們接下來要實現(xiàn)什么樣的功能,可以開始著手寫代碼了。?
? ? ? ??關于怎么寫代碼這一塊:實現(xiàn)一個功能的方式有很多種,但是我們要盡量選擇最優(yōu)的那一種方式,所以在游戲開發(fā)中引入面向對象編程的思想是非常重要的。比如說可以裝進背包格子的物品有一些公有的方法(獲取名字、獲取用途說明等等),我們可以用一個Iitem接口來存放這些公有的方法。盡量多使用接口或者采用合適的設計模式來編程。?
? ? ? ??之后需要美術來幫忙。如果自己不會畫畫的話,Unity的asset store里有很多免費的資源可以用。不過!還是和身邊的大觸們搞好關系吧(癱瘓

3、技術困難?
? ? ? ??寫代碼的時候遇到技術難題是很正常的,俗話說代碼十分鐘debug兩小時不無道理。那么寫腳本的時候遇到難題又沒有人能問的時候怎么辦呢?百度當然非常不錯,但是百度廣告太多,而且親測上面有的方法并不是很棒(我當時找控制人物行走的腳本,測試了幾個都有非常大的問題)。
? ? ? ??然后最重要的一點是:在網(wǎng)絡上搜索解決方案的時候我們能查到的例子基本都是用C#寫的,這也是為什么在上文中建議選擇C#為腳本語言而不是JS的原因。
推薦一個好一些的網(wǎng)站(或者直接在谷歌上搜索也可以): Stack Overflow:https://stackoverflow.com/?
? ? ? ??此外,你也可以在油管上試試看能不能找到答案。介紹一些不錯的游戲開發(fā)相關的油管主:
Brackeys(涵蓋了非常多內(nèi)容)
Blackthornprod(內(nèi)容比上面這位少一些,但都挺實用的)
Code Monkey(有很多關于C#編程的內(nèi)容)?
Telegram上有一個挺活躍的Unity技術交流群,你可以在上面問任何問題(僅允許使用英文)。TG鏈接:t.me/unityThreeD?

給不能翻墻的朋友:
b站- M_Studio: https://space.bilibili.com/370283072?from=search&seid=10106931170352874846 Siki
學院: http://www.sikiedu.com/ Unit
官方手冊: https://docs.unity3d.com/cn/2018.4/Manual/index.html Unity
官方腳本文檔: 英文:https://docs.unity3d.com/ScriptReference/ 中文:https://docs.unity3d.com/cn/2018.4/ScriptReference/index.html UnityList(有很多開源項目): https://unitylist.com/ C#官方文檔: https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??作者:時光
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?審核:円島

APC編輯部科普組
加入我們:956098947
科普平臺:格物社·科普平臺
QQ群:605923025