吳偉信
摘要:隨著智能手機(jī)的普及,手機(jī)益智游戲受到了人們的廣泛歡迎。Flash游戲具備視覺體驗(yàn)好、交互性強(qiáng)以及流式傳輸?shù)葍?yōu)勢(shì),基于Flash技術(shù)設(shè)計(jì)手機(jī)跳跳龍益智游戲,可滿足人們?cè)谒槠瑫r(shí)間內(nèi)的娛樂與益智需求。在分析游戲設(shè)計(jì)思想與主要元件設(shè)計(jì)后,圍繞需要解決的主要問題,介紹了游戲場(chǎng)景循環(huán)移動(dòng)、小龍上下跳躍動(dòng)作、游戲關(guān)卡元素反復(fù)出現(xiàn)以及小龍與關(guān)卡元素碰撞檢測(cè)等功能的詳細(xì)技術(shù)實(shí)現(xiàn)過程。實(shí)際測(cè)試結(jié)果表明,該游戲操作簡(jiǎn)單、運(yùn)行穩(wěn)定,用戶體驗(yàn)佳。最后總結(jié)了該益智游戲的特點(diǎn)以及今后需要進(jìn)一步完善的方向。
關(guān)鍵詞:Flash技術(shù);手機(jī)游戲;益智游戲;跳跳龍;碰撞檢測(cè)
DOI:10.11907/rjdk.191310
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)012-0142-04
0引言
手機(jī)益智游戲是信息時(shí)代的一種新型移動(dòng)學(xué)習(xí)方式,其將學(xué)習(xí)者喜歡的游戲競(jìng)爭(zhēng)模式引入知識(shí)學(xué)習(xí)中,以趣味性的方式將知識(shí)技能傳授給用戶。手機(jī)益智游戲具有娛樂性強(qiáng)、占用空間小、文字交互少和易于移植等特點(diǎn)。益智小游戲以單機(jī)版為主,適合玩家在碎片化時(shí)間里進(jìn)行娛樂,而且不會(huì)產(chǎn)生依賴性,玩家在益智游戲中獲得的愉悅感來自于突破益智關(guān)卡時(shí)的成就感。目前比較經(jīng)典的益智小游戲有“掃雷”、“推箱子”,以及“拼圖”類、“迷宮”類、“棋牌”類游戲等。
國(guó)外對(duì)益智游戲的研究較早,已經(jīng)形成了從基礎(chǔ)理論到設(shè)計(jì)開發(fā)模型及評(píng)價(jià)等豐富的研究成果。例如美國(guó)的Game2Train公司、加拿大的Enlight Software公司、法國(guó)的Cryo Interactive Entertainment公司以及日韓等國(guó)家的一些專業(yè)游戲公司都先后推出了眾多深受歡迎的益智游戲。國(guó)內(nèi)對(duì)益智游戲的研究起步較晚,但近幾年在教育游戲理論基礎(chǔ)、益智游戲軟件設(shè)計(jì)方面也取得了一些研究成果,并在實(shí)踐方面推出了不少Flash益智小游戲,受到青少年喜愛,例如“開心消消樂”、“密室逃脫”、“一起來找茬”、“夢(mèng)游先生”、“憤怒的小鳥”等。
隨著社會(huì)生活節(jié)奏的不斷加快,人們的工作學(xué)習(xí)壓力越來越大,利用碎片時(shí)間玩益智游戲已成為現(xiàn)代人緩解壓力的一種方式。Flash小游戲以其采用矢量圖形畫面、文件體積小的優(yōu)勢(shì)得到了益智游戲愛好者的青睞?;贔lash的手機(jī)游戲在動(dòng)畫處理、uI設(shè)計(jì)以及交互技術(shù)等方面具有較好的用戶體驗(yàn),且開發(fā)效率較高。益智游戲的目標(biāo)通常只有一個(gè),即通過游戲形式鍛煉人的感官,使用戶通過游戲提高某方面能力。目前國(guó)內(nèi)很多益智游戲設(shè)計(jì)時(shí)在教育與游戲的融合方面做得還不夠,讓用戶感覺只是在教育軟件中加入了游戲模塊。所以如何更好地發(fā)揮寓教于樂的思想設(shè)計(jì)益智游戲,利用游戲的娛樂性刺激用戶學(xué)習(xí)興趣,是值得不斷實(shí)踐探索的課題。跳跳龍手機(jī)益智游戲讓玩家在遭遇關(guān)卡角色博弈與益智題挑戰(zhàn)時(shí)獲得感官刺激,從而使玩家放松心情,以愉悅的心態(tài)適應(yīng)接下來的工作和學(xué)習(xí)。游戲操作較為簡(jiǎn)單,目標(biāo)是使用戶在體驗(yàn)小龍?zhí)S行進(jìn)闖關(guān)的游戲樂趣中提升算數(shù)快速運(yùn)算能力。
1游戲設(shè)計(jì)
1.1設(shè)計(jì)思想
用戶進(jìn)人游戲后需要讓游戲的主角色小龍避開所有障礙物,游戲過程中會(huì)出現(xiàn)帶益智題標(biāo)簽的水果、寶盒、蝴蝶和星星,游戲者用鼠標(biāo)滑過前進(jìn)中的小龍時(shí),小龍會(huì)跳起來,游戲者通過控制小龍?zhí)S,獲取分值和能量。在游戲開始時(shí),有2只小龍?jiān)谛羞M(jìn),游戲者將鼠標(biāo)滑過小龍,控制其向上跳躍;小龍行進(jìn)過程中會(huì)不斷消耗能量(健康值),且行進(jìn)途中會(huì)出現(xiàn)石頭障礙物,小龍如果沒有避開障礙物,健康值將快速遞減;如果有2只以上小龍向上跳躍碰到飛過的水果,將增加健康值。游戲者增加分值主要通過碰撞飛過的寶盒和星星,任何一只小龍?zhí)S時(shí)碰到附有益智題正確答案的星星即可增加分值,而游戲者要通過碰撞寶盒得分,需要有2只小龍向上跳躍碰到飛過的附有益智題正確答案的寶盒,才能增加分值,隨著分值增加到一定程度,會(huì)增加小龍數(shù)量。相反,如果游戲者在控制小龍?zhí)S時(shí)碰到飛過的附有錯(cuò)誤答案的蝴蝶,將減少分值;最后,當(dāng)小龍穿越所有障礙或健康值耗盡時(shí),游戲結(jié)束。游戲運(yùn)行流程如圖l所示。
1.2主要元件設(shè)計(jì)
基于Flash的跳跳龍益智游戲素材準(zhǔn)備涉及元件設(shè)計(jì)與場(chǎng)景設(shè)計(jì)。元件設(shè)計(jì)中小龍的角色與動(dòng)作設(shè)計(jì)是核心,角色將Q版龍頭像與卡通兒童身相結(jié)合進(jìn)行設(shè)計(jì),其在游戲中主要是側(cè)面行進(jìn)的動(dòng)態(tài)形象,利用影片元件支持角色行進(jìn)中的眨眼、擺臂等動(dòng)作;同時(shí),動(dòng)態(tài)的小龍角色在闖關(guān)時(shí),遭遇分值、健康狀態(tài)條增減時(shí)會(huì)出現(xiàn)不同表情,還需在角色影片元件中嵌人腳本實(shí)現(xiàn)不同表情的變換。為了提高游戲運(yùn)行效率,游戲只采用一個(gè)場(chǎng)景,游戲中水果、寶盒、蝴蝶和星星等元素也只設(shè)計(jì)一款形象;通過游戲場(chǎng)景的循環(huán)移動(dòng)實(shí)現(xiàn)小龍的行進(jìn)效果,水果、寶盒、蝴蝶和星星等元素以反復(fù)飄移形式出現(xiàn)、消失。
1.3需要解決的主要問題
在深入研究Flash技術(shù)在移動(dòng)終端的應(yīng)用后,結(jié)合手機(jī)益智游戲特點(diǎn),手機(jī)跳跳龍益智游戲設(shè)計(jì)需要解決的核心問題包括:
(1)需要對(duì)游戲中的對(duì)象實(shí)例進(jìn)行碰撞檢測(cè),在控制小龍?zhí)S過程中,小龍?jiān)?shí)例與水果、寶盒、星星和蝴蝶等元件實(shí)例之間可能發(fā)生碰撞,檢測(cè)實(shí)例之間的碰撞是游戲設(shè)計(jì)的關(guān)鍵。
(2)通過鼠標(biāo)懸停事件進(jìn)行小龍上下跳躍控制,但小龍前進(jìn)是自動(dòng)運(yùn)行,因此需要對(duì)運(yùn)行狀態(tài)進(jìn)行智能判斷;小龍?zhí)S的運(yùn)行算法體現(xiàn)在Y方向上的加速度控制與跳躍范圍控制。
(3)實(shí)時(shí)進(jìn)行游戲者的分值呈現(xiàn)與小龍健康狀態(tài)條顯示,實(shí)現(xiàn)對(duì)游戲者的評(píng)價(jià)。在游戲運(yùn)行中動(dòng)態(tài)顯示當(dāng)前玩家的游戲得分與小龍剩余健康值,從而控制小龍數(shù)量和游戲進(jìn)程。
(4)智能手機(jī)內(nèi)存較臺(tái)式電腦小,因此要求游戲程序邏輯設(shè)計(jì)相對(duì)嚴(yán)謹(jǐn),需考慮各種可能事件及意外情況,以適應(yīng)手機(jī)應(yīng)用程序代碼利用率高的特點(diǎn)。
2關(guān)鍵技術(shù)分析
基于Flash的手機(jī)跳跳龍益智游戲設(shè)計(jì)關(guān)鍵技術(shù)包括:設(shè)置游戲場(chǎng)景循環(huán)移動(dòng),小龍?zhí)S動(dòng)作,水果、寶盒、蝴蝶、星星等游戲關(guān)卡元素的反復(fù)飄移出現(xiàn),以及小龍與水果、寶盒、蝴蝶、星星的碰撞檢測(cè)等。
2.1游戲場(chǎng)景循環(huán)移動(dòng)設(shè)置
游戲場(chǎng)景需要呈現(xiàn)沒有盡頭的綠樹叢林,因此需設(shè)置循環(huán)移動(dòng)的背景;在設(shè)計(jì)好游戲主場(chǎng)景后,復(fù)制一個(gè)相同場(chǎng)景,緊挨在與主場(chǎng)景移動(dòng)方向相反的一側(cè),確保兩個(gè)場(chǎng)景水平對(duì)齊;當(dāng)主場(chǎng)景沿水平方向移動(dòng)了一個(gè)場(chǎng)景寬度后,備份場(chǎng)景也一起移動(dòng)同樣的單位長(zhǎng)度,此時(shí)備份場(chǎng)景剛好完全代替了主場(chǎng)景位置。當(dāng)這一移動(dòng)效果循環(huán)執(zhí)行時(shí),前一場(chǎng)景移動(dòng)停止的畫面與后一場(chǎng)景的畫面內(nèi)容完全一致,游戲運(yùn)行時(shí)則呈現(xiàn)出沒有盡頭的場(chǎng)景畫面。背景循環(huán)控制方法主要是基于進(jìn)入幀事件,設(shè)置背景的x坐標(biāo)以固定值遞減,當(dāng)移動(dòng)到坐標(biāo)值偏離原點(diǎn)達(dá)到場(chǎng)景寬度時(shí),重新初始化回到原點(diǎn)。
2.2小龍上下跳躍動(dòng)作
小龍?zhí)S動(dòng)作是基于鼠標(biāo)滑過事件觸發(fā)小龍?jiān)坐標(biāo)值遞減或遞增實(shí)現(xiàn)的。首先,引人跳躍狀態(tài)變量jumping與垂直跳躍方向的遞增變量high。變量jumping是跳躍動(dòng)作運(yùn)行的判斷條件值,初始值設(shè)置為False;當(dāng)鼠標(biāo)滑過小元件時(shí),將變量jumping置為True,此時(shí)滿足跳躍動(dòng)作條件,當(dāng)小龍完成一次跳躍,回到Y(jié)方向初始位置時(shí),再次將變量jumping置為False,等待下一次鼠標(biāo)滑過事件與動(dòng)作。小龍?zhí)S動(dòng)作主要通過改變?cè)撛坐標(biāo)值實(shí)現(xiàn)上跳和下落,變量high初始值設(shè)置為負(fù)整數(shù),小龍?jiān)腨坐標(biāo)值以high為步長(zhǎng)循環(huán)累加,實(shí)現(xiàn)上跳動(dòng)作;同時(shí)設(shè)置high以個(gè)位正整數(shù)遞增,這樣既能實(shí)現(xiàn)小龍下落動(dòng)作,還能控制跳躍有一定的加速度變化。
2.3水果、寶盒、蝴蝶、星星等元素反復(fù)飄移出現(xiàn)
各個(gè)游戲關(guān)卡中能夠影響小龍分值、健康值變化的水果、寶盒、蝴蝶、星星等元素,是基于同一組元件實(shí)例在飄移出游戲窗口后,結(jié)合隨機(jī)函數(shù)重置元件實(shí)例的x坐標(biāo)值,實(shí)現(xiàn)相關(guān)元素反復(fù)飄移出現(xiàn)。水果、寶盒、蝴蝶、星星等元件實(shí)例的移動(dòng)方向與小龍相反,它們沿水平方向以一定常量遞減x坐標(biāo)值,直到移出游戲窗口,以隨機(jī)函數(shù)產(chǎn)生2位數(shù)偏移值累加到初始x坐標(biāo)值,設(shè)置元件實(shí)例出現(xiàn)在下一游戲關(guān)卡。寶盒、蝴蝶、星星等元件中的益智題是100以內(nèi)的加、減、乘運(yùn)算題,由隨機(jī)函數(shù)產(chǎn)生兩個(gè)2位數(shù),分別賦值給元件中的兩個(gè)動(dòng)態(tài)文本框,運(yùn)算符及等號(hào)直接在靜態(tài)文本框中進(jìn)行設(shè)置,運(yùn)算結(jié)果由第3個(gè)動(dòng)態(tài)文本框顯示。如果是正確的益智題,結(jié)果由系統(tǒng)運(yùn)算產(chǎn)生;如果是錯(cuò)誤的益智題,則直接由隨機(jī)函數(shù)產(chǎn)生l位自然數(shù)。
2.4小龍與水果、寶盒、蝴蝶、星星碰撞檢測(cè)
游戲場(chǎng)景中小龍?jiān)?shí)例跳躍碰撞游戲關(guān)卡中的元素,是基于hitTest函數(shù)進(jìn)行相交或重疊檢測(cè)的,語(yǔ)法格式為longl.hitTest(guanqial)。其中l(wèi)ongl為被檢測(cè)的小龍?jiān)?shí)例,guanqial為用來檢測(cè)的水果、寶盒、蝴蝶、星星等元件實(shí)例。如果函數(shù)返回值為True,說明兩個(gè)實(shí)例發(fā)生了碰撞,否則兩個(gè)實(shí)例輪廓未交叉,不存在碰撞。
3游戲中主要功能模塊實(shí)現(xiàn)
3.1小龍?zhí)S功能實(shí)現(xiàn)
游戲中的小龍由影片元件創(chuàng)建,利用MOUSE_OVER事件實(shí)現(xiàn)小龍?zhí)S控制。當(dāng)鼠標(biāo)劃過元件實(shí)例時(shí),小龍向上跳躍,并以一定跳躍高度作為返回條件值。關(guān)鍵代碼如下:
3.2小龍與水果、星星、寶盒、蝴蝶碰撞功能實(shí)現(xiàn)
游戲應(yīng)用hitTest()函數(shù)實(shí)現(xiàn)小龍與水果、寶盒、星星、蝴蝶的碰撞功能檢測(cè)。其中小龍與水果或石頭碰撞將增減健康值,而小龍與寶盒、星星或蝴蝶碰撞將增減分值。
3.2.1小龍與水果、石頭碰撞功能實(shí)現(xiàn)
當(dāng)小龍碰撞到水果,健康值增加,若碰撞到石頭,則健康值減少。小龍碰撞到水果時(shí),水果運(yùn)行下沉動(dòng)作,并統(tǒng)計(jì)與水果發(fā)生碰撞的小龍數(shù)量,若達(dá)到兩只以上,健康值增加10個(gè)單位,否則健康值不變。小龍行進(jìn)過程中若碰撞石頭,每碰撞一次將使健康值減少10個(gè)單位。由于增減健康值算法類似,而小龍與水果的碰撞算法具有典型性,以下列舉關(guān)鍵代碼:
3.2.2小龍與星星、寶盒碰撞功能實(shí)現(xiàn)
玩家控制小龍與附有正確益智題的星星、寶盒碰撞都將增加分值,每只小龍碰撞一次星星,星星運(yùn)行下沉動(dòng)畫,分值增加100個(gè)單位,而小龍需要同時(shí)碰撞兩只以上的寶盒,寶盒才運(yùn)行下沉動(dòng)畫,分值增加100個(gè)單位。以上兩種碰撞算法類似,而小龍與寶盒的碰撞算法具有典型性,以下列舉關(guān)鍵代碼:
3.4增加小龍數(shù)量功能實(shí)現(xiàn)
游戲過程中,控制小龍?zhí)S碰撞附正確益智題的游戲關(guān)卡元件實(shí)例,分值不斷遞增,在健康值不為0,且增加分值達(dá)到10倍于單次碰撞得分值時(shí),將新增一只小龍移入游戲場(chǎng)景中。游戲場(chǎng)景外設(shè)置3只小龍?jiān)?shí)例作為玩家不斷挑戰(zhàn)游戲關(guān)卡成功的獎(jiǎng)勵(lì),每達(dá)到一次闖關(guān)條件,場(chǎng)景中就新增一只小龍。關(guān)鍵代碼如下:
4結(jié)語(yǔ)
本文提出一種基于Flash技術(shù)的跳跳龍手機(jī)益智游戲設(shè)計(jì)方案,分析了游戲?qū)崿F(xiàn)需要解決的主要問題與關(guān)鍵技術(shù),詳細(xì)介紹了主要功能模塊實(shí)現(xiàn)方法。對(duì)生成的游戲原型在移動(dòng)端進(jìn)行功能測(cè)試和兼容性測(cè)試,測(cè)試結(jié)果良好,說明所設(shè)計(jì)的游戲運(yùn)行穩(wěn)定,具備較好的兼容性。
然而,該游戲在性能上還可作進(jìn)一步完善與優(yōu)化,由于手機(jī)在CPU和內(nèi)存配置上遠(yuǎn)低于臺(tái)式機(jī),移動(dòng)端的游戲運(yùn)行如果能盡可能少地占用資源,用戶體驗(yàn)效果將更佳。若游戲運(yùn)行場(chǎng)景中過多使用位圖會(huì)占用較多內(nèi)存空間,而矢量圖太多又消耗CPU資源,性能優(yōu)越的游戲能夠在二者之間找到平衡。該跳跳龍手機(jī)益智游戲中的元件均采用矢量圖設(shè)計(jì),所設(shè)計(jì)的元件包括小龍角色、游戲關(guān)卡角色(水果、星星、寶盒、蝴蝶等)以及背景等。前期設(shè)計(jì)時(shí)每個(gè)游戲關(guān)卡角色都設(shè)計(jì)了不同矢量元件,雖然這些矢量圖元件占用內(nèi)存較少,但在運(yùn)行時(shí)會(huì)占用較多CPU資源。針對(duì)這些情況,在后期修改時(shí),只保留了一組關(guān)卡元件形象。因此,該游戲今后的優(yōu)化方向?qū)@如何確保運(yùn)行時(shí)手機(jī)內(nèi)存資源與CPU資源的平衡,在滿足用戶需求的情況下,減少影片元件中逐幀動(dòng)畫的使用,盡量使用壓縮的音頻格式等。