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