游戏开发随想之2D游戏架构
游戲開發(fā)中的幾個(gè)要素
??一、游戲首要的要素便是角色,如果將角色歸納為一個(gè)MVC架構(gòu)的話:
??????? 1、模型便是角色的位置信息,屬性之類的。
????????2、視圖則是一些圖片集合,有規(guī)則的組合它們,將它們分成若干組,那么每一組就是一個(gè)動(dòng)作。每個(gè)組有若干張圖片,一般的它們通過時(shí)間來決定應(yīng)該怎樣呈現(xiàn)這個(gè)視圖(亦即顯示哪張圖片)。可以設(shè)置動(dòng)作,讓這個(gè)視圖有不同的行為。一般的,我們稱這個(gè)視圖為精靈(Sprite),精靈將在另一篇文章中描述。
????????3、控制器就是用來設(shè)置角色動(dòng)作的。它有可能是對(duì)精靈的一個(gè)簡(jiǎn)單的代理,假如控制器設(shè)置角色狀態(tài)為行走,那么可能控制器只是簡(jiǎn)單的調(diào)用了精靈的setAction(ActionRun)方法,并且有精靈自己去設(shè)置速度。???? 當(dāng)然也可以這樣去實(shí)現(xiàn)控制器,一方面它通過代理設(shè)置精靈的動(dòng)作,同時(shí)也去修改對(duì)象的物理屬性。控制器可能由玩家來操作,也有可能由NPC的A.I.進(jìn)行操作,也有可能來自網(wǎng)絡(luò)。
? 二、接下去比較重要的便是地圖模塊。對(duì)于地圖,目前只把它當(dāng)成一個(gè)MV結(jié)構(gòu)。
??????? 1、模型層:地圖一般有各種碰撞線或者每個(gè)塊有不同的狀態(tài)(比如能否通過該塊),所以這些狀態(tài)都應(yīng)該保存在地圖的模型中。
????????2、視圖層:地圖一般通過外部的編輯工具來設(shè)計(jì)的。一般的,地圖很少在游戲過程中變動(dòng),所以將它直接保存在內(nèi)存中的一張圖片中。對(duì)于地圖怎么創(chuàng)建的,將在另一篇文章描述。
? 三、物理引擎。
????????物理引擎一般對(duì)對(duì)象進(jìn)行碰撞檢測(cè),以及改變對(duì)象的運(yùn)動(dòng)狀態(tài)。對(duì)于一些簡(jiǎn)單的游戲,只要設(shè)計(jì)簡(jiǎn)單的物理引擎就可以了。對(duì)于對(duì)物理效果要求比較高的游戲,最好套用現(xiàn)成的比較成熟的引擎。
? 四、用戶界面元素。
??????? 這個(gè)模塊提供各種窗口,按鈕來供交互。
? 五、游戲的“Holder ”:
??????? 它是游戲的持有者,它持有幾乎所用的游戲?qū)ο?#xff0c;它維護(hù)游戲的正常運(yùn)作。它與資源管理器協(xié)同完成游戲?qū)ο?#xff08;比如窗口,角色,地圖)的創(chuàng)建,以及釋放資源。它定時(shí)驅(qū)動(dòng)渲染線程,解析角色的動(dòng)作,我這里它組合有物理引擎。
? 六、游戲的資源管理器。
?????????游戲運(yùn)行過程中需要大量的圖片相關(guān)的資源。而且很多游戲中,一個(gè)相同造型的角色會(huì)有好幾份拷貝,如果沒有進(jìn)行良好的設(shè)計(jì)的話,這些角色就會(huì)持有不同的圖片資源的拷貝。因此特意設(shè)計(jì)了資源管理器,GameHolder創(chuàng)建對(duì)象時(shí),都會(huì)向資源管理器申請(qǐng)資源,如果該資源已經(jīng)加載到內(nèi)存中了,就會(huì)返回資源的引用;如果沒有,就會(huì)載入該資源。
轉(zhuǎn)載于:https://blog.51cto.com/mooncity/1001833
總結(jié)
以上是生活随笔為你收集整理的游戏开发随想之2D游戏架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [github]使用——上传工程到新建的
- 下一篇: 《面向模式的软件体系结构2-用于并发和网