tft每日頭條

 > 圖文

 > 蘋果區幻塔提前上線

蘋果區幻塔提前上線

圖文 更新时间:2024-10-16 11:08:48

本周,完美世界旗下幻塔工作室開發的輕科幻開放世界遊戲《幻塔》已于12月16日正式公測,發布以來《幻塔》持續保持在免費榜冠軍、暢銷榜TOP10,首日流水破5000萬元,最近三天更是位居iOS暢銷榜第3,可謂今年年末國内市場最大爆款,取得了優異的成績。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)1

本月初,Epic Games中國所舉辦的“Unreal Open Day虛幻引擎技術開放日”上,幻塔工作室的工程師李甯徽,就分享了《幻塔》開放世界自由探索的制作經驗。

他從地形探索、物件探索、玩法探索三個層面,分享了《幻塔》在開發過程中所遇到的問題和解決辦法。

以下是演講實錄:

李甯徽:大家好!我是來自完美世界幻塔工作室的遊戲工程師,李甯徽。今天給大家帶來的是《幻塔》開放世界自由探索制作分享,涉及的主要内容包括,作為遊戲玩家在遊戲世界中,對大世界中的地形、事物和玩法進行自由探索交互。

在這之前,請允許我簡單介紹一下這款遊戲。《幻塔》是一款輕科幻開放世界ARPG手遊,以廢土輕科幻的美術風格,開放式的成長線和引力式的目标感,包含豐富的大世界玩法和爽快的戰鬥體驗為主。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)2

在遊戲中,玩家可以探索無接縫大世界,可以高度自由度交互,比如遇到障礙就跨越或者翻越,碰到高牆或山體就攀爬,跳入水中就遊泳等。當然我們也可以對大世界中的一些物件,也可以進行推箱子、舉盒子等操作,甚至還可以去遊樂場坐過山車和旋轉木馬。本次演講就是分享我們在制作這些有趣玩法過程中遇到的問題和解決辦法。

這次演講所說的開放世界自由探索,不是從遊戲玩法和遊戲設計角度出發,而僅僅從功能實現角度出發。比如說走過的路,地下會留下腳印,蹚過水會泛起漣漪,對大世界有所動作,大世界也會給我對應的反饋。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)3

我簡單的把實現探索世界分成了三類,分别是地形探索、物件探索,玩法探索,下面我們先從地形探索說起。

這裡有一個小視頻,可以從視頻可以看到,玩家跑過地上會留有腳印,進入水中,水中泛起漣漪,從水中就會産生新的腳印。如果仔細看一下,從水中出來的腳印是要比沒有入水時的腳印顔色是要更深一點的。之前版本裡面,從水中出來的腳印還有水漬效果,後來去掉了,為什麼去掉後面會有解釋。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)4

在過去很多的遊戲中,腳印這樣的功能已經有了,有些遊戲甚至把腳印的效果做得非常好。一般對腳印的功能需求是踩在地上,留下個印子,稍微要求高一點的話,就會要求踩在不同的地表上,會留下不同的腳印。比如沙地上、草地上,腳印是不一樣的。再比如說從水中出來可以添加水漬的效果,踩在雪地上會有那種的凹凸感,濺起的雪花效果等。

腳印的表現,我們可以用貼花、粒子等進行制作,用貼花做腳印的效果是好的,但貼花的性能消耗特别大。特别是貼花剛剛創建生成的時候,對于手遊來說,由于手機的内存有限,表面溫度、手機續航都是手遊體驗很重要的一部分,所以我們做了取舍。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)5

我們隻是用簡單面片的來創建腳印Actor,并且對其做緩沖池處理,這個時候我們隻是對緩沖池裡的腳印做透明度、是否顯示以及顯示位置,對這些屬性進行控制,不再反複地創建和銷毀,以此來降低消耗,當然這是根據遊戲需求和優化做出的取舍,這是為什麼之前把水漬效果去掉的原因。

剛才說的腳印,其實是玩家和地面的交互,而漣漪就是玩家和水面的交互。我們可以看左邊,當玩家走過的時候,漣漪是波紋狀,如果是摩托車就會有把水推開的效果。而遊泳、水花特效等都是玩家和水面的交互,隻是他們有一個共同點,這些交互的效果隻生存在水面上,而且交互對象的形态不同,所産生的效果也不一樣。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)6

氣候冷暖的反應,我勉強将其稱之為玩家和空氣的交互,在不同的氣候區域裡面,玩家的表現不一樣。在很冷的區域,玩家的角色會有搓手等表現其很冷的動作,在熱的區域中,玩家會有扇汗的動作。其實這個制作起來很簡單,在不同氣候區域添加觸發器盒子就可以了,當然也可以在此基礎上做一些其他的玩法,比如說添加buff什麼的,這些效果實現起來很簡單,但是給玩家的感受卻很好。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)7

接下來我們談一談對障礙的跨越翻越。虛幻引擎4的移動組件中有個屬性,叫MaxStepHeight,當障礙高度超過這個值的時候,玩家就會被擋住,這個時候玩家要麼沿着障礙表面滑動,要麼被擋住無法繼續前行,雖然我們可以通過跳躍去越過障礙,但如果使用手機,不停的按跳躍就必然會影響到其他操作,而且也不是所有的障礙都可以通過跳躍跨越過去。因此對于開放世界自由探索類遊戲,特别是手遊,這個時候角色可以自動跨越或翻越障礙功能的需求就很強烈了。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)8

傳統制作翻越障礙的方式有很多種,但或多或少都有一些問題。比如跨越動作帶有位移,那麼就要求跨越障礙的高和寬有限制,而這就會影響美術的發揮。比如在障礙上添加标記、添加觸發盒子等,這些都會增加額外的工作量,還有網絡同步這些。所以,可不可以有一種情況,我對大世界中的任意障礙物都沒有任何限制,美術自由發揮,完全是程序自動檢測翻越,做出翻越的操作。

下面是我們的答案。剛才提到的那些有限制的制作方式,我們稱之為策劃美術驅動方式,而我們這種相當于是完全是程序驅動,也就是說,我們對地形、障礙沒有添加任何限制,美術自由發揮去做,我們也不會添加标記或者設置觸發器,從頭到尾基本是由程序根據地形檢測算法算出來的。我們算出障礙物的高度、翻越時候的落腳點,根據障礙物的高度選擇合适的動作進行跨越操作。

這裡展示的三種操作,分别是低、中、高。低的話,一擡腳上去了,中間稍微高一點,就需要用手撐一下,右邊的比較高,需要手夠一下才能翻上去。我們已經可以做到配置,可以做三種、五種甚至十種這樣的方式。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)9

現在我們來說說攀爬,類似跨越一樣,我們的攀爬其實也基本是程序驅動,我們沒有對地形做任何限制,美術可以自由發揮,我們也不打标記點或者添加觸發盒子,通過地形檢測算法,玩家可以攀爬到的地方,玩家攀爬的速度,以及玩家的朝向,完全是程序計算出來。

那麼跨越最關鍵的地方是哪裡?我們這裡是,要計算出跨越後的落腳點,一旦落腳點計算出來,那麼跨越的高度也就計算出來了,我就會根據跨越的高度,選擇合适的動作進行越過障礙。在落腳點層面也有幾點需要注意,比如地形的斜度是否允許角色站上去,玩家的可站立半徑,還有在這個過程中的動作銜接問題。

剛剛說的是一些正常時候的跨越,但也存在一些特殊的情況。比如說在水中遊泳時跨越障礙,遊泳時候計算的落腳點相對于行走有一點不一樣,但是主要的思路是一樣的,就是把落腳點計算出來。然後還有右邊這種,如果障礙的高度超過了我們配置的最大障礙高度,這個時候可以通過攀爬翻越來越過障礙。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)10

當然,因為玩法的關系,比如我們策劃要求在這個玩法、這個關卡裡面,這個地方不允許跨越,不能翻越,這個時候怎麼處理?傳統用來制作可以攀爬翻越的方法,就可以在這個時候反過來做這個地方不能攀爬,就是我們可以打标記,可以添加觸發器。

在這個地方有一些需要注意的點,因為我們對地形沒有做任何的限制,美術可以任何自由的發揮,可以随便作,所以難免會遇到奇葩、稀奇古怪的地形,導緻計算過程中,落腳點和障礙高度不準确。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)11

比如說有一些往前傾斜的地形,有凹槽的地形,還有浮空的地形,有一個節點,膠囊體底部不是在地表的情況,都會導緻計算的落腳點不是那麼準确,這個時候我們就需要在地形檢測算法中添加一些額外的檢測來避免這些問題,所以我們的地形檢測算法也是在不斷的優化疊代的過程,慢慢變得成熟。

現在我們來說說攀爬,類似跨越一樣,我們的攀爬其實也基本是程序驅動,我們沒有對地形做任何限制,美術可以自由發揮,我們也不打标記點或者添加觸發盒子,通過地形檢測算法,玩家可以攀爬到的地方,玩家攀爬的速度,以及玩家的朝向,完全是程序計算出來。

在虛幻引擎4中,因為攀爬是一種脫離重力的表現,而且一旦脫離攀爬就會掉下來,所以我們的方案是,用移動組件裡面的Flying模式模拟攀爬的移動狀态,我們還有很多自定義的子模式,分别應對攀爬的不同的情況。比如說各個方向上的自由攀爬,攀爬跳躍、攀爬回跳、雨天攀爬打滑的狀态,攀爬翻越等,在攀爬的時候,我們的角色會通過動作融合和蒙太奇配合,讓攀爬的狀态更加自然合理。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)12

這邊展示了三種進入攀爬的情況,分别是行走進入攀爬、下翻進入攀爬、空中進入攀爬,其實還有一個水中進入攀爬。三種檢測攀爬的計算方式是都不一樣的,但有個共同點就是首先要找到可以攀爬的面。

現在我們展示的都是自動進入攀爬,之前的版本在進入攀爬的時候有過一個非常不好的遊戲體驗,玩家在操作手機的時候,是不希望進入攀爬,隻是想走進去,特别是室内的情況,隻是想走進屋裡看一看,這時候一旦碰到障礙就進入攀爬了,比如說爬到牆上或者櫃子上,體驗非常糟糕。

我們怎麼處理的?一個是,我們在遊戲設置裡添加了選項,玩家可以選擇自動進入攀爬,也可以選擇手動進入攀爬。二是添加了進入攀爬的動作,在這個動作裡面添加了Anim Notify State,如果期間沒有移動輸入沒有被打斷,就進入到攀爬,但如果在這段時間裡,輸入突然停掉了,就表示不想進入攀爬,就會把進入攀爬動作打斷,不進入攀爬,以這樣的方式解決問題。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)13

攀爬跳躍,這方面其實也是攀爬中的重要元素,我們可以把攀爬跳躍可以跳的距離、速度作為參數抛出來,策劃可以進行配置,當然也可以在遊戲中根據玩家的屬性動态修改。

這樣做的好處是,我們所能到達的位置能夠不受骨骼位移裡,自帶的位移和朝向的影響。右側顯示是凹形地形的表現,一般的運動模式,比如說行走、遊泳,它們一般是在X軸和Y軸水平方向上,但是攀爬是三個方向上的,所以這邊我們讨了個巧,因為攀爬時和地形息息相關,攀爬始終貼着地形,一旦脫離地形就要掉下來,所以在X軸方向,也就是前後方向,我們始終讓玩家往前緊貼地形,這樣我們就可以把我們更多的注意力集中在Z軸和Y軸方向,也就是前後左右方向,這樣我們相當于把三個方向的計算省去了很大一部分,變成兩個方向的計算。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)14

拐彎的時候,玩家的朝向需要注意一些,特别是右邊的凹形地形,我們的手其實是沿着地形滑過來的,這是用IK,我後面還會提到。

攀爬跳躍,這方面其實也是攀爬中的重要元素,我們可以把攀爬跳躍可以跳的距離、速度作為參數抛出來,策劃可以進行配置,當然也可以在遊戲中根據玩家的屬性動态修改。

玩家搖杆或者鍵盤輸入會有一個方向,我們沿着這個方向做檢測,算出攀爬跳躍的結束點,配合蒙太奇在這邊進行攀爬跳躍,左邊是各個方向的攀爬跳躍,中間是凹凸地形上的,我們會爬到凹凸地形上轉向等,右邊是攀爬到頂了會翻越上去。

這是IK( Inverse Kinematics),即反向動力學,相對FK來說,它是用子節點驅動父節點。它的實現方式就是用動畫藍圖裡的Two Bone IK節點。這個節點有兩個參數,一個是Effector,一個是Joint Target。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)15

Effector可以這麼理解,目标點,攀爬的時候手要搭在哪裡。比如說踩在階梯上腳放在哪裡,要通過計算算出來。而Joint Target節點,因為在多骨骼計算的時候,計算出的結果是無限多個的,所以要通過Joint Target的參數來确定唯一解,避免出現反關節的不合理情況。比如爬的時候,肘關節都到臉上了,這種情況就可以通過這個參數來避免。

如果站在台階上,腳是分别踏在兩個不同的台階上,當地面不平的時候,腳面是要貼着地面做旋轉。再比如爬樹的時候,手抱着樹,如果是凹形地面,手是分别搭在兩邊的。有很多關于IK好用的教程和插件,比如說PowerIK,但是其對于移動端的支持其實還是有一些進步空間,特别是旋轉這一塊,所以我們遊戲裡面主角的IK基本上都是我們自己實現的。

滑闆是地形探索裡面唯一一個涉及到海陸空,也就是說我們承載移動組件裡面的Walking、Falling、Swimming三種運動模式實現滑闆。它需要注意的點就是在這幾種模式切換的時候,我們要保證動作和速度可以很平滑的過渡過去,我們做這個目的是為了讓玩家在操作的時候有爽快的感覺。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)16

滑翔,因為人類不可以飛,所以在遊戲裡可以飛或者滑翔是很好的遊戲體驗,所以我們就制作了滑翔。它是通過重載移動組件裡的Falling來做的,我們修改、優化了它的轉向,以及重力加速度來實現滑翔。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)17

遊泳方面,虛幻引擎4裡面其實有遊泳模式,我們也添加了一些自己的東西,比如說加速遊泳,還對它的轉向做了優化,因為手機上的遙感有一些特别,所以我們在這一塊比較花心力的是,在手機上的操作手感,這方面我們花了一些精力去做優化。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)18

這裡總結一下,我們所有地形探索遵循的一個原則,就是一句話,膠囊體負責位置,Mesh負責表現。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)19

膠囊體負責的是碰撞、位置同步,而且我們所有地形檢測的算法都是從膠囊體開始的,也就是說,膠囊體是出發點,我們所有的地形檢測算法都是從它開始做同步。

而Mesh主要負責視覺效果,比如視覺效果的平滑過渡、不同狀态之間的切換、動作的銜接,包括IK等。舉個例子,比如攀爬的時候,前面正好有一個東西把我頂出來了,那我的膠囊體肯定就會頂歪,但這個時候Mesh不能歪,一旦歪的話就相當于脫離了地形,就掉下來了,這個時候就可以讓Mesh往前抓緊貼地形,相當于允許Mesh稍微脫離一點我的膠囊體。

下面我們看物件探索,首先看推箱子。我們實現了兩種方式分别是:模拟物理的和不模拟物理的,兩種推箱子有各自的優缺點。模拟物理方式的箱子,在掉落、碰撞、滾落等情況的表現更為自然,效果特别好,但是有一個很不好的缺點,就是不可控因素很多,如果地形不平,碰撞角度、速度、力度不同,所出來的結果是完全不一樣的。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)20

特别是在一些玩法的層面,左邊這是一個激光,我要把箱子推到那個地方才能打開機關,但如果是用模拟物理的箱子,可能我每推一次結果就不一樣,就完成不了。

所以我們就做了第二種不模拟物理的推箱子,這種方式推10次,推20次,甚至推100次,始終能把箱子推到這個地方來,保證結果一樣。所以在大世界中,我們交互的箱子一般是采取了模拟物理的這種,而在機關或者一些簡易玩法裡面我們選擇了不模拟物理的箱子。

舉抛方面我們是這麼實現的,我們制作了ControllableComponent的一個組件,凡是擁有這個組件的物件都是可以進行操作的,包括舉抛。在抛的時候,其實就是把物件Attach到指定的點上,然後配合半身動作實現舉起移動,抛的時候會通過玩家輸入獲得指定方向,在那個方向給一個初始速度,并啟動模拟物理來實現的,就抛出去了。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)21

砍樹方面,樹是由Foliage植被系統刷出來的,當我們揮刀砍的時候,刀的Mesh就會和樹的Mesh發生碰撞,這個時候會播放樹被砍倒的效果,然後用樹樁的Mesh替換樹的Mesh來實現砍樹,過一段時間再将樹樁的Mesh替換回樹的Mesh就刷回來了。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)22

草也是由Foliage植被系統刷出來的,但是草和樹不同,草沒有碰撞,因此實現的辦法是在AT表上做标記,然後在那個位置播一個砍草的效果,如果要恢複就在一定時間把AT标去掉,把這個草重新刷出來實現砍草。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)23

我們現在看看過山車。我們提供了好幾種視角,玩家可以根據自己的喜好去選擇一種适合自己的視角。其實最開始我們是沒有計劃做過山車的,在于之前的測試裡面,有玩家跟我們說,我們都到遊樂場了,有那麼一個東西為什麼不能玩,我們要玩過山車,我們就做了這個東西。

蘋果區幻塔提前上線(幻塔如何實現開放世界自由探索玩法的)24

最後,我們公司的《幻塔》馬上16号就正式公測,如果大家有興趣可以體驗一下。如果你們願意加入我們,也歡迎聯系我們,當然如果隻是作為一個遊戲玩家,你也可以把奇思妙想,通過郵件或者留言的方式告訴我們,說不定你的想法被采用,我們就把他實現了,就像之前所說的過山車一樣。

我們希望這種方式實現的交互越來越多,因為這就會使玩家有一種參與遊戲開發的感覺,我們也希望後面會有越來越多這樣的東西出現。

我的演講就到這裡,謝謝大家!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved