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

移動平臺上射擊類游戲設計開發

2015-08-07 12:10:44王啟明
微處理機 2015年3期
關鍵詞:游戲系統設計

甘 泉,王啟明

(平頂山學院計算機科學與技術學院,平頂山467000)

移動平臺上射擊類游戲設計開發

甘 泉,王啟明

(平頂山學院計算機科學與技術學院,平頂山467000)

在移動應用設計開發過程中,基于類的設計成為應用開發的主流方法,類的設計方法及運用直接影響應用開發過程及結果。在Android移動應用平臺上,采用面向對象的移動應用開發,以雷電游戲為例,著重探討類的設計,開發一個射擊類游戲。在應用設計過程中,分析了系統接口類的特點。通過系統分析,設計和分析類、類間關系和類的組織。為了便于團隊開發,提高類的復用性,提出了類的優化建議。最后實現并發布游戲,為移動應用平臺,尤其是Android平臺應用開發提供參考。

移動平臺;應用開發;游戲設計

1 引 言

Android操作系統因其穩定性、開放性、低成本等特點,受到廣大手機游戲開發者關注。Android平臺提供給開發者的開發類庫,即Framework層提供的API和LIBRARIES層提供的一些類庫,決定了移動應用的開發條件、開發過程和開發結果[1]。Android平臺游戲設計是基于Android手機平臺,運用Java語言,使用2D游戲引擎的部分技術,開發出針對于Android平臺的手機應用[2]。這里以雷電游戲的開發為例,研究Android平臺上移動應用中類的特性、組織、設計。基于Android平臺借助面向對象的技術,對基礎構件和常用設計進行抽象和實現[3]。

2 系統實體分析

在游戲設計中,需要尋找實體。這里使用OOAD大師Peter Coad所提出的事物模式[4]來尋找實體。在一個游戲中,可以把“游戲的運行”看作一個事務,圍繞著這個事務來分析出系統中涉及的類。對于一個游戲來說,通常需要有主角,敵人,以及Boss。在雷電游戲中,由于是射擊類游戲,因此需要子彈這一實體類。至此共分析出4個和事物相關的實體類,分別命名為Player,Enemy,Boss,Bullet。除此之外,一個游戲還需要菜單和游戲背景,分別定義為:GameMenu和GameBackground。在實現過程中,可能還會出現其他的類,將在實現部分具體分析和實現。

在Android平臺上開發游戲,需要使用系統預定義的回調接口,以及系統提供的方便游戲開發的一些類。本論文在游戲框架中將要介紹的類Activity就是其中的一個。此外,對于游戲開發,另一個比較重要的類是SurfaceView,它提供了局部重繪功能[5],這極大的方便了游戲程序員對屏幕的控制。這里又分析出兩個由系統提供的類,至此,對系統的實體分析工作基本完成。

3 游戲框架的構建

3.1 Activity類

在Android提供的API中,Android提供了Activity類,這個類實際上是一個接口,也可以說是系統的回調函數。程序員只要在這個類中實現系統定義的接口,完成相應的編碼,當系統調用該類時,就會實現程序員所期望的效果。在Android應用程序設計中,最需要關注的就是Activity類的生命周期,利用其生命周期,實現諸如程序的運行,暫停及數據的存儲等一系列操作。

圖1 Activity的生命周期

圖1就是Activity的一個生命周期,在這個游戲的實現過程中,需要復寫Activity預定義的方法,實現系統和游戲框架間的通信。對數據的存儲一般在onPause()中實現,對數據的恢復在onResume()中實現,以確保程序在各種情況下能讀取到正確的數據。

3.2 框架設計

游戲實現通常是基于一個循環,在這個循環中處理用戶輸入,實現游戲邏輯和各種角色繪制。結構清晰的循環可以方便游戲的實現。在游戲雷電的實現中,使用如圖2的循環結構。

圖2 游戲通常的框架[6]

圖2中,Input()函數用來接收用戶輸入,Logic()函數用來處理游戲邏輯,Paint()函數用來實現游戲繪制。再循環過程中,循環的頻率決定屏幕刷新頻率,從而影響游戲畫面的質感。如使用每秒16幀的間隔會出現抖動,而50幀的間隔會使畫面更真實。刷新頻率受設備處理能力等影響,可根據具體需求而定,一般取值范圍為[16..50],在此,雷電游戲的實現使用了每秒20幀的間隔[7]。

3.3 游戲框架的實現

根據Activity類和一般游戲框架,實現雷電游戲框架,其實現過程如下,游戲的后續實現將會在這個框架的基礎上,逐步擴充。

(1)生成一個繼承Activity的類MainActivity。

(2)創建一個繼承自SurfaceView的類MySurfaceView,并在該類中實現游戲的框架(見圖3中的loop片段)。

(3)在MySurfaceView的onCreate()方法中調用setContentView()方法,設置屏幕上要顯示的視圖為MySurfaceView中的內容。

在MySurfaceView中定義的Input()、Logic()和Paint()方法中將調用其他類中對應的Input()、Logic()和Paint()方法。整個系統對象的交互過程如圖3所示。

由于在MySurfacView中實現的角色對象都繼承自Sprite,并且為了清晰顯示序列圖中的交互過程,圖3中通過使用多個Sprite對象代替Player、Enemy、Boss等對象,來顯示對象間的交互情況。同時在圖3中使用了OPT片段來顯示在MySurfaceView中游戲進入不同狀態時系統的行為。由于在每個狀態中都執行onInput(),onLogic()和onPaint()方法,所以圖3中省略了其他狀態時系統的行為。

圖3 游戲主體部分序列圖

4 系統靜態結構設計

4.1 類的關系

在需求分析中通過需求實體,可以得到系統所需要的各個類。靜態結構設計階段就是分析游戲中各個類間的關系,找出他們之間的關聯,從而方便游戲的實現。系統各個類間關系如圖4所示。

圖4 需求分析階段分析出來的類

圖4中增加了一個Boom類,用于實現子彈的爆炸效果。隨后還要實現一個Rocker類(在圖上給出)來實現一個屏幕上的游戲手柄,用來實現對游戲主角,即飛機的控制。

由于類圖是對系統實體的抽象,并展現了各個抽象實體間的關聯,例如,在MySurfaceView類中只引用一個Player類,所以,MySurfaceView和Player是一對一關系;一個Player可以發射多顆子彈,所以這里Player類和Bullet類是一對多的關系,如圖5所示。

在實現過程中,一對一關聯可以通過在調用方引用單個類的實例實現,一對多關聯可以在調用方通過容器實現,這里使用向量(Vector)來實現。

圖5 類之間的關系

從敏捷開發的觀點出發,隨著項目的實施和需求的不斷變更,需要對項目進行不斷更迭,這樣系統的靜態結構也會出現一些變化,由于篇幅所限,這里不再討論更迭的過程,只給出項目類圖的最終結構,如圖6所示。

圖6 項目最終靜態結構

相對于圖4,圖6的變化是:將Gamemenu從MySufaceView中單獨分離出來,并定義成單獨的一個類MenuSurfaceView。其意義在于便于團隊開發,很好的實現了分工和不同功能模塊的隔離,其次也可以使菜單類MenusurfaceView得到重用。

4.2 類的組織

為了便于實現以及代碼重用,需要對代碼進行組織。根據每個類在程序中的實現功能和邏輯的不同,將代碼分為四個包,如圖7所示。

圖7 系統包圖

其中各個包所對應的職責如表1所示。

表1 各包包含類的介紹

對于com.gan.game包實際上還可以進行拆分,分成單獨的一個游戲邏輯包和游戲精靈包,這樣可以方便的對程序進行擴充,增加新的關卡。

5 游戲雷電的具體實現

5.1 菜單的實現

為了實現菜單選項和文字顯示效果,在游戲實現過程中又定義了一個Button類和一個Panle類。Button和Panle類與MenuSurfaceView間的靜態關系如圖8所示。Button類的實現可以通過直接使用或者繼承系統提供的Button類,或者在Menusurface-View中直接自定義一個Button類,并實現其繪制。同理Panel類的實現可以直接使用或者繼承系統提供的TextView類。

圖8 菜單界面類間的關系

5.2 背景的實現

滾屏背景的實現需要使用兩張相同的圖片,并使兩張圖片在垂直或者水平方向相接,然后不斷的交替出現,從而實現屏幕的滾動效果。在實現過程中要求使用圖片的高度應該稍大于屏幕高度,當一張圖片到達屏幕底部時,立即將它移動至其后繼的上方,如此反復以實現連續滾動的效果,如圖9所示。

圖9 雷電游戲背景界面的實現

在程序中實現時,滾動效果是通過改變被繪制圖像左上角的Y坐標來實現的。

5.3 游戲中各角色的實現

游戲中的Enemy,Boss,Player以及Bullet類有很多相似處,如均有邏輯處理和繪制自身的能力,因此將這些方法抽象出來,定義成一個超類,以方便游戲的實現。在2D游戲引擎中通常被稱為Sprite。此外2D游戲引擎中還具有一些代表性的技術,如碰撞檢測,精靈動畫等。也需要在Sprite類中實現,供其繼承類使用。

在此以具有代表性的碰撞檢測技術為例。通常,在2D游戲中,常見的有兩種碰撞檢測技術,即矩形碰撞檢測和圓形碰撞檢測,此外對于要求較高的游戲還有像素級別的碰撞檢測。本游戲使用了矩形碰撞檢測技術,就是把碰撞雙方的邊界都看成矩形,通過測試它們的邊界是否相交來檢驗是否發生碰撞,其典型代碼實現如下所示:

5.4 觸屏手柄技術

智能移動終端帶給人們觸屏操控的快感,在觸屏上進行方向操作,比較典型的做法是在觸屏上設置一個虛擬鍵盤,實現方向操作。這個虛擬鍵盤需要實現兩個功能。

5.4.1 小圓跟隨手指的運動限制在一定范圍內

為實現小圓在大圓內運動的效果,定義兩個同心圓,將這兩個同心圓的圓心設置為同一個點,如圖10左圖所示。讓小圓隨著用戶的手指來回移動。為實現這個目的,需要規定當用戶手指的觸摸在大圓半徑范圍內的時候,只改變小圓的圓心坐標,在大圓范圍外的時候,通過計算用戶手指所在點到大圓圓心的弧度,然后乘以大圓的半徑,這樣就保證小圓在大圓的范圍內,不會在屏幕上亂轉,如圖10右圖所示。

圖10 游戲觸柄的原理

5.4.2 實現方向判斷

為實現對四個方向的判斷,需要使用數學上的三角函數,判斷觸點相對于圓心的弧度,然后判斷該點的弧度是否在圖11所示各個方向的弧度范圍內。規定每一個方向的弧度區域為PI/4。通常在實現過程中以弧度表示角度。

圖11 游戲觸柄的數學原理

5.5 游戲主場景的實現

前述SurfaceView類提供了游戲開發所需要的局部屏幕重繪技術,使得游戲開發更加容易。在游戲的具體實現中讓MySurfaceView繼承SurfaceView類,并實現了callback和runable接口。callback接口是系統的一個回調接口,這樣系統就能實現對surfaceView在緩沖池中的操作,runable是一個線程的實現,這樣主線程就可以使用其子線程的方法實現對該子線程實現類的控制。

同時,本游戲在MySurfacev類中實現了整個游戲的邏輯,其游戲中各個角色的邏輯規則和描述如圖12和表2所示。

由于Android平臺增加了觸屏輸入方式,為實現對觸屏輸入的判斷及處理,這里的Input()方法會被拆分成OnKeyDown(),OnKeyUp(),OnTouchEvent()三個方法,其原理是一樣的。

圖12 雷電游戲的邏輯

表2 各個實體對應的邏輯

需要注意的是,MySurfaceView是通過狀態機來對應游戲的不同運行,如游戲失敗時進入Game_Lost狀態,并顯示游戲失敗的界面;游戲勝利時,進入Game_Win狀態,并顯現游戲勝利的界面。對該狀態機各個狀態的實現是通過定義不同的數值常量來實現的。

5.6 音效的實現

在Application層,MediaPlayer和SoundPool都可以用來播放聲音[8],但是兩者又有很大的區別。MediaPlayer類既可以播放聲音又可以播放視頻,其最大的特色是基于狀態機實現的。該類適合于播放比較大的音頻文件,如游戲的背景音樂。SoundPool類可以同時播放多種聲音,正好符合游戲中同時播放多種音效的需要,但是其也有自身限制,就是不能播放太大(大于10K)的聲音文件,否則會出現內存溢出。Android推薦在游戲中使用*.ogg和*.mid音頻文件。對聲音類的實現主要通過com.gan. Sound包。

6 測試與發布

通過壓力測試工具monkey進行壓力測試。這里只關注壓力測試。進行壓力測試的主要目的是檢驗程序中是否存在ANR(Application Not Response)錯誤,以及其它一些像音頻文件過大等造成的內存溢出問題。測試結果如圖13所示。

圖13 壓力測試結果

按照Android提供的系統安全策略進行程序發布。程序運行時效果如圖14所示。

圖14 程序運行時效果

7 結束語

在諸多移動應用平臺上,選擇Android作為游戲的實現平臺。在應用開發中,以類的設計為主線,研究分析了Android平臺的系統架構和組件模型,并剖析了一般游戲的框架結構,在此基礎上實現了一個適合Android平臺的游戲框架。參考常見2D游戲引擎的實現方法,使用了精靈動畫,碰撞檢測等典型技術,運用面向對象的方法實現了一個名為雷電的射擊類游戲。在開發過程中注重類的設計,為移動應用平臺,尤其是Android平臺應用開發提供了參考。

[1] 柯元旦.Android程序設計[M].北京:北京航空航天大學出版社,2009.

KE Yuan-dan.Android program design[M].Beijing:Beijing university of aeronautics and astronautics Press,2009.

[2] Creative Commons Attribution.Android Development document[EB/OL].Beijing:Developers,2012.http://developer.android.com/sdk/installing.html,2014-11-22.

[3] 陳淮.基于Android游戲開發中常用類庫的設計與實現[D].西安:西安電子科技大學,2011.

Chen Huai.Based on the Android game development in the design and implementation of a common class library[D].Xi’an:Xidian University,2011.

[4] 李華明.Android游戲編程之從零開始[M].北京:清華大學出版社,2012.

Li Hua-ming.Android game programming from scratch[M].Beijing:Tsinghua university,2012.

[5] Peter Coad.ObjectModels:Strategies,Patterns&Application[M].Yourdon Press,2008.

[6] 張鵬.3D手機游戲開發實例教程[M].北京:電子工業出版社,2000.

Zhang Peng.3Dmobile game development instance tutorial[M].Beijing:Electronic industry Press,2000.

[7] Dave Shreiner.OpenGL Programming Guide[M].American:Addison-wesley,2009:23-24.

[8] Creative Commons Attribution.Android Development document[EB/OL].Beijing:Developers,2012.http://developer.android.com/guide/topics/media/index.html.2014-11-22.

Design and Development of Shooting Game in Mobile Platform

Gan Quan,Wang Qiming
(College of Computer Science and Technology,Pingdingshan University,Pingdingshan 467000,China)

In the process of the design and development for themobile application,the design based on the class becomes themainstream of application developmentmethod.The designmethod and usage of the class directly affect the application development process and result.In android mobile application platform,a shooter game,adopting the object-oriented mobile application development and focusing on the design of the class,is developed.In the process of application design,the features of the system interface classes are analyzed.Through system analysis,the classes,the relationship between them and its organization are analyzed and designed.In order to facilitate team development and improve the reusability of the class,the suggestions for the class optimization are put forward.Finally,the game is realized and released to provide the reference for application development inmobile application platform.

Mobile platform;Application development;Game Design

10.3969/j.issn.1002-2279.2015.03.016

TP312

A

1002-2279(2015)03-0054-06

甘泉(1980-),男,安徽省靈璧縣人,碩士研究生,講師,主研方向:算法分析等。

2014-11-28

猜你喜歡
游戲系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
主站蜘蛛池模板: 国产亚洲高清在线精品99| 老司机久久99久久精品播放| 亚洲精品福利视频| 婷婷久久综合九色综合88| 婷婷午夜天| 久久亚洲国产一区二区| 美女国产在线| 国产在线拍偷自揄观看视频网站| 亚洲天堂福利视频| 99国产精品免费观看视频| 免费99精品国产自在现线| 欧美一级夜夜爽www| 国产精品网拍在线| 囯产av无码片毛片一级| 麻豆国产精品一二三在线观看| 亚洲欧美成人在线视频| 国产网友愉拍精品| 国产乱子伦视频在线播放| 色欲色欲久久综合网| 中日无码在线观看| 最新日本中文字幕| 欧美国产另类| 欧美一区二区三区香蕉视| 日韩欧美国产精品| 第九色区aⅴ天堂久久香| 亚洲成人77777| 天堂成人av| 日韩a在线观看免费观看| 国产免费精彩视频| 久久国产黑丝袜视频| 在线看国产精品| 婷五月综合| 久久久久国产一级毛片高清板| 97久久超碰极品视觉盛宴| 免费精品一区二区h| 午夜视频免费一区二区在线看| 欧美中文字幕在线播放| 呦女精品网站| 欧美一级片在线| 亚洲欧美精品日韩欧美| 成人免费黄色小视频| 国产亚洲精品97在线观看 | 国产精品永久在线| 日韩毛片免费观看| 亚洲国产理论片在线播放| 亚洲色无码专线精品观看| 国产高颜值露脸在线观看| 黄网站欧美内射| 亚洲精品日产精品乱码不卡| 久久先锋资源| 狠狠色综合久久狠狠色综合| 国产人妖视频一区在线观看| 久久综合干| 日韩第九页| 九色91在线视频| 国产永久无码观看在线| 久久久国产精品无码专区| 91成人在线观看| 国产福利免费在线观看| 最新亚洲人成网站在线观看| 国产一区二区丝袜高跟鞋| 人禽伦免费交视频网页播放| 亚洲人成网站观看在线观看| 日韩成人在线视频| a天堂视频| 亚洲无码视频一区二区三区| 日本成人不卡视频| a毛片在线播放| 欧美一级大片在线观看| 91在线激情在线观看| 国产欧美一区二区三区视频在线观看| 久久综合色视频| 欧美在线视频不卡| 国产成人免费高清AⅤ| 毛片免费高清免费| 欧美中文字幕一区二区三区| 精品国产自在现线看久久| 无码日韩人妻精品久久蜜桃| 欧美黄色a| 9cao视频精品| 57pao国产成视频免费播放| 久久一日本道色综合久久|