李巖
電子游戲行業(yè)的發(fā)展自上世紀(jì)70年代至今已經(jīng)經(jīng)歷了50年的時(shí)間。隨著人類電子計(jì)算機(jī)技術(shù)的發(fā)展,越來(lái)越多新的技術(shù)被應(yīng)用于電子游戲的開(kāi)發(fā),不但給玩家?guī)?lái)了優(yōu)質(zhì)的游戲體驗(yàn),同時(shí)也推動(dòng)了全球游戲行業(yè)相關(guān)企業(yè)的發(fā)展。
自上個(gè)世紀(jì)90年代起,有別于二維空間的三維空間游戲(簡(jiǎn)稱3D游戲)進(jìn)入了玩家的視野,并憑借著更曠闊的探索空間和沉浸式的體驗(yàn),逐漸取代了傳統(tǒng)2D游戲,2010年,“次時(shí)代圖像基礎(chǔ)”概念的推出,使得法線貼圖,高光貼圖等技術(shù)在三維游戲中得以應(yīng)用,使得三維空間的游戲畫面更加逼真,在一段時(shí)間內(nèi),傳統(tǒng)3D游戲制作技術(shù)中的“手繪貼圖技術(shù)”,和利用新的貼圖光影技術(shù)的“次時(shí)代”技術(shù)成為了三維游戲中兩種主流的畫面風(fēng)格。次時(shí)代技術(shù)由于制作方法復(fù)雜,最初只有少數(shù)人可能進(jìn)行此項(xiàng)技術(shù)的運(yùn)用。2015年后,隨著Substance Painter,Blender,Zbrush等更多更加簡(jiǎn)單方便的圖像制作軟件的推出,使得原本復(fù)雜的圖像技術(shù)門檻進(jìn)一步降低,越來(lái)越多的人逐漸掌握了這項(xiàng)技術(shù),同時(shí)也促進(jìn)了游戲行業(yè)整體的發(fā)展。
在于技術(shù)領(lǐng)域,不同的應(yīng)用環(huán)境決定著需要用不同的語(yǔ)言來(lái)編寫軟件程序,目前市面上主流的Java,Html,C,C++,C#等語(yǔ)言應(yīng)用在程序開(kāi)發(fā),網(wǎng)頁(yè)開(kāi)發(fā),游戲開(kāi)發(fā)等各個(gè)領(lǐng)域。而相對(duì)而言,程序所要學(xué)習(xí)的內(nèi)容門檻較高。我是一名游戲策劃人員,在游戲行業(yè)從業(yè)多年,對(duì)程序領(lǐng)域有略微的了解,但是對(duì)于完全沒(méi)有程序基礎(chǔ)的我來(lái)說(shuō),利用傳統(tǒng)程序語(yǔ)言開(kāi)發(fā)游戲是一件非常困難的事情。如何才能夠快速掌握編程技術(shù),高效的完成游戲開(kāi)發(fā)也是我這些年來(lái)一直研究的課題。“可視化編程”作為一個(gè)“新”的概念,被很多想從事游戲開(kāi)發(fā)的愛(ài)好者所關(guān)注和研究。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,編程的門檻也逐漸降低。而可視化編程將成為未來(lái)游戲開(kāi)發(fā)的一大趨勢(shì)。目前主流的游戲開(kāi)發(fā)引擎當(dāng)中,Unity3d和unreal游戲引擎最為出名。而在早先,Epic(Unreal引擎制作商)就在其公司旗下的Unreal4游戲引擎中引入了“藍(lán)圖”的可視化編程系統(tǒng)?!八{(lán)圖”系統(tǒng)是基于C語(yǔ)言技術(shù)的龐大的編程系統(tǒng)。它將原本通過(guò)編程編寫代碼來(lái)實(shí)現(xiàn)的功能編程一個(gè)一個(gè)的節(jié)點(diǎn),通過(guò)對(duì)節(jié)點(diǎn)的鏈接進(jìn)行程序功能的實(shí)現(xiàn)。
相對(duì)而言,Unity3d游戲引擎雖然早先在畫面技術(shù)上落后于Unreal4,但是憑借其靈活易上手的特性,相比虛幻4擁有著更多的用戶群體。而Unity引擎基于C#編程語(yǔ)言,需要通過(guò)額外的編程工具進(jìn)行編程,并沒(méi)有屬于自己的官方可視化游戲引擎。隨著Unity3d 2018版的官方資源商店的推出,原來(lái)越多的用戶所開(kāi)發(fā)和制作的資源被放到了官方商店上。而Unity官方資源商店中的“Playmaker”可視化編程插件,擁有者較高的人氣。Playmaker是一款類似于Unreal4藍(lán)圖功能的節(jié)點(diǎn)式可視化編程插件,和Unreal4引擎的藍(lán)圖功能所不同,Playmaker將很多已經(jīng)實(shí)現(xiàn)好的功能封裝到一個(gè)節(jié)點(diǎn)中,從而大大的提升了游戲開(kāi)發(fā)效率,而Unreal4需要若干個(gè)子節(jié)點(diǎn)才能夠完成Playmaker一個(gè)節(jié)點(diǎn)所需要的內(nèi)容。
Playmaker插件相對(duì)出名的第二個(gè)原因在于,PC(電腦游戲)平臺(tái)著名的獨(dú)立游戲《Inside》以及暴雪《爐石傳說(shuō)》中的部分功能都是通過(guò)Playmaker進(jìn)行實(shí)現(xiàn)。Playmaker插件是由第三方軟件開(kāi)發(fā)商“Hutong Games”所開(kāi)發(fā)的一款專門用于Unity平臺(tái)的可視化編程插件。它為用戶提供了一整套的可視化的解決方案,讓用戶可以無(wú)需編寫腳本代碼,就能控制Unity中的游戲?qū)ο?,從而?shí)現(xiàn)功能和交互邏輯。Playmaker的使用邏輯非常清晰,游戲中的物體如果要進(jìn)行某種行為,我們都可以把它細(xì)分成一個(gè)由多個(gè)步驟組成的序列事件。
其基本的邏輯為,在Unity的場(chǎng)景(scene)中創(chuàng)建一個(gè)物體(Creat Object),將該物體拖到Playmaker的可視化編程面板中,即可開(kāi)始對(duì)該物體的功能編寫。在Unity引擎中,一個(gè)物體所要實(shí)現(xiàn)功能是通過(guò)一個(gè)個(gè)的組件來(lái)實(shí)現(xiàn)的。有的組件是官方自帶的,而更多的功能時(shí)通過(guò)腳本組件來(lái)實(shí)現(xiàn)的。利用PlayMaker所實(shí)現(xiàn)的功能其實(shí)也是一個(gè)組件,功能和腳本功能類似。
經(jīng)過(guò)了對(duì)Playmaker插件一個(gè)月的探索和研究,已經(jīng)對(duì)此插件所能夠?qū)崿F(xiàn)的功能有了基本的了解。該插件所使用的命令與C#編寫基本能夠很好的吻合,而且非常的靈活,代碼和PlayMaker可以同時(shí)對(duì)一個(gè)物體元素進(jìn)行功能的添加。
Playmaker目前最新版本為P17版,距離初版到現(xiàn)在已經(jīng)經(jīng)歷了十個(gè)年頭,目前的功能已經(jīng)相對(duì)完善來(lái)應(yīng)付游戲的開(kāi)發(fā)。打開(kāi)Playmaker插件的界面,我們可以將這個(gè)插件分為四個(gè)部分:第一部分為Playmaker插件的初始界面部分,在此界面,我們可以對(duì)插件進(jìn)行安裝,論壇快速訪問(wèn)以及版本更新確認(rèn)等。當(dāng)用戶在運(yùn)行Unity3d時(shí),該界面將自動(dòng)彈出。當(dāng)插件安裝完成后,會(huì)在Unity3d的頂部操作欄中添加了一個(gè)“Playmaker”的選項(xiàng),點(diǎn)擊這個(gè)選項(xiàng),可以看到編輯器、編輯器窗口,組建功能、工具按鈕以及幫助按鈕。雖然Playmaker的圖標(biāo)是一個(gè)中文的“玩”字,開(kāi)發(fā)他們的公司又叫做“HutongGames”,但是卻是一個(gè)外國(guó)公司,只是而愛(ài)中國(guó)文化。
插件的第二部分是編輯器界面,這個(gè)界面是一片空曠的區(qū)域,這個(gè)區(qū)域的功能和藍(lán)圖很像,我們將物體拖拽到這個(gè)區(qū)域當(dāng)中,即可對(duì)物體進(jìn)行功能的編程。在編輯器界面中,分為四個(gè)模塊,其中包含:狀態(tài)機(jī)、狀態(tài)、事件、變量。在狀態(tài)機(jī)中,我們可以對(duì)當(dāng)前狀態(tài)機(jī)的名稱進(jìn)行編輯(類似需要實(shí)現(xiàn)的功能)。我們?cè)谕獠繉?duì)已經(jīng)編輯的功能進(jìn)行debug調(diào)試,從而測(cè)試軟件的相關(guān)功能。
第三部分是動(dòng)作瀏覽器。所謂動(dòng)作菜單就是可以利用Playmaker完成哪些命令。在Playmaker的動(dòng)作瀏覽器中,包含了大部分開(kāi)發(fā)所應(yīng)用的命令(這里稱為動(dòng)作),從播放動(dòng)畫,播放音樂(lè),數(shù)組。攝像機(jī)。角色,ui,操作等很多部分進(jìn)行了分類。在每一個(gè)類型中,包含了若干命令,當(dāng)點(diǎn)擊每個(gè)命令時(shí),在動(dòng)作瀏覽器的下方會(huì)顯示當(dāng)前名利個(gè)的預(yù)覽,其中包含里面相關(guān)的參數(shù)。此功能類似正常寫代碼部分的參數(shù)命令。我們將這些命令拖拽到編輯器窗口中,即可對(duì)當(dāng)前物件實(shí)現(xiàn)選定命令的功能,非常的方便。
第四部分為全局變量功能。在Unity的游戲開(kāi)發(fā)中,我們將變量分為本地變量和全局變量,所謂本地變量就是當(dāng)前物體能夠調(diào)用的數(shù)值。而全局變量就是在這個(gè)項(xiàng)目當(dāng)中,所有的元素都能夠調(diào)用的數(shù)值。而這個(gè)數(shù)值是可變的。所以稱之為變量。變量有很多種類型,其中包括bool布爾值,F(xiàn)loat浮點(diǎn)值,Int整數(shù)值,String文本值,GameObject保存的物體等等。如果善用變量會(huì)讓游戲的開(kāi)發(fā)事半功倍。
在本學(xué)期的游戲創(chuàng)意工廠項(xiàng)目開(kāi)發(fā)中,我們工作室的《幻境》,《靈光劍舞》等項(xiàng)目通過(guò)Playmaker插件進(jìn)行了開(kāi)發(fā),大大的提升了開(kāi)發(fā)效率。而《永恒青空》這款項(xiàng)目是采用一半代碼一半playmaker編程的方式進(jìn)行開(kāi)發(fā),也取得了成功。在實(shí)際的項(xiàng)目開(kāi)發(fā)中,Playmaker為我們的工作室項(xiàng)目開(kāi)發(fā)效率帶來(lái)了很大的提升。也希望有更多的游戲開(kāi)發(fā)者能夠使用這款插件來(lái)提升開(kāi)發(fā)效率。