李傳科++季文天
摘要:該文介紹在Android應(yīng)用開發(fā)平臺下設(shè)計與實現(xiàn)手機找茬類游戲,針對傳統(tǒng)找茬類游戲,提出兩種游戲玩法的創(chuàng)新模式,并且使用LibGDX游戲開發(fā)框架實現(xiàn)圖形渲染和系統(tǒng)的邏輯處理,具有良好的人機交互體驗,對基于LibGDX的Android游戲開發(fā)具有一定的參考意義。
關(guān)鍵詞:Android;LibGDX;找茬;設(shè)計與實現(xiàn)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)17-0062-04
隨著移動互聯(lián)網(wǎng)時代的不斷發(fā)展進步,智能手機成為了人們關(guān)注的熱點話題。特別是搭載Android系統(tǒng)的智能手機擁有量成指數(shù)的增長趨勢,人們對于在智能手機上的娛樂需求也越來越大,而找茬類游戲作為休閑趣味性一類游戲不僅有著廣泛用戶群體,更具有一定的市場空間。因為其占手機資源小和操作簡單性等特點,在手機游戲中具有較強的市場競爭力。
1 游戲背景
目前的智能手機游戲主要有休閑益智、角色扮演、射擊游戲、動作冒險、棋牌游戲、塔防游戲等類型游戲。而根據(jù)智庫在線數(shù)據(jù)統(tǒng)計,休閑益智類型游戲的增長量處于第一位,角色扮演位居第二,動作冒險第三。其中休閑益智游戲最大的創(chuàng)意是其游戲規(guī)則,玩家需要以自己的智慧對游戲規(guī)則進行思考,判斷從而通關(guān)以獲得成就感。休閑益智類游戲?qū)ν婕也僮饕蟛桓?,是手機中游戲中受眾面最廣的游戲。
找茬類的游戲是一種經(jīng)典的休閑益智類游戲。使用多組參照圖片作為游戲目標,在原圖上加入多處微弱的不同點供玩家進行找茬,那么玩家需要在限定的時間內(nèi)以最快的速度找出出兩張圖片中的不同處方能過關(guān)。游戲規(guī)則通俗易懂,操作方式簡單明了,主要考驗玩家的觀察能力以及使用道具的決策能力,適合各個年齡層的玩家。
2 開發(fā)相關(guān)技術(shù)
2.1 Android
Android是基于Linux平臺的開源智能手機操作系統(tǒng),它采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和虛擬機Virtual Machine,由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。
Android系統(tǒng)架構(gòu)從上到下來看整個系統(tǒng)軟件層次結(jié)構(gòu)主要分成四個部分:應(yīng)用程序(Application Layer),應(yīng)用程序框架(Application Framework),各種庫(Libraries)和Android運行環(huán)境(Android Runtime),Linux內(nèi)核(Linux Kernel)。一個Android應(yīng)用程序,主要由Activity、BroadcastReceiver、Service、ContentProvide這些組件部分組成,它們相互獨立,又相互調(diào)用協(xié)調(diào)完成工作。對于一個應(yīng)用程序來說,不一定這四個組件部分都需要,但是其中Activity、BroadcastReceiver和Service是Android最基本的三個組件。而這些組件都必須被系統(tǒng)全局配置控制文件AndroidManifest.xml進行聲明才能使用。
2.2 LibGDX框架
LibGDX游戲開發(fā)框架一般包括Input、Audio、Files、Graphics、Math、Physics、這些主要模塊,基于LigGDX實現(xiàn)Android游戲的開發(fā),基本上是對框架里對這些模塊類實例的引用,它們是實現(xiàn)游戲各種功能不可少的功能模塊。其分別對應(yīng)了LibGDX中的輸入模塊、音頻模塊、音頻操作,文件模塊,圖像模塊,數(shù)學(xué)計算模塊、物理引擎模塊,分別用于處理應(yīng)用程序基本信息、圖像、音視頻、文件和用戶輸入。除此之外,LibGDX框架中還包含有2D/3D游戲組件Scenes和LibGDX內(nèi)置工具類Utils。
LibGDX當前支持Desktop Applications 和Android Applications兩個后端。而Application做為任意libGDX工程的主入口點,要創(chuàng)建基于libGDX框架的應(yīng)用程序,首先要創(chuàng)建主類MainActivity繼承于LigGDX的父類 AndroidApplication,而其中 AndroidApplication又繼承自Android的基類Activity,起到了一個Activity的作用。而在LigGDX開發(fā)中實際的顯示工作則是交給一個實現(xiàn)了ApplicationListener接口的類來完成。其作用是初始化Application。ApplicationListener接口是用來更新游戲狀態(tài),即游戲邏輯,它提供了合適的方法來訪Graphics, Audio, Input and File I/O等模塊。
3 《水果找茬》游戲設(shè)計
3.1 游戲模式設(shè)計
本次設(shè)計的《水果找茬》Android手機游戲以水果作為主題,在傳統(tǒng)的找茬挑戰(zhàn)模式基礎(chǔ)上衍生出關(guān)卡挑戰(zhàn)和時間挑戰(zhàn),即“關(guān)卡”和“競速”兩種游戲模式。同時在游戲基本功能需求設(shè)計的基礎(chǔ)上,還為游戲設(shè)計了“放大鏡”和“時間”道具的使用以及金幣和分數(shù)四種游戲元素。
游戲關(guān)卡模式是基于每張圖片創(chuàng)建10處細微不同點,每次游戲都會在10處不同點中隨機抽取5處不同點進行分布顯示。一共有25個關(guān)卡,唯一的過關(guān)條件即在規(guī)定時間內(nèi)找尋5處不同點即可通關(guān),否則當局游戲失敗。勝利通關(guān)將解鎖下一關(guān)繼續(xù)游戲。
然而本游戲設(shè)計針對傳統(tǒng)模式提出了創(chuàng)新玩法:在競速模式中撇棄了關(guān)卡的晉級模式,基于傳統(tǒng)的找茬游戲規(guī)則,采用時間比賽機制,玩家在相對較長的限定時間內(nèi)對所有找茬圖片連續(xù)進行畫面的找茬,圖片顯示基于隨機原則。競速模式在游戲的過程中根據(jù)找茬的速度和準確率進行相應(yīng)的分數(shù)累積,最終分數(shù)累積最高者為競速模式的冠軍,最高分數(shù)會一直顯示直到被下一個挑戰(zhàn)者破紀錄為止。游戲模式設(shè)計如圖1所示。
3.2 游戲功能設(shè)計
依據(jù)游戲模式設(shè)計,通過主頁可進入“關(guān)卡”或“競速”游戲模式,游戲界面之間主要通過LibGDX控制實現(xiàn)跳轉(zhuǎn)。并且在游戲中可以使用“放大鏡”、“時間”道具,通過游戲可以賺取一定的金幣,使用金幣能夠購買游戲道具。其中“關(guān)卡”模式業(yè)務(wù)流程如圖2所示。
(1) 關(guān)卡選擇:關(guān)卡選擇是進入關(guān)卡游戲的必經(jīng)路徑。
(2) 關(guān)卡游戲:實現(xiàn)關(guān)卡游戲的主功能,在該游戲界面中進行圖片找茬。
(3) 暫停:可以暫停游戲,并進入游戲道具商城。
暫停進入道具商城可以進行如下行為:
①“放大鏡”購買:進行“放大鏡”道具的購買,每個50金幣。
②“時間”購買:進行“時間”道具的購買,每個100金幣。
③退出游戲:如果想退出當前游戲狀態(tài),則通過暫停界面退出游戲按鈕退回到關(guān)卡選擇界面或者開始界面。
④繼續(xù)游戲:點擊繼續(xù)游戲按鈕,將繼續(xù)暫停之前的游戲狀態(tài)。
(4) 勝利:勝利界面是關(guān)卡游戲過關(guān)的狀態(tài)數(shù)據(jù)顯示。
勝利模塊功能用例分別如下:
①顯示金幣獎勵:關(guān)卡過關(guān)后所得分數(shù)獎勵顯示。
②顯示分數(shù)獎勵:關(guān)卡過關(guān)后所得金幣獎勵顯示。
③顯示“生活小貼士”:關(guān)卡過關(guān)后顯示的水果相關(guān)常識。
④下一關(guān):點擊“下一關(guān)”按鈕,將繼續(xù)下一關(guān)卡游戲。
④分享:點擊“分享”按鈕,將本游戲信息進行好友分享。
(5) 使用“放大鏡”道具:功能為在個數(shù)不為0的情況下通過“放大鏡”道具完成一次圖片不同點找茬,初始為5個。
(6) 使用“時間”道具:功能為在個數(shù)不為0的情況下通過“時間”道具讓時間暫停30秒,初始為5個。
3.3 游戲功能用例設(shè)計
1)游戲開始界面
游戲所有系統(tǒng)功能集中于開始界面,主要包括游戲模式入口、積分排行獲取、背景音樂控制、關(guān)于游戲、微信連接等,以下圖3是游戲開始場景的功能用例圖。
2)關(guān)卡模式
關(guān)卡模式主要包含關(guān)卡選擇、關(guān)卡游戲,關(guān)卡游戲中玩家可以使用“放大鏡”和“時間”道具,查看當前游戲狀態(tài)信息,暫停游戲等,關(guān)卡過關(guān)后會產(chǎn)生勝利界面。關(guān)卡模式功能用例圖如圖4所示。
3)競速模式
競速模式主要實現(xiàn)競速游戲,在游戲中玩家可以使用“放大鏡”和“時間”道具,查看當前游戲狀態(tài)信息,暫停游戲等,競速游戲結(jié)束后會產(chǎn)生記錄界面顯示游戲得分信息。競速模式功能用例圖如圖5所示。
4 《水果找茬》游戲?qū)崿F(xiàn)
4.1 基于LibGDX框架實現(xiàn)
本游戲系統(tǒng)是基于LibGDX游戲開發(fā)框架實現(xiàn),LibGDX控制著整個游戲系統(tǒng)的邏輯運行。在LibGDX游戲開發(fā)框架中支持Game-Screen模式,即只有一個Game,Application作為整個Game的入口,在Application上有多個Game的場景Screen,每次總有一個場景是顯示在最頂端。而每個場景相當于一個小舞臺,在這舞臺上有屬于自己的元素集,這些元素都有自己的業(yè)務(wù)模型。而整個游戲系統(tǒng)架構(gòu)是基于MVC的設(shè)計模式。由于MVC采用了分層模塊化結(jié)構(gòu),即View、Model和Controller層,對應(yīng)視圖層,邏輯控制層和業(yè)務(wù)模型層。
根據(jù)MVC結(jié)構(gòu)分別實現(xiàn)了界面功能類,業(yè)務(wù)處理類,邏輯控制類。其中界面功能類主要實現(xiàn)模塊是游戲UI部分,分別有LogoScreen類、StartScreen類、LevelSelectScreen類、LevelGameScreen類和TimeGameScreen類;業(yè)務(wù)處理類作為Model層封裝了游戲的邏輯處理,主要包括了游戲屏幕顯示及切換,游戲按鈕,游戲數(shù)據(jù)管理,游戲剛體碰撞特效處理,以及對游戲音效播放處理等等;而游戲的邏輯控制主要交給LibGDX游戲開發(fā)框架提供的Screen、InputProcessor等接口實現(xiàn),Screen是基于LibGDX開發(fā)框架界面顯示要實現(xiàn)的接口方法,通過實現(xiàn)同一個Screen接口使得多個界面模塊之間相互協(xié)同工作,同時多個Screen之間主要通過setScreen來切換;而InputProcessor接口是用于接收從鍵盤和觸摸屏的輸入事件,為此必須進行方法注冊Gdx.input.setInputProcessor(InputProcessor)。
這些界面功能類,業(yè)務(wù)處理類,邏輯控制類雖然分屬不同的功能層,分別負責不同的職能,但是彼此間相互依賴,相互協(xié)作共同完成系統(tǒng)功能。這些功能相似的類一般都被歸屬于同一個命名空間,也稱為包。圖6說明了本游戲各包中所包含的各以及包之間的關(guān)系。
4.2 實現(xiàn)界面
1)開始界面作為游戲功能頁面,承接了Logo界面的切換,通過Screen接口中的setScreen方法實現(xiàn)。主要功能包括“水果找茬”背景圖片和logo圖片的渲染,游戲音效的開與關(guān)設(shè)置,游戲開發(fā)信息顯示,調(diào)取積分排行榜,切換到微信接口,顯示游戲通過的關(guān)卡數(shù),游戲模式入口等,實現(xiàn)界面如圖7、8所示。
2)關(guān)卡模式中總共有25個關(guān)卡,關(guān)卡的晉級是從最低的1關(guān)卡開始逐層通關(guān)解鎖,已解鎖的關(guān)卡可以進行重復(fù)游戲。游戲有記錄當前關(guān)卡功能,方便玩家下次進入游戲直接從上次關(guān)卡點開始通關(guān)游戲,如圖9所示。另外在游戲中可以借助“放大鏡”和“時間”道具的幫助,如果道具用完需暫停游戲進入道具商城(如圖12所示)分別使用游戲中獎勵的金幣進行購買,游戲每一關(guān)勝利會顯示當前積分,并且在勝利界面會顯示“生活小貼士”,主要目的在于在游戲過程當中提升玩家的生活常識,如圖11所示。
游戲畫面效果方面,游戲中加入了時間條繪制,并實現(xiàn)時間條倒計時,游戲在錯誤點找茬中加入了錯誤點畫圈效果,聲音方面加入了游戲背景音樂和找茬時正確與錯誤音效,對于玩家來說是一個很不錯的體驗,如圖10所示。
3)競速游戲模塊與關(guān)卡游戲不同之處在于競速模式是以時間賽跑模式進行游戲,游戲規(guī)定在300秒的時間內(nèi)看誰能獲得積分高。但是在競速游戲模式中并不產(chǎn)生金幣,因此在競速模式中不能購買“放大鏡”和“時間”道具,每局玩家都是同等的各5個“放大鏡”和“時間”道具。在300秒時間結(jié)束之后則產(chǎn)生當局游戲分數(shù),如果當局游戲得分高于之前游戲記錄最高分,則記錄刷新,否則挑戰(zhàn)失敗。實現(xiàn)效果如圖13、14所示。
5 結(jié)束語
由于當前Android智能手機市場的廣闊前景使得Android平臺得到了手機游戲開發(fā)商的青睞。而游戲引擎是游戲開發(fā)的關(guān)鍵技術(shù),在當前Android平臺游戲開發(fā)引擎并不成熟的情況,能夠引用好的游戲開發(fā)引擎是開發(fā)高質(zhì)量游戲的關(guān)鍵。LibGDX游戲開發(fā)框架作為一款功能強大的游戲開發(fā)引擎,本課題結(jié)合LibGDX游戲開發(fā)引擎的研究,基于Android開發(fā)平臺分析設(shè)計并實現(xiàn)了一款創(chuàng)新型找茬類休閑趣味游戲《水果找茬》,具有一定的實際意義。
參考文獻:
[1] 董昆.手機游戲的發(fā)展現(xiàn)狀及特點[J].數(shù)字技術(shù)與應(yīng)用,2011(1).
[2] 韓百序. 基于Android平臺的游戲開發(fā)[D].吉林大學(xué),2015.
[3] 蔣政華.基于Libgdx的Android關(guān)卡類游戲設(shè)計與實現(xiàn)[D].華中科技大學(xué),2013.
[4] 郭東恩,吳剛.基于Android平臺的數(shù)獨游戲設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2012(3):46-48.
[5] 吳慶林. 基于libGDX的Android游戲研究與開發(fā)[D]. 華南理工大學(xué), 2012.
[6] 朱成亮.基于Android平臺游戲引擎的設(shè)計與實現(xiàn)[D].安徽理工大學(xué),2011.
[7] 公磊,周聰.基于Android的移動端應(yīng)用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008(8):85-89.
[8] 蔡長安,仇亞東.基于J2ME的手機游戲開發(fā)[J].計算機應(yīng)用與軟件,2008(9):188-190.
[9] 曾玲 . libGDX游戲引擎的研究與應(yīng)用[D].江西:南昌大學(xué),2013.
[10] 吳建,鄭潮,汪杰. UML基礎(chǔ)與Rose建模案例[M].北京:人民郵電出版社,2004.