999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D在基本游戲框架下客戶端研究與實現

2015-09-27 02:33:53梁成
現代計算機 2015年25期
關鍵詞:動畫游戲管理

梁成

(西華大學計算機與軟件工程學院,成都 610039)

基于Unity3D在基本游戲框架下客戶端研究與實現

梁成

(西華大學計算機與軟件工程學院,成都610039)

0 引言

隨著信息技術的不斷發展,人們對于娛樂項目的要求越來越挑剔。在計算機硬件技術快速發展下,游戲作為一種新興娛樂行業,正經歷著蓬勃發展,在良好的人機交互下給玩家帶來的越來越愉悅的體驗。同時游戲也在商業,教育等領域日益影響著人們的社會生活。圖1所示數據為網易游戲數據控對近年來游戲在商業上的表現進行的統計。

圖1 中國大陸游戲市場總量和增長率

從大多數游戲研發來看,大體上要經歷以下三個階段,其階段如圖2所示。

在游戲策劃階段,擁有新穎的游戲想法決定是否在市場可以占有一席之地。

在游戲制作階段,良好的人機交互和有趣的玩法是增加玩家數的法寶。

最后一個階段是投放市場,宣傳是關鍵。

圖2 一款游戲經歷的過程

目前,國內外針對Unity3D引擎在游戲開發中的技術進行不同程度的研究,2012年王樹斌[1]簡單介紹了Unity開發游戲流程和技術,2014年張敏[2]通過Unity實現了一個保齡球游戲,并沒有對腳本進行有效的組織和管理。本文主要探討的是游戲制作階段,通過學習Unity游戲引擎的基礎上,在基本游戲框架模型和腳本通用管理方式下,實現了一個游戲客戶端。

1 Unity介紹

Unity是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。圖3所示為Unity3D平臺的界面。

圖3 Unity3D平臺界面

Unity3D一款跨多平臺的游戲引擎,目前最新版本的Unity已經支持包括Android、iOS、Samsung TV等在內的14個平臺。除了多平臺以及簡潔便用的界面特性之外,Unity3D還自帶了豐富的資源,如CharacterController、地形系統、屬性查看器、材質編輯器、天空盒,以及常用的腳本等。而在素材方面,Unity3D還內置了一個Asset Store,在這里面可以找到需要的一些模型、紋理圖等。正是由于其這些強大的功能,國內排名前20的游戲公司都把Unity作為他們的游戲開發引擎[3]。圖4所示為Unity3D所支持的平臺。

圖4 Unity3D支持平臺

2 基本游戲框架及通用管理方式

基本游戲框架類似于一種簡單MVC(Model View Controller,模型-視圖-控制器)。按照MVC業務劃分:Model(模型)在應用程序中主要用于處理數據邏輯,通常情況下模型對象負責的任務就是在數據庫中進行數據的存取。View(視圖)是應用程序中處理數據的顯示。Controller(控制器)主要用于處理用戶交互的部分。基本游戲框架繼承了MVC中主要的分層,便于整個游戲的層次劃分,提高開發效率,其框架如圖5所示。

圖5 基本游戲框架

服務器:主要用于用戶之間數據交互和用戶的數據存儲。編寫服務器是一項很艱巨,很費時的任務,一般的大公司都建立自己的服務器。那對于我們這些獨立開發者來說,BaaS(Backend as a Service)便是不錯的選擇,其專為移動應用開發者提供整合云后端的服務。目前市場較為流行的BaaS有LeanCloud、Bmob、Amazon EC2等,這些云端服務器一般都提供了限免費訪問量以及便捷易懂的API。移動應用后端云服務的好處是幫助開發者簡化工作,程序員們只需一心一意做產品,而不需要過多考慮后端的服務器程序。做移動開發將會變得更輕松、更容易。

Network層:主要用于客戶端與服務器的數據交換,把用于的請求提交給服務器,再把服務器還回來的數據提交客戶端。最新版本Unity3D自帶的Network組件以及Asset Store里面的TNet組件均可以勝任。

Server層:主要用于存儲整個游戲的數據,負責與服務器交換數據。

Game層:主要為UI層提供需要的數據。

UI層:主要功能是直接對用戶展示,這個層就是我們用戶能看到的一些數據及界面。

GameThread:主要職責是用于修改及操作Game層和Server層的數據。

在Unity中,大多數動作都是可以通過添加Unity自身攜帶的組件來完成的,例如碰撞檢測、天空盒、粒子特效等。但是對于組件之間的關聯、通信,以及帶有極強邏輯性的動作,簡單的添加組件是無法達到預期的目標的。例如在游戲動畫狀態的切換時,可以通過設置其過渡參數來控制,從而控制玩家什么時候該跑,什么狀態下進行走,但是這些控制條件也必須通過腳本來實現。Unity為解決這些問題,讓開發者集中在游戲邏輯上面,提供一套比較完整的腳本系統及相應的API,通過這些API我們可以更好地去操作和組織我們的游戲邏輯。有了功能之后,需要考慮的是如何去高效、方便、易理解地去管理和組織我們的腳本。

“Manager of Manager”方式是指將同類型的行為或者操作組織起來統一管理,其也符合Unity中層級思想和面向對象的編程思想。例如我們想管理整個游戲的音樂音效的時候,我們可以建立AudioManager腳本。通過AudioManager來管理場景內的背景音樂管理器(BackgroundMusicManager)和背景音效管理器(BackgroundAudioEffectManager),然后我們在需要播放音樂音效的地方去調用這些腳本里面的方法即可,這樣管理更加有效,更加讓人理解。

3 客戶端的實現

為了更好說明這兩種思想,我們實現一個類似于跑酷游戲的客戶端,下面我們采用模塊化進行說明。在整個游戲里面,我們將其分成四個功能模塊,它們分別實現不同的功能,在大多數的游戲公司也是采用模塊化來分工完成的。其模塊如圖6所示。

圖6 模塊

我們都知道音樂會給人一種舒適感,引起人們的興趣。在游戲中背景音樂音效是必不可少的,一方面可以增加游戲可玩性,給用戶有種持續玩的興趣。另一方面增加游戲真實感,以達到玩家和游戲場景人物的融合。目前Unity支持許多格式的音樂音效,開發者可以根據場景所需要的添加對應的音樂音效[4]。在添加之前,我們需要添加兩個組件,一個類似于人的耳朵——AudioListener,另外一個就是類似于人的嘴巴——AudioSource,其中AudioSource用于添加音頻片段。這里我們為了方便管理,建立了一個AudioManager,用于管理整個游戲中的音樂音效,只要在需要的地方進行調用相應的函數即可。最新版的Unity改善之前音頻系統,新增加了AudioMixer(音頻混合器),其整合所有的音頻片段,讓玩家聽到AudioMixer整合出來的音頻片段。

可以想象在游戲中如果缺少動畫,我們玩家扮演的角色將處于靜止,周圍的AINPC也將處于靜止,這樣的情況對于FPS、RPG等游戲類型是多么可怕的景象,所以說動畫系統是整個游戲的靈魂也不為過。在Unity中提供了一整套動畫系統,我們可以利用其進行動畫制作,也可以從外部軟件導入動畫,通過新版本的Unity中AnimatorController進行動畫狀態之間的控制。在大多數3D游戲角色都帶有若干種動畫狀態,例如本文設計的游戲中的角色,包含跳、左右轉、下蹲以及死亡在內的五種動畫,這些動畫狀態之間的切換是通過Unity動畫系統中的狀態機進行控制的,在操作的時候需要設置觸發參數,Unity為我們提供了Float、Int、Bool以及Trigger四種參數,利用這些參數我們可以輕松地去實現各個狀態的融合,使動作看起來更加的逼真、協調[5-6]。

游戲雖然有屬于自己的獨特邏輯,但是這些邏輯也必須符合物理世界的規律。在游戲中不能出現角色穿墻而過,踏地而落的情況,那碰撞檢測在游戲中起到關鍵性作用了。通過碰撞檢測可以使我們的游戲效果更加的逼真。Unity提供Rigidbody、CharacterControlloer、Collider以及Trigger在內物理碰撞器和觸發器,其實質就是一些包圍盒算法[7],這些都需要綁定到主角或者相應的物體上,以便發生碰撞的時候檢測到。本文通過碰撞檢測來實現主角的物品拾取,判斷是否和周圍的障礙發生碰撞,然后決定其生死。

內存管理是每個開發者必須考慮的,內存使用率過高導致游戲本身運行變慢,出現卡頓現象,那帶來的后果就是給用戶體驗差,導致游戲生命周期變短。Unity提供了很多內存管理方式,以便對對象的動態加載以及和動態回收,方便有效地利用內存。本文介紹兩種資源管理,AssetBuddle打包及對象池,本文使用后者。

AssetBuddle是專門為Unity Pro付費提供的功能,它可以將游戲場景中的對象或者資源文件轉化為二進制封裝在AssetBuddle中,以便動態的加載。雖然這種辦法很強勁,但對于沒有個人預算的開發者并不建議,原因是其會產生一定的成本。這里我們推薦一種比較好的內存管理——對象池。圖7所示為對象池的結構。

圖7 對象池

對象池指的是在激活對象時,它從池中提取。在停用對象時,它放回池中,等待下一個請求。在C#中建立對象池實質就是集合的混用,集合可以用于動態增加或者減少,這樣就方便對象池中的對象的獲取和放入。在Unity創建對象池腳本之后,需要實例化。實例化有很多種辦法,這里推薦兩種辦法。其一是創建一個Prefab,然后在需要的地方進行實例化。Prefab好處就是當我需要修改一類游戲物體屬性時,我們不必一一的去操作,只需要去修改這類物體的Prefab即可,然后Apply一下即可應用到所有這類物體上,其大大方便了開發者。再則就是到Resources文件下進行加載,Unity為開發者提供了很多命名文件,開發者只需要將游戲物體或者資源放入這些文件中,然后調用API即可使用。本文實現的功能使用是第一種,通過提前創建需要的Prefab,然后再在場景中進行實例化。

4 實驗結果與分析

本文通過對現有游戲開發常見的框架和腳本管理的研究,實現了一個簡單的游戲客戶端,所需要的開發環境為Unity3D和其自帶編譯器MonoDevelop。

圖8(a)顯示的本客戶端使用的動畫狀態機,通過不同操作改變參數從而實現各個狀態的之間的狀態切換。圖8(b)所示是對腳本的管理。圖8(c)所示是通過碰撞檢測對玩家和金幣或者墻壁碰撞進行檢測,當主角碰到金幣之后,金幣自動回收,然后設置錢Active為false。當主角碰到墻壁時,觸發狀態機切換狀態為死亡狀態。

圖8 效果圖

5 結語

本文通過學習Unity3D游戲引擎各個組件的基礎上,通過對目前游戲開發框架和腳本管理方式的研究,實現了一個簡單的游戲客戶端開發。實現了游戲主角的動畫狀態切換、物品拾取,以及音頻音效的管理等功能,一方面體現出Unity3D游戲開發平臺的強大性,另一方面體現使用合理的管理方式對游戲開發的重要性。本文游戲還可以進一步進行擴展功能,例如登錄注冊,金幣積分累計等功能,在資源材質方面還可以進步通過Shader來進一步美化。

[1]王樹斌.淺析Unity3D開發游戲流程及常用技術[J].電腦知識與技術,2012.

[2]張敏.基于Unit 3D的游戲的設計與實現[J].計算機光盤軟件與應用,2014.

[3]趙海峰.基于Unity3D的游戲開發與設計[D].山東:山東科技大學,2014.

[4]楊娜,李杰,廖金巧.基于Unity3D的三維生態莊園游戲設計與實現[J].現代計算機,2015.

[5]宣雨松.Unity3D游戲開發[M].北京:Unity3D游戲開發,2012.

[6]路朝龍.Unity權威指南[M].北京:中國青年出版社,2014.5.

[7]林巧民,林萍,王汝芬.3D游戲開發中的碰撞檢測算法研究[J].計算機技術與發展,2010.

Game Development;Basic Framework;General Management Mode;Client

Research and Development of Client in the Framework of the Basic Game Based on Unity3D

LIANG Cheng
(School of Computer and Software Engineering,Xihua University,Chengdu 610039)

1007-1423(2015)25-0078-05

10.3969/j.issn.1007-1423.2015.25.020

梁成(1989-),男,重慶開縣人,在讀研究生,研究方向為游戲理論與虛擬現實

2015-07-09

2015-08-20

對于大多數人來說游戲開發是一項很神秘的工作,為了揭開這層神秘的面紗,通過研究現有游戲開發,總結游戲開發中的基本游戲框架和腳本通用管理方式。利用Unity3D平臺,在基本游戲框架和通用管理方式下實現游戲客戶端的設計與開發,從而讓更多的游戲愛好者了解游戲的開發過程。

游戲開發;基本框架;通用管理方式;客戶端

For most people,game development is a very mysterious work,in order to uncover the layer of mystery,studies the existing game development,summaries the basic game framework and scripting common management.Uses Unity3D platform,under the basic game framework and common management approach to achieve the client's game design and development,so that more game enthusiasts can understand the game development process.

猜你喜歡
動畫游戲管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
做個動畫給你看
動畫發展史
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 久久久久久高潮白浆| 三上悠亚精品二区在线观看| 亚洲愉拍一区二区精品| 久久婷婷色综合老司机| 国产美女精品在线| 午夜性爽视频男人的天堂| 国产欧美又粗又猛又爽老| 久久久久夜色精品波多野结衣| 国产无遮挡猛进猛出免费软件| 久久综合五月| 国产一区二区三区日韩精品| 国产亚洲精品无码专| 亚洲天堂福利视频| 在线va视频| 亚洲日韩AV无码精品| 亚洲三级片在线看| 亚洲v日韩v欧美在线观看| 免费欧美一级| 人妻夜夜爽天天爽| 国产成人亚洲精品蜜芽影院| 性做久久久久久久免费看| 国产成人综合日韩精品无码首页| 污视频日本| 国产亚洲现在一区二区中文| 亚洲日本一本dvd高清| 茄子视频毛片免费观看| 欧美激情,国产精品| 国产一区三区二区中文在线| 毛片在线看网站| 亚洲日韩精品无码专区| 被公侵犯人妻少妇一区二区三区| 2020精品极品国产色在线观看 | 精品欧美视频| 亚洲永久精品ww47国产| 成人福利在线观看| 色窝窝免费一区二区三区 | 91小视频在线| 久久人体视频| 国产网站一区二区三区| 精品国产网站| 国产精品久久久久久搜索| 亚洲综合色婷婷中文字幕| 亚洲无码视频一区二区三区 | 国产丰满成熟女性性满足视频| 五月婷婷导航| 美女被操黄色视频网站| 欧美日韩国产综合视频在线观看| 久久福利网| 中文毛片无遮挡播放免费| 亚洲欧美一级一级a| 中文字幕一区二区人妻电影| 996免费视频国产在线播放| 一本无码在线观看| 毛片网站在线看| 亚洲日本中文综合在线| 二级特黄绝大片免费视频大片| 999国内精品视频免费| 手机精品福利在线观看| 国产9191精品免费观看| 视频国产精品丝袜第一页| 国产99精品久久| 欧美性爱精品一区二区三区| 国产特一级毛片| 无码专区在线观看| 国产午夜无码专区喷水| 国产激情在线视频| 国产喷水视频| 国产人人射| 亚洲国产一区在线观看| 青青青国产精品国产精品美女| 国产精品久久精品| 国产好痛疼轻点好爽的视频| 人妻一本久道久久综合久久鬼色| 国模沟沟一区二区三区| 精品无码一区二区在线观看| 手机精品视频在线观看免费| 国产精品护士| 亚洲日韩Av中文字幕无码| 2022国产无码在线| 99精品免费在线| 成人欧美在线观看| 永久成人无码激情视频免费|