王宇 李丹丹
摘要:本文針對有養(yǎng)殖需求但沒有時間養(yǎng)殖的上班族,設計開發(fā)一款植物養(yǎng)成類游戲來滿足他們需求,使他們可以隨時體驗養(yǎng)成類游戲樂趣,是本游戲設計開發(fā)初衷?!爸参镳B(yǎng)成記”手機單機養(yǎng)成類游戲使用UnrealEngine4引擎,可以快速實現(xiàn)游戲的設計與開發(fā),構建多平臺部署。為其他有創(chuàng)意的游戲設計開發(fā)者快速高效的實現(xiàn)游戲創(chuàng)意提供了一種思路。
關鍵詞:手機游戲;養(yǎng)成類游戲;游戲引擎UE4
中圖分類號:TP317 文獻標識碼:A 文章編號:1005-5312(2018)18-0162-02
一、引言
快節(jié)奏的生活讓上班族很難有時間養(yǎng)植物,但對植物的喜愛又使人們希望在空余時間養(yǎng)殖植物,于是植物養(yǎng)成游戲順應著人們的需求而誕生。截止2017年6月,根據(jù)互聯(lián)網(wǎng)絡信息中心統(tǒng)計,中國手機游戲用戶已超過3.8億。
由此可見,針對上班族制作的手機游戲有著潛在的巨大市場與經濟效益。本游戲是基于UnrealEngine4(以下簡稱UE4)軟件平臺,結合運用SpeedTree以及Maya軟件制作的安卓端的單機植物養(yǎng)成類游戲。
二、核心技術簡介
UnrealEngine4是一款用于三維場景構建的虛擬現(xiàn)實軟件。其強大的渲染功能、可視化系統(tǒng)、全新的工作流程、深入的工具集以及完全的C++源碼使得該引擎迅速成為3D游戲制作的首選軟件。開發(fā)者使用游戲引擎進行游戲開發(fā)能夠降低開發(fā)成本、縮短開發(fā)周期、提高游戲品質并降低風險,從而高效的實現(xiàn)開發(fā)者的創(chuàng)意。
SpeedTree的樹木類建模功能和大量的模型庫,為游戲提供了數(shù)百種植物品種。通過SpeedTree制作出植物的生長動畫可以使玩家能夠感受植株變化的樂趣。Maya主要制作場景天空盒以及盆栽等基本模型,UE4強大的可視化藍圖實現(xiàn)游戲所需的所有的交互功能。
三、系統(tǒng)設計分析
(一)游戲機制
養(yǎng)成游戲作為一種“造夢”的游戲類型,可玩性是由游戲機制產生的,游戲機制涵蓋物理機制、內部經濟、漸進機制、戰(zhàn)術機動和社會互動。
本文主要涉及游戲的物理機制與內部經濟來產生與增強游戲的可玩性。本游戲的物理機制是指玩家可對盆摘進行移動、縮小與放大等改變物體位置的操作;內部經濟則由植物的健康值體現(xiàn):玩家對植株進行澆水、除草等操作來積累植物的健康值,當植株的健康值達到一定數(shù)值時,植株便會成長。
(二)系統(tǒng)模塊設計
根據(jù)上班族群體的特點,本游戲設計分5個模塊:
1.游戲模塊
每周登陸一次,澆水使植物保持存活狀態(tài);每天登陸,查看植物每天的變化并鏟除每日出現(xiàn)的雜草,增加植物的健康值。
2.雜草隨機生成模塊
負責生成一定數(shù)量的雜草,隨機排列在電子花盆中。
3.數(shù)據(jù)存儲模塊
用于游戲用戶登陸的數(shù)據(jù)保存,獲得系統(tǒng)時間差,實現(xiàn)用戶再次登入時記錄前一天的數(shù)據(jù)。
4.交互模塊
負責游戲界面旋轉,負責灑水動畫、除草動畫。
5.音效模板
負責管理游戲的各種音效,如:游戲背景音效、灑水音效、除草音效等。設計模塊,如圖1所示。
玩家主要可進行澆水、除草操作,享受陪伴植物生長以及收獲成果的過程。游戲場景為一矩形界面,屏幕中央放置著電子盆栽。操作方法為點擊游戲圖標進行對應播種、除草、灑水操作。
在進行游戲操作時,玩家每點擊一個物體,系統(tǒng)都需要判斷此物體是玩家所種植的植物還是為增加游戲真實性隨機生成的雜草。若物體判定為植物,玩家可進行的操作便是給其澆水;若為雜草,玩家所進行的操作便是清除雜草。
(三)界面設計
游戲啟動后首先呈現(xiàn)在玩家面前的是歡迎界面,歡迎界面最基本、也最主要的元素是游戲的標識、進入游戲以及退出游戲按鈕。這些元素能讓玩家明白游戲名稱以及是否進行游戲,如圖2所示。
游戲界面為矩形,屏幕中央放置著電子盆栽。玩家在游戲過程中有暫停的需求,暫停時可進行游戲音效管理、刷新游戲、退出游戲等動作。使用Triggers觸發(fā)事件從操作界面彈到暫定界面,進行相應動作。
四、系統(tǒng)實現(xiàn)
(一)植物變化實現(xiàn)
在“植物養(yǎng)成記”游戲中,玩家登陸游戲達到一定時長時會發(fā)現(xiàn)植物的微小變化,直至達到設定的植物周期后,玩家便可收獲植物并獲得獎勵。本文以SpeedTree(Trunk生長)實現(xiàn)了APP效果。導出10幀的生長動畫,導入MAYA,再進行模型導出,將對應的模式導入UE4利用藍圖實現(xiàn)變化交互,制作出demo可以快速高效實現(xiàn)植物變化實現(xiàn)。
(二)交互實現(xiàn)
交互實現(xiàn)即本游戲設計界面在UE4中使用C++代碼實現(xiàn)自動旋轉花盆、獲得時間差,再次登陸時會呈現(xiàn)植物不同與上一次登陸的成長狀態(tài)。
1.自動旋轉物體
函數(shù)在Tick()生成類中運行,開頭需引入頭文件:#include"Engine/World.h"
核心代碼如下:
voidUBoxComponent::TickComponent (float DeltaTime,ELevelTickTickType,F(xiàn)Ac torComponentTic kFunc tion*ThisTickFunction)
{
Super::TickComponent
(DeltaTime, TickType, ThisTickFunction):
2.獲得登陸與退出的時間差
本游戲在UE4中創(chuàng)建SaveGame對象的實例或者副本存儲時間差數(shù)據(jù),玩家點擊開始按鈕通過SaveGameToSlot將SaveGame對象保存到磁盤驅動器中的文件里,點擊退出按鈕時亦是如此。玩家登入達到一定時間,植物會產生生長細微的變化。為實現(xiàn)這種變化可以使用了選擇結構算法。
(三)隨機生成實現(xiàn)
區(qū)域內實現(xiàn)隨機生成一定數(shù)目的雜草功能,使用了UE4提供的藍圖可視化腳本。
除草交互設計由以下兩個部分組成:
1.生成雜草
每日在游戲界面花盆區(qū)域內指定區(qū)域隨機生成隨機大小一定數(shù)量的雜草。通過這種隨機邏輯設計,即可以實現(xiàn)游戲中雜草的隨機排列,也為植株留下生存空間,避免在植株種植的位置生成雜草。
2.清除雜草
在界面中,選中雜草觸發(fā)出現(xiàn)相應的操作圖標,點擊圖標便可進行相應操作。
在藍圖中RandomStream(隨機流)能重復生成隨機數(shù)并應用隨機數(shù)。根據(jù)函數(shù)功能的不同,輸出不同類型的隨機值。本文采取隨機輸出(Min,Max)范圍內的一個浮點型。利用MakeVector容器保存隨機流函數(shù)Random Float in Range from Stream所構成的平面區(qū)域信息,使得SpawnActor即本文中的雜草,能在特定區(qū)域內隨機生成一定數(shù)量的雜草。
(四)操作實現(xiàn)
本游戲的操作主要是對植物進行灑水、對盆栽中的雜草進行清除,使用了UE4中可視化腳本系統(tǒng)藍圖,以實現(xiàn)清除雜草和灑水動作(以除草為例),需要在UMG中制作按鈕控件,添加Triggers事件,通過DestroyActor節(jié)點摧毀已生成的雜草。
(五)游戲輸出
游戲demo制作完成后,需對游戲進行打包,使其能夠獨立于軟件而運行。進行測試,運行效果良好,初步達成實驗目的。
五、結語
本文詳細敘述“植物養(yǎng)成記”游戲基于UE4游戲引擎的設計思路與技術實現(xiàn)細節(jié)。
本游戲的邏輯設計清晰,提供玩家澆水、除草兩種主要操作,讓上班族在零散時間內享受閑適舒服的游戲環(huán)境,并使玩家體驗到植物養(yǎng)成的喜悅,為實現(xiàn)植物養(yǎng)成游戲提供了高效快捷的方法,這種使用UE4設計與開發(fā)的方法,能為游戲開發(fā)者實現(xiàn)創(chuàng)意提供借鑒與參考意義。