錢寶健 朱世奕 汪鵬
關鍵詞:手游;Unity3D;AR;安卓系統(tǒng);人機對戰(zhàn)
中圖分類號:TP37 文獻標識碼:A
文章編號:1009-3044(2023)20-0146-04
0 引言
從撥號上網(wǎng)到如今的移動互聯(lián)網(wǎng)時代,游戲作為一種娛樂形式也隨著時代的發(fā)展衍化出不同的樣貌和業(yè)態(tài)[1],從幾十年前的黑白機純文字的精簡游戲,到現(xiàn)在畫面絢麗、功能豐富的龐大游戲,充分說明游戲領域是一個發(fā)展?jié)摿Σ贿d色于其他計算機領域的科目。一款好的游戲不僅可以與開發(fā)者進行跨時間、跨空間的情感交流,更重要的是為用戶提供有效的娛樂放松方式。
電子游戲已經(jīng)成了人們茶余飯后常見的娛樂項目之一,比起傳統(tǒng)的電腦游戲、主機游戲、電視游戲等,手游具有更加方便的便攜性以及更為簡單的操作性[2]。但國內(nèi)的大部分手游包含以下特點:周期短、投資小、受益高,導致在移動互聯(lián)網(wǎng)時代,稚嫩的手游行業(yè)是離錢最近的行業(yè)[3],但這也導致一些手游在玩法上難以創(chuàng)新。同時,手游不管是在技術還是玩法上都有了巨大進步,玩家的口味也越發(fā)刁鉆,他們對畫面、玩法等都提出了更高要求。
卡牌游戲是游戲類型的一種,它的玩法來自傳統(tǒng)的桌面游戲。隨著新的游戲形式的融合,當前的卡牌游戲已經(jīng)不再以單一形式出現(xiàn),通過吸收借鑒其他類型游戲的特色玩法,使當今的卡牌游戲在原有的規(guī)則上增加了越來越多的可玩性和玩法復雜度[4]。為此,本文擬采用LBS(基于地理位置服務)和AR技術開發(fā)一款能夠讓玩家體驗新的寵物捕捉融合傳統(tǒng)卡牌對戰(zhàn)玩法的游戲。
1 現(xiàn)有手游普遍存在的問題
通過對中國手游的市場公開的相關資料進行調(diào)研和分析,發(fā)現(xiàn)目前手游市場存在一些普遍的問題。第一,大量手游的游戲內(nèi)容過于單一,缺乏新鮮感,容易讓玩家失去興趣。第二,游戲的互動性較低,多數(shù)手游只是讓玩家宅在固定場所,缺少與周圍場景與玩家的互動,長期下去對玩家的身體也是有害處的。第三,一些手游的游戲設計存在不合理的問題,例如難度過高或過低,任務設計不合理等問題,會影響游戲平衡性和用戶體驗。
2 游戲分析與設計
2.1 功能需求分析
通過前期對手游玩法的深度調(diào)研,以及本游戲的設計目標,本游戲根據(jù)玩法劃分為以下幾個主要模塊:AR捕捉模塊、小游戲模塊、寵物管理模塊和人機對戰(zhàn)模塊。下面將逐一詳細介紹各模塊。
2.2 AR 捕捉模塊
本游戲希望通過嵌入地圖SDK,可以根據(jù)玩家的位置,對周圍地圖環(huán)境進行3D展示;然后借助手機攝像頭,在周圍地圖展示的AR場景上進行捕捉寵物。捕捉到的寵物會放進寵物倉庫,可以用于對戰(zhàn)模塊。
2.3 寵物管理模塊
寵物管理模塊分成四個子模塊,分別是背包模塊、寵物倉庫模塊、寵物圖鑒模塊和寵物技能卡牌配置模塊。背包模塊用于顯示出戰(zhàn)的寵物信息以及道具信息。玩家可以查看道具信息,可以通過拖拽道具為寵物加載道具或者卸除道具,同時也可借助道具對寵物進行升級。
寵物倉庫模塊主要用來保存默認領養(yǎng)和捕捉到的寵物信息,也可以對寵物進行放生,以及對寵物進行組隊對戰(zhàn)。
寵物圖鑒模塊主要是用來展示寵物頭像和相關信息,點擊頭像按鈕可翻動圖鑒,未捕獲/擁有的寵物會以黑色頭像顯示。點擊頭像顯示對應寵物信息,未捕捉則信息為未知。
寵物技能卡牌配置模塊用于管理出戰(zhàn)寵物的技能和管理組隊對戰(zhàn)功能。為寵物配備技能的過程為點擊標簽加載對應系別的卡牌,滑動瀏覽卡牌,點擊選中之后再次點擊寵物技能欄。組隊出戰(zhàn)前需要滿足以下規(guī)則:隊伍必須滿員,所有寵物必須配備齊3個技能,隊伍技能系別個數(shù)小于2。
2.4 小游戲模塊
為了使得該款游戲玩法更加多樣,本游戲設計了小游戲模塊,主要包括兩種小游戲,分別是樹果道具小游戲和礦石道具小游戲。玩家在規(guī)定時間內(nèi)搖晃手機獲得樹果類道具。礦石道具小游戲需要讓玩家選擇游玩難度,并在規(guī)定時間和步數(shù)內(nèi)根據(jù)游戲規(guī)則獲取礦石類道具。獲取到的道具可用于寵物技能和寵物對戰(zhàn)。
2.5 人機對戰(zhàn)模塊
本游戲設計了人機對戰(zhàn)模式,該模塊總計9個關卡,每次通過一個關卡可以依次解鎖下一個關卡。對于戰(zhàn)斗的設計分為三個階段:回合開始:擲骰,出牌,使用囤積點,AI出牌?;睾现校焊鶕?jù)速度生成行動條并依次切換寵物釋放技能?;睾辖Y束:異常狀態(tài),道具或各種在回合結束觸發(fā)的效果生效。電腦根據(jù)出牌算法計算寵物技能的出牌順序;玩家可以從UI界面自行選擇自己寵物技能的出牌順序當某一方的寵物全部被擊敗時,戰(zhàn)斗結束,對方宣告勝利。
2.6 游戲整體架構
根據(jù)本游戲的功能分析和相關模塊設計,設計出系統(tǒng)的整體架構。本系統(tǒng)自底向上包含四層,每一層獨立實現(xiàn)各自的功能模塊,具體架構圖如圖1所示。最底層為平臺層,玩家基于安卓操作系統(tǒng)環(huán)境才能正常安裝該游戲。平臺層上層為數(shù)據(jù)資源層,它包括靜態(tài)配置數(shù)據(jù)和一些動態(tài)加載的數(shù)據(jù),即系統(tǒng)中的配置文件與玩家存檔數(shù)據(jù)。數(shù)據(jù)資源層上層為應用系統(tǒng)層,它分為核心功能,模塊功能和第三方SDK功能。核心功能體現(xiàn)了該游戲本質(zhì)是一個卡牌對戰(zhàn)游戲,模塊功能主要體現(xiàn)了該游戲對傳統(tǒng)卡牌游戲的一個創(chuàng)新,融合了增強現(xiàn)實技術和基于位置服務的技術。最上層為玩家。
3 游戲實現(xiàn)
3.1 開發(fā)環(huán)境
Unity游戲引擎是由一家名為 Unity Technologies 的公司開發(fā)的功能十分強大的支持跨平臺的游戲引擎[5],相較于傳統(tǒng)游戲引擎,它的功能強大,支持跨平臺運行[6]。開發(fā)者可以調(diào)用Unity3D的各種API簡單方便地解決眾多有關開發(fā)的技術問題 ,同時Unity3D 可以根據(jù)需求安裝對應的插件,設計者可以簡單方便地完成對應功能的設計;Unity3D也允許玩家輕松創(chuàng)建交互式內(nèi)容,如3D視頻游戲、建筑可視化、實時3D 動畫等。
本游戲基于Unity3D引擎和C#語言進行開發(fā),系統(tǒng)整體使用單例模式進行管理,并使用觀察者模式來減少代碼耦合度,使用JSON進行數(shù)據(jù)交換,由此來提高游戲的運行效率。游戲最后打包成安卓系統(tǒng)可運行的apk格式,需要用戶開放定位權限、攝像機權限和存取數(shù)據(jù)的權限。
3.2 寵物捕捉模塊實現(xiàn)
寵物捕捉模塊實現(xiàn)了兩種捕捉場景,場景一是通過接入GoMapSDK后,調(diào)用API獲取玩家當前設備的具體位置,并根據(jù)當前位置展現(xiàn)附近的實景地圖,通過在實景地圖上設置相應的事件供玩家進行捕捉。場景二是通過接入EasyARSDK,并開啟攝像頭權限,即可開啟AR捕捉模塊。玩家點擊主界面的實景捕捉后進入實景捕捉模塊,如圖2所示:左上角分別為背包、倉庫、卡牌配置;右上角為三個事件的手動刷新按鈕,退出按鈕,控制虛擬搖桿顯隱按鈕。玩家可以點擊刷新按鈕刷新出對應的事件并顯示在地圖上,玩家需要攜帶設備前往或者使用搖桿控制角色前往事件地點。在玩家距離事件大約10m觸發(fā)碰撞檢測,玩家可以選擇進入或放棄事件,如圖3所示。
玩家在進入寵物捕捉事件并授予程序調(diào)用攝像頭權限后,即可進入AR捕捉。玩家點擊右上角可選擇背包中不同的精靈球。進入事件后寵物模型將隨機刷新至玩家的周圍場景,玩家可以小幅度移動設備,讓后置攝像頭找到寵物,并調(diào)整角度,力度拋射出精靈球,精靈球接觸到寵物之后會進行捕捉判定。捕捉會基于寵物自身的稀有度和精靈球的發(fā)射參數(shù)判斷是否捕捉成功,捕捉成功后會提示“捕捉成功”,將寵物放入倉庫后更新保存玩家信息,否則會提示“捕捉失敗”,玩家可以選擇繼續(xù)捕捉,如圖4所示。
3.3 寵物管理模塊實現(xiàn)
1) 背包模塊
玩家點擊背包后,將根據(jù)背包中出戰(zhàn)的三只寵物生成對應的信息。并在右側生成所有的道具,玩家可以點擊顯示道具信息,拖動進行瀏覽,將可使用道具與可攜帶道具(根據(jù)背景識別)拖到寵物身上即使用或攜帶。
2) 倉庫模塊
玩家點擊倉庫后,將根據(jù)倉庫信息生成所有的寵物圖標,玩家可以隨意拖曳調(diào)換它們的位置或拖入背包。點擊寵物圖標,會在右側顯示它們的屬性值。連續(xù)點擊三次放生即銷毀對應的寵物(攜帶的道具會放回背包中)。主要實現(xiàn)邏輯包括寵物圖標的生成、寵物圖標的拖拽交互和寵物放生。
3) 寵物圖鑒模塊
玩家點擊主界面的冒險手冊按鈕后,加載出圖鑒界面,玩家可以翻頁瀏覽圖鑒,點擊查看對應寵物信息,未捕捉過的寵物呈現(xiàn)為黑色背景。開啟圖鑒的方式有兩種:方式一通過局域網(wǎng)交易獲得;方式二通過捕捉野生寵物并培養(yǎng)進化獲得。效果圖如圖5所示。
4) 寵物技能卡牌配置模塊
玩家點擊卡牌配置后,左側會加載出隊伍信息和已配置的技能。右側為可配置的卡牌與卡牌所屬的“訓練師專注”(卡牌所屬類別)標簽。拖動可瀏覽各個類別的卡牌,點擊選中卡牌,再次點擊寵物技能槽可以進行配置。當玩家的專注數(shù)大于2時,會提示玩家無法進入戰(zhàn)斗。實現(xiàn)邏輯是從DataMgr中獲取到卡牌配置文件的集合,遍歷它并獲取到每一個技能的信息并根據(jù)其生成一個預制體放入Content 下并根據(jù)Grid Layout Group組件進行整理。卡牌的名字將會改成對應的技能名,這也是技能配置時的數(shù)據(jù)索引。具體效果圖如圖6所示。
3.4 小游戲模塊實現(xiàn)
1) 樹果道具小游戲
玩家進入樹果獲取小游戲后,點擊屏幕中央的按鈕開始游戲,在10s內(nèi)搖晃手機會不斷生成不同的道具(每0.3s最多生成一個)并在屏幕邊緣的墻壁和其他道具進行彈跳,中間數(shù)字顯示了生成了多少個道具,當時間結束時生成的道具會全部放入背包中并更新保存玩家信息。實現(xiàn)邏輯通過使用API監(jiān)聽手機陀螺儀的信息,當陀螺儀的x或y軸的幅度大于一定值便會在屏幕中間生成一個樹果。該樹果具有碰撞體積,并隨機向一個方向發(fā)射。由于墻壁和樹果具有自定義物理材質(zhì)(高彈力且摩擦力為0) ,所以會出現(xiàn)屏幕彈跳的效果。核心代碼如下所示:
if (Input.acceleration.x > 4 || Input.acceleration.y >4||Input.GetMouseButtonDown(0))
{
//如果間隔時間少于0.3s 則該次搖動不會生成樹果
if(canIns)
{
timesTxt. text = (int. Parse(timesTxt. text) + 1). To?String();
GameObject g = (ResourceMgr.GetInstance().Load
int index = Random. Range(0, sprites. Count);
g.GetComponent
g.AddComponent
g. GetComponent
}}
2) 礦石道具小游戲
玩家進入礦石道具小游戲后,深層探索與淺層探索表示游戲難度的高低。高難度的游玩模式給予的步數(shù)和時間會更少,但獎勵品質(zhì)更高。進入游戲后玩家需要在生成的13×6的磚塊上尋找寶藏格,點擊非白色磚塊且非寶藏磚塊會顯示一個數(shù)字,數(shù)字代表它與寶藏格的水平+豎直距離之和。玩家需要在規(guī)定時間和步數(shù)之內(nèi)通過多個數(shù)字格判斷出寶藏格的位置,點擊寶藏格后會隨機生成一個道具放入背包,并更新保存玩家信息。如圖7所示。
3.5 人機對戰(zhàn)模塊實現(xiàn)
玩家點擊主界面的道館對戰(zhàn)后,將進入關卡選擇界面,共計有9關,起始只可以挑戰(zhàn)第一關,當通過一個關卡之后才可以挑戰(zhàn)后一關。玩家點擊一個關卡后,系統(tǒng)將根據(jù)當前關卡的配置文件生成敵人的信息。勝利的條件是擊敗對手所有的寵物。具體對戰(zhàn)過程分成以下三個階段。
出牌階段:當前回合開始,系統(tǒng)隨機擲骰,點數(shù)會對雙方玩家造成相同的效果。擲骰后,進入出牌階段,系統(tǒng)會根據(jù)存活寵物攜帶的技能隨機發(fā)3張卡牌,玩家根據(jù)費用出牌,出牌不可以超過當回合的費用上限。也可以使用囤積點(每回合剩余費用/2會變?yōu)槎诜e點)進行一些特殊操作,當玩家點擊回合結束時,AI 開始計算出牌并打出。
戰(zhàn)斗階段:雙方玩家的出牌會根據(jù)出牌寵物的速度進行重新排序,在左方以進度條的方式顯示,寵物根據(jù)進度條釋放技能(如果寵物的速度被降低或提高,那么也會重新排序進度條),當進度條的寵物被擊敗后,它本回合釋放的所有技能將會跳過。所有的非強化類技能釋放目標為對手場上的全部寵物。切換寵物的時機可以是當一個寵物釋放技能結束或上一個寵物被擊敗時。
回合結束階段:當行動條上的所有動作全部釋放完畢,開始進入回合結束的場景渲染,比如天氣,場地的持續(xù)回合計算,回合結束類道具的觸發(fā)和異常狀態(tài)如中毒、燒傷等。等待回合結束后,繼續(xù)下一個回合的出牌階段,直至有一方被擊敗。圖8展示了對戰(zhàn)界面效果圖。
4 結束語
本文介紹了一款基于Unity3D引擎并結合增強現(xiàn)實技術的手機游戲。該游戲的特點在于融合了增強現(xiàn)實技術,幫助玩家在虛擬與現(xiàn)實之間創(chuàng)造出屬于自己的游戲世界,讓玩家享受更加真實的游戲體驗,提高了游戲的趣味性、互動性和挑戰(zhàn)性。利用AR實現(xiàn)的寵物捕捉功能促使玩家在游戲場景中進行運動,使得該游戲成為鍛煉身體的一種新型途徑。為了使該游戲玩法更加多樣化,本款游戲設計了樹果道具和礦石道具小游戲功能。在游戲的開發(fā)過程中,為了確保游戲的穩(wěn)定性和流暢性,該游戲整體使用單例模式進行管理,并使用觀察者模式來減少代碼耦合度,使用JSON進行數(shù)據(jù)交換。在未來的游戲開發(fā)過程中,游戲開發(fā)者將不斷探索和創(chuàng)新,為用戶提供更加優(yōu)質(zhì)的游戲體驗。