首頁 » 推薦 » 造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

 

聯盟中新的彈道系統

召喚師們,Brian “Penrif” Boss在這裡和你們聊聊聯盟中彈道系統的新機制。我們在過去的幾個月中調整了彈道的一些演演演算法(就像在最近的更新日誌中提到的那樣)。如果我們的工作得當的話,你在遊戲時應該不會感受到什麼變化。不過就算如此,新機製為遊戲帶來的新發展著實讓我們興奮,所以我想和你們分享一下相關的更多細節。

之前的系統錯綜複雜而且幾乎不可能重做,而新的系統讓我們可以輕鬆的做些蠢事,就像下面這樣:

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

艾希之心

先說一句,我們不是要改動艾希的萬箭齊發。這只是我在幾小時內吃著醫生開的止疼片,隨便做做就完成的,只是想說明新的系統可以把一切都簡化,不用花太多功夫就可以完成很多以前很麻煩的動作。

廣告-請繼續往下閱讀

 

超級複雜的舊彈道系統

為了讓你清楚的認識我們在和什麼打交道,我就給你一張表看看,這上面寫得就是以前的彈道系統每一幀執行的方式:

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

廣告-請繼續往下閱讀

(你可以放大不過估計這就像電子樂一樣—–裡面的字重要麼?)

當然這和真正的導彈導航系統相比,是沒那麼複雜啦,不過這讓人頭疼的演演演算法確實讓任何改動都有所風險,僅僅是因為它本身的複雜性。簡單來說,你現在看到的就是每一種彈道的類別,每一個都代表了一種不同類別的一組彈道方式。而來自這些類型的功能,他們時而共享,時而重複—不過都經常讓人困惑。這張表把這些彈道類型橫向排開,功能類似的就用顏色標出。舉個例子,如果你想知道彈道碰撞軌跡,你就不得不看每一個粉色的代碼——就是那個幾乎到處都是的粉色代碼。

最上面的框里就是我們所說的「基礎彈道」,他是整個彈道系統的根基。也就是那些最簡單的彈道:這些飛彈飛向指定位置或者指定目標並且當飛行結束時被觸發。平A和防禦塔的攻擊都屬於這個類型,還有像飛機的Q和炸彈人的大招這樣的技能也屬於此類型。他們的演演演算法都很直接,飛彈跟蹤目標,然後評估飛彈該向哪裡移動,然後看他們是否可以攻擊到目標。就這麼簡單。

下面那個大框是「線型彈道」,大多數玩家會叫他非指向性技能——比如拉克絲的Q,艾希的萬箭齊發,或是EZ的所有技能。也有一些讓人驚喜的技能也出於此,比如亞索的風牆:它就屬於線型彈道,擋彈道的彈道,夠諷刺的了。

線型彈道比起基礎彈道要複雜的多,舉個例子,他們在飛行過程中可能擊中目標,也可以回到施法者處(如達瑞文的大招),或者技能貼近地面(如枷蘿的E)。把這些不同的技能都混為一類確實有點作死,不過線型彈道還和基礎彈道有密切聯繫。由於使用了基礎彈道的系統預設值,導致線型彈道繼承了基礎彈道的功能性,不過線型彈道的使用方法略微不同。這就讓我們很尷尬,因為當我們想要改動基礎彈道的演演演算法時,就難免會牽扯到線型彈道,這就把事情搞得更加複雜了。

那個底下的小框裡面裝著3個圓形彈道:皎月的Q和W,狐狸的W。他們的機制和線型彈道相似,但飛行軌跡為圓形。它們也來源於基礎彈道,在打擊方式上和線型彈道相似,而移動軌跡不同。在做這張表的時候我發現了一些bug,這些bug使得線型彈道無法變成圓形。所以複製這些代碼就相當於也複製了這些bug;複製狂魔永遠的痛啊。

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

讓我們形象的感受一下這種彈道系統吧。大概像這樣

總之,lol中的彈道系統十分複雜但是毫無必要,自我糾結而且十分脆弱,改也改不得。既然彈道在這個遊戲中是一個很大的設計區域,那麼我們就必須簡化它,從而使其更容易被改動。

最後我們決定把原先的系統推翻重做,這是最簡單粗暴的方法。

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

 

一張白紙

重做時我們本著4個核心原則:

1 相似的功能性應該在寫在同一個代碼里,來確保理解方便

2不同功能組之間的依賴性要最少且劃分清楚

3彈道基本的形態功能應該要簡單明了

4某些特殊彈道要和主要演演演算法直接分離

我們的團隊先是確定彈道的核心問題,然後分別對這些問題做出計劃。看得出我很喜歡列清單(上面那張你看不懂的表就是我列的,啦啦啦), 所以我也要陳列一下彈道的工作原理組成:

移動:飛彈飛向一個地方

碰撞:飛彈打擊目標

目標追蹤:飛彈飛向可移動的目標

腳本交互:飛彈的行為完全由設計師設計

可視性:飛彈的視覺效果

視覺特效和聲音:你們都能聽到看到的那些

我們就本著上面這些原理進行重做,然後給每個彈道都寫入內容。隨著工作的逐步進行,當概念設計無法滿足需求時,我們開始再次評估然後做出調整。比如,我們把目標追蹤的概念加入到移動的代碼里,因為我們發現這兩者的問題有緊密的聯繫,再比如我們把腳本交互加入到通用的彈道基礎里,因為我們覺得不需要在不同的彈道中進行區分。

最後,我們做出了這樣的系統:

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

我們把第一張表稱為「五顏六色噴吐物」,而這張表簡直就是由彩虹構成的。

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

彩虹可是絕佳的建築材料

 

這對LOL意味著什麼

最後我們的工作帶來了兩大好處。第一,彈道代碼再也不會讓我們的程序員感到棘手了,因為發現和解決代碼問題變得輕鬆多了。這為那些原先被視為無法根除的問題,提供了解決的可能性。

例如,我們會看到一些視頻里出現飛彈直接飛過目標且未擊中的情況,這讓我們感到很尷尬。雖說這是小概率事件,但這個bug很有可能決定一場遊戲。我們無法重現這個bug,我們也不知道為什麼這種情況會出現,所以我們只能把它暫且放下然後繼續前進。但是,把所有的碰撞都用同一代碼運算,那麼一些會使得碰撞失效的情況就很容易被捕捉。等把那些情況處理完,我們就會很有信心的說每一顆飛彈都會擊中它該擊中的目標。

不過還是給自己留條後路,那種飛彈命中失敗的可能性還是存在的。不過我懷疑這可能是由於某些單位位置同步性的錯誤而導致的,並不是彈道碰撞帶來的問題。

當然讓程序員輕鬆一點並讓bug少一點,固然是很好,但是第二個更棒的好處在於,我們可以在彈道上更快的做出很新奇的調整。現在我們不用把整個彈道系統都改了才能更變彈道的移動方案,所以我們現在可以輕而易舉的做出很多瘋狂的改動。下面有一些這些所謂瘋狂改動的展示,不過這些都不是真的要上線的:不過是某些程序猿犯蠢的結果罷了。

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

輪子爹轉啊轉

我們把德萊文的平砍加了2圈,看上去挺適合德萊文的張揚個性

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

稍微改動一下彈道的飛行軌跡點,維魯斯就在天上畫出愛心咯

造物者說:新系統令人很想射!全新彈道系統 實現心形軌道

六邊形是最優多邊形

現在有沒有好想射點什麼啊?/o/

看看這個吧

日本阿宅打開「最佳賞味期1992年」的蘋果罐頭,結果竟然挖出觸目驚心的黑色謎樣物!

>>每日更新50片,高清108 ...

南韓超商竟然有操作簡單的「自助煮麵機」,還可以讓你加蛋配菜讓網友強烈要求引進台灣!

>>每日更新50片,高清108 ...