手机在线视频精品中文网,色色骚骚操鸡把,精品免费久久久久久久久,中文字幕日韩区二区三区

制作人經(jīng)驗分享:《不可思議之夢蝶》如何從PC移植到NS

2020-12-25 16:11:05

在今年5月份的Unite 上,隊友游戲制作人李喆分享了有關(guān)《不可思議之夢蝶》從PC版移植到Nintendo Switch的經(jīng)驗之談,主要內(nèi)容包括需要針對Switch平臺開發(fā)的內(nèi)容以及在《不可思議之夢蝶》開發(fā)中Unity版本的選擇。

以下為分享內(nèi)容:

大家好,今天我要分享的內(nèi)容是《不可思議之夢蝶》從PC版移植到Nintendo Switch。

現(xiàn)在使用Unity開發(fā)游戲,大多數(shù)人都會先制作PC版本,這是因為運行和調(diào)試非常方便。為了讓游戲能夠獲得更多收益,我們肯定要發(fā)布到更多平臺上。

目前,在獨立游戲發(fā)布的主機(jī)平臺中,Switch是必不可少的。進(jìn)行平臺移植的過程中,我收獲了很多經(jīng)驗,在此分享給大家,讓大家在進(jìn)行項目移植的時候能夠少走一點彎路,節(jié)約一些時間。

首先自我介紹一下,我是隊友游戲的李喆。我們是一家在天津的獨立游戲工作室,我們的第一個游戲作品是《鯉》,這是一款以環(huán)保為主題、中國風(fēng)、體驗型的輕度解謎2D游戲,發(fā)布到手機(jī)以及很多游戲平臺。

在完成《鯉》之后,我們開始制作《不可思議之夢蝶》。這是一個3D項目,因此在開發(fā)流程和分配上有更多事情要去作,所以我們的團(tuán)隊從一開始的2個人擴(kuò)大了14個人。

當(dāng)然,另一個原因是《鯉》的成績挺不錯的,我們掙到了一些錢,所以我們想做一些更大更具挑戰(zhàn)的事情。

上圖就是《鯉》,它是一個純2D游戲,一開始是針對手機(jī)平臺開發(fā)的。為什么使用Unity呢?因為我們想要發(fā)布到PS4平臺,所以我們使用Unity在PS4平臺上又重新開發(fā)了一遍。

也是在這時候,我們第一次用到Unity的工具。我們發(fā)現(xiàn),同樣的項目在二個平臺上開發(fā),明顯能夠?qū)Ρ瘸鯱nity上的開發(fā)效率是非常高的,所以我們決定使用Unity更深入的去做一些更復(fù)雜的游戲。

Unity擅長的制作3D的項目,所以我們就去學(xué)習(xí),然后制作出了《不可思議之夢蝶》。

上圖的海報其實是游戲中截圖的畫面,大家可以看到,這保持了一貫的畫面比較清晰的風(fēng)格,并且使用了Low-Poly的美術(shù)風(fēng)格。

為什么要用這個風(fēng)格呢?這是因為我們團(tuán)隊比較小,不可能投入很多資源去制作次世代的畫面。使用這種美術(shù)風(fēng)格是比較討巧的,也可以充分發(fā)揮出我們美術(shù)的優(yōu)勢:比較清新、亮麗、有特點的美術(shù)結(jié)果。

我們在《不可思議之夢蝶》中制作了2D的手繪動畫,用作游戲的敘事,我們在游戲美術(shù)上也花了很大的工夫,不只是在技術(shù)上。這樣的畫面在Switch平臺也是比較有競爭力的,我們也詢問了很多Switch玩家,大家都非常期待這款游戲。

《不可思議之夢蝶》已經(jīng)在Steam和WeGame平臺上銷售了,很多玩家買了Steam版本,但還沒有打開玩,他們告訴我,他們在等待Switch的版本,所以我們也是非常積極的進(jìn)行移植。

《不可思議之夢蝶》是我們第一次開發(fā)3D游戲,我們用到Asset Store資源商店中里面很多的插件。由于很多插件都是開源的,也提供源代碼,如果不了解基礎(chǔ)知識的話,可以通過看插件代碼就學(xué)會很多基礎(chǔ)知識。

此前,我在Unity官方微信發(fā)表了《不可思議之夢蝶》開發(fā)經(jīng)驗分享,介紹我們使用了多少插件,分別用來做什么,得到了業(yè)內(nèi)同行很多的認(rèn)可。包括《硬核機(jī)甲》的制作人穆飛,他和我說:其實制作Unity項目時,插件是可以提高不少效率的。

接下來分享主要內(nèi)容:怎么把PC平臺游戲移植到Switch平臺?我也會介紹一下PlayStation平臺,因為這些平臺都是主機(jī)平臺,所以會有一些特殊的要求。

先談一談基本的開發(fā),Switch平臺有一些大家需要提前知道的知識。

首先它的輸入不能用Unity自帶的標(biāo)準(zhǔn)Unity Input來做,至少現(xiàn)在還不可以。我們使用了一個Asset Store的插件Rewired,它可以讓游戲很快適應(yīng)所有的手柄,包括Android和iOS的手柄,它非常方便地讓你通過配置方式來支持。

然后是Switch平臺特有的HD振動,包括加速計的調(diào)用和讀取以及數(shù)據(jù)格式,都是很特殊的。實際上這些東西也都很簡單,因為官方會提供Unity平臺可以使用的范例代碼,大家只需要參考將代碼改一改就可以了。

最后說一下Joy-Con的5種輸入方式。

玩過Switch平臺都知道,Switch的手柄是可以拆出來分別變成二個手柄的,但它變成二個手柄以后,按鍵的數(shù)量和位置都有很大的變化。如果想支持所有輸入方式的話,需要提前對游戲設(shè)計做好基礎(chǔ)的規(guī)劃。

像《不可思議之夢蝶》是不支持Joy-Con Left和Joy-Con Rirght這種雙人單手柄模式的,它只支持剩下這三種游戲方式。所以在移植過程中,大家首先要考慮游戲的輸入。

然后是存檔問題。關(guān)于主機(jī)平臺的存檔,因為是特殊的操作系統(tǒng),所以存檔文件的讀取權(quán)限都是有特殊要求的,所以這些平臺包括PS4平臺的讀檔,I/O部分都是需要重寫的。

但其實很簡單,比如原來數(shù)據(jù)的序列化是JSON格式,最后只要在寫入那一步做移植就好了,接口的難度也不高?;旧铣醪匠尚?,大家看一下示例就能學(xué)會,而且它也支持Unity多線程異步存檔的寫入方式。

還有獎杯系統(tǒng)。我們做的PC版本默認(rèn)是有獎杯系統(tǒng)的,獎杯系統(tǒng)對玩家有很大誘惑力,大家會為了收集獎杯更多的去玩游戲。

但任天堂所有平臺都沒有獎杯系統(tǒng),但平臺也不排斥你自己去制作,所以我們把現(xiàn)有數(shù)據(jù)結(jié)構(gòu),增加了展現(xiàn)方式,把獎杯列表展現(xiàn)出來,自己做了獎杯的彈窗展示。很多Switch游戲其實都是自己制作的這類系統(tǒng),例如:《空洞騎士》的獎杯系統(tǒng)都是自己制作的。

還有聲音格式。這也是比較特殊的,它支持Opus格式,這種格式在Switch平臺上是支持硬解壓的。因為像Switch這種移動平臺的主機(jī),CPU的運算能力是非常有限的,聲音一般使用顯卡的硬件進(jìn)行加速,所以它的解碼本身會浪費大量CPU時間。

我們進(jìn)行了測試,使用Mp3格式在Switch平臺上可以運行,但是它會占用大量CPU時間,所以有時發(fā)生游戲掉幀的話,大家可能想象不到這是聲音導(dǎo)致的掉幀。

我們使用了Wwise。我想推薦一下這個平臺,這是一個第三方的聲音引擎,它的自帶功能比Unity原生聲音功能多很多,包括基于物理環(huán)境的聲音,包括反彈的聲音,它都可以支持。

Wwise對Switch平臺有特殊的格式,即OpusNX格式,可以直接調(diào)用硬件,是非常好的格式。OpusNX這種格式還有一個好處,那就是可以直接以壓縮的形式進(jìn)入內(nèi)存,所以它在運行時占用的內(nèi)存會更低一些。

Switch平臺可以使用的內(nèi)存大概也就1G多吧,不是特別多,如果制作游戲沒有考慮內(nèi)存問題,內(nèi)存就存在爆掉的可能。

說一下使用插件問題。Wwise和Rewired這種插件是需要考慮授權(quán)問題,這是有成本的,Wwise會針對每個平臺有相應(yīng)價格,也會根據(jù)不同使用平臺的多少會有折扣。Rewired是免費的,一次性支付可以全平臺使用。

但在我們在使用的第一次運行會發(fā)現(xiàn),打包時并沒有針對平臺支持的代碼。這個代碼要怎么獲得?

開發(fā)要通過任天堂開發(fā)后臺提交申請,然后由任天堂通知給Wwise的開發(fā)商,然后Wwise開發(fā)商再通過郵件反饋授權(quán)的信息,再進(jìn)行更新就可以支持Switch平臺了。這個流程在PlayStation平臺也是完全一樣的。申請過程沒有技術(shù)難度,但是有時間考慮。

例如,Wwise開發(fā)商在加拿大的蒙特利爾,時差相反,我們醒著他們在睡覺,因此通過任天堂通知再反饋回來大概要2個工作日的時間,如果今天開始想要移植游戲,但發(fā)現(xiàn)沒有License,就可能需要2天后才能發(fā)布,特別說這件事是希望可以幫助大家節(jié)省時間,大家一定要記住這個。

上面是一些具體技術(shù)上的經(jīng)驗,下面談?wù)劶夹g(shù)之外的,我們遇到的問題。這些問題如果沒有動手做過,幾乎是想不到的。

如何選擇Unity版本?

Switch平臺的Unity版本并不是可以公開下載的,需要通過任天堂的SDK獲得Switch的Unity版本,這個版本隨著SDK版本更新得越高。一般來說,提交游戲的Unity版本要求很高。

我們遇到的情況是要在Unity 2018.2到Unity 2018.3的版本才可以提交。如果項目沒有達(dá)到版本要求的話,提交時就會失敗,被拒絕,所以盡量選擇最新的SDK版本。

我們遇到一個問題,可能有時候打包出來的游戲在Switch上出現(xiàn)一些莫名其妙的崩潰問題,而且只有非常少的報錯信息。我們?nèi)ラ_發(fā)者論壇搜索這些信息,根本就沒有任何線索。此時大家一定要考慮切換版本,也許切換到更高版本,再測試打包是不是正常的。

我們的具體遭遇是,一開始我們是用Unity 2018.1.1開發(fā),開發(fā)時都是正常的。到參加展會時,我們需要臨時打包一個游戲演示出來。為了展會時效果更好,幀數(shù)更高,我們會出Release版本。

但對于Release版本,我們發(fā)現(xiàn)在Unity 2018.1.1時,它會直接崩潰,沒有任何信息,只要運行就會崩潰。于是我們查詢論壇,咨詢不少專家人士,幾乎得不到答案。

最后解決方法很簡單,我們切換到Unity 2018.1.9,直接Release打包出來就是正常的。沒做任何其它事情,就得到了正常的版本,一句代碼都沒改,這也是一個經(jīng)驗吧??赡墁F(xiàn)在最新版本已經(jīng)沒有這個問題了,我們也希望知道是否有其它方法可以解決這個問題。

如果同時用二個版本,開發(fā)功能一般要用Direct Build的方式,因為可以看日志和調(diào)試。像《不可思議之夢蝶》》游戲是56G,每次切換Unity版本時,需要重新導(dǎo)入所有資源,這個速度是非常慢的。

我們現(xiàn)在的狀態(tài)是,如果在普通SSD硬盤導(dǎo)入一遍工程,需要1個多小時,我們完全接受不了這個時間,所以我們想到在局域網(wǎng)內(nèi)搭一個Cache Server,它可以極大加快切換Unity版本后重新導(dǎo)入的速度。

但是每次打開不同版本時,大概還是需要將近5分鐘時間,雖然已經(jīng)了優(yōu)化很多,從1個多小時減少5分鐘,可還是不能接受,不可能每次改一個Bug都要5分鐘時間。

最后,我們想到使用Git,使用二個不同分支,使用不同Unity版本打開,一個是Unity 2018.1.1,另一個是Unity 2018.1.9,我們在Unity 2018.1.1改完和調(diào)試后沒問題的話,然后用Unity 2018.1.9出一個Release包,交給展會人員去參展,目前我們發(fā)現(xiàn)這種方式是最快的。

接下來是載入時間無法忍受的問題。Switch平臺存儲實際上是用的一種慢速的SSD存儲方式?!恫豢伤甲h之夢蝶》這樣解密類的游戲,第一關(guān)載入時間大概在90秒左右,雖然我們可以在次期間進(jìn)行一些載入動畫,但是這個時間還是太長了,沒有辦法忍受。

我們只做了一件事情,時間就變成了30秒。接下來我要介紹一個例子。

這里我要提一個非常有名的游戲《ICEY》,這個游戲在即將發(fā)布Steam版本時,我正好出差在上海,和《ICEY》開發(fā)者鳳翔和Mark在辦公室聊天,我發(fā)現(xiàn)程序員鳳翔一直在調(diào)試,我問他:你在干嘛?明天就要上線了。他發(fā)現(xiàn)游戲讀取時間太慢了,游戲啟動時會有60多秒的黑屏?xí)r間,完全動不了。

如果做過Unity開發(fā)都知道,這種情況是非常難調(diào)試的,點運行時Profiler完全是不動的,然后Profiler會突然出現(xiàn)非常高的峰值,告訴你剛才的60秒做了什么,但依舊不知道具體哪一步導(dǎo)致載入速度慢。

我那時突發(fā)奇想,順口一說:要不改一下聲音格式吧?!禝CEY》當(dāng)時使用Mp3格式,在PC上支持Streaming流式加載的方式,鳳翔就切了一下,直接就從60秒變成了10多秒的載入時間,瞬間可以接受了,就是這種程度。

這是為什么呢?因為我發(fā)現(xiàn)《ICEY》是一款Meta Game,有很多的語音文件和碎片聲音。而打包在Resources文件夾底下的,所以載入時,會默認(rèn)把所有聲音文件載入到內(nèi)存。很多技術(shù)大神可能對這種問題無所謂,但我們會在這件事上非??鄲溃恢廊绾谓鉀Q載入時間的問題。

使用Streaming方式還有一個好處是:在游戲運行時,游戲文件不是直接裝入內(nèi)存的,所以運行時游戲內(nèi)存的壓力會小很多,尤其對移動平臺和Switch平臺這種內(nèi)存比較有壓力的平臺會有更好的優(yōu)化效果。

但使用Streaming方式也有缺點:第一次播放聲音時會有一定的延遲和卡頓,但反復(fù)播放聲音就不會有這樣的問題。

我們沒有使用Unity自帶的聲音系統(tǒng),而使用了Wwise,它也有同樣的設(shè)置,支持Streaming。對于《不可思議之夢蝶》一個關(guān)卡的聲音,我們通過從普通的全載入方式變?yōu)镾treaming方式,載入時間可以從90秒提升到30秒,結(jié)果非??捎^。

Wwise支持SoundBank概念,也就是聲音庫,它可以把不同音效打在不同的聲音庫里。例如每個關(guān)卡和場景有自己特有的道具的話,可以把它們打包在一起。

還有一些公共的音效或聲音可以打在公共的庫里面,它支持同時載入多個SoundBank,可以通過這種方式再次減少游戲運行時的聲音資源帶來的壓力。

本文來自Unity,本文觀點不代表威狐手游立場,轉(zhuǎn)載請聯(lián)系原作者。

0.027187s
汝城县| 张家口市| 江都市| 马尔康县| 儋州市| 德安县| 舒城县| 万全县| 苗栗县| 昭觉县| 奉化市| 崇州市| 颍上县| 布拖县| 延长县| 山阴县| 阿坝| 康保县| 枝江市| 江永县| 天台县| 鄂尔多斯市| 浮梁县| 汾西县| 罗定市| 淮安市| 花垣县| 和政县| 九龙县| 怀化市| 旺苍县| 蓝田县| 张家港市| 安塞县| 紫阳县| 珲春市| 阳山县| 科尔| 乌拉特中旗| 海安县| 朝阳市|