《英雄聯(lián)盟》第170個(gè)英雄梅爾,已經(jīng)上線正式服有段時(shí)間了,拳頭游戲在6月18日才想起發(fā)布一篇開發(fā)者播客,讓設(shè)計(jì)師來聊聊梅爾的核心機(jī)制——W技能的反彈。如果你看過《雙城之戰(zhàn)》第二季,你可能會(huì)記得這樣一個(gè)場(chǎng)景:一名背叛的執(zhí)法者讓凱特琳跪在地上,準(zhǔn)備扣動(dòng)扳機(jī),而安蓓薩在一旁冷眼旁觀。然而,子彈被反彈,梅爾救下了凱特琳,違抗了自己的母親,并在一瞬間擊敗了麥迪,這場(chǎng)戲令人印象深刻。
在設(shè)計(jì)梅爾加入游戲時(shí),拳頭游戲明確知道她的W技能將是核心技能。但正如任何游戲設(shè)計(jì)師都會(huì)了解的一件事,反彈技能的設(shè)計(jì)非常復(fù)雜。他們需要克服技術(shù)難題,處理各種不同的投射物交互,還要考慮平衡性、清晰度和傷害計(jì)算。Riot 1kFeathers是梅爾項(xiàng)目的技術(shù)負(fù)責(zé)人,在這篇開發(fā)者博客中談?wù)摿诉@個(gè)機(jī)制是如何設(shè)計(jì)出來。
由于這是發(fā)表在拳頭官網(wǎng)的文章,國(guó)服一般不會(huì)翻譯,Sara就在這里簡(jiǎn)單翻譯一下。但這種開發(fā)者博客的專業(yè)術(shù)語(yǔ)太多了,普通玩家不容易看懂,這主要是提供一個(gè)思路。梅爾是一個(gè)在多方面極具挑戰(zhàn)的項(xiàng)目,實(shí)現(xiàn)了《英雄聯(lián)盟》從來沒有過的反彈機(jī)制。如果你是梅爾玩家、投射物愛好者,或者對(duì)反彈技能的技術(shù)實(shí)現(xiàn)感興趣,這篇文章正是為你準(zhǔn)備的。
-反彈的起點(diǎn)
早在2022年,我們就計(jì)劃與Fortiche合作,在2024年《雙城之戰(zhàn)》第二季發(fā)布時(shí),將梅爾和安蓓薩等原創(chuàng)角色引入游戲。同時(shí),我們希望探索反彈技能的可能性。我與梅爾的英雄設(shè)計(jì)師Riot Emizery討論了這一技能的設(shè)計(jì)方向。
在《雙城之戰(zhàn)》中,梅爾是一位能夠操控投射物和魔法技能的法師。我們已經(jīng)有一個(gè)可玩的“進(jìn)攻型技術(shù)”原型,類似于塞拉斯竊取敵人終極技能后回放的能力。但我們還想嘗試“防御型技術(shù)”,即實(shí)時(shí)反彈投射物,這是我們之前因技術(shù)限制從未實(shí)現(xiàn)的。我對(duì)此非常感興趣,原因有三:
1. 它更貼近梅爾在動(dòng)畫中的能力表現(xiàn)。
2. 這是《英雄聯(lián)盟》從未探索的設(shè)計(jì)空間,但在其他游戲中很受歡迎。
3. 實(shí)時(shí)反彈能帶來令人滿足的技巧表達(dá)。
于是,我制作了一個(gè)實(shí)時(shí)反彈的原型并進(jìn)行測(cè)試,玩家反饋良好。盡管我們知道這是一個(gè)巨大的挑戰(zhàn),復(fù)雜度堪比塞拉斯、維戈或妮蔻的技能,我們還是決定推進(jìn)。那么,這個(gè)技能是如何實(shí)現(xiàn)的呢?
-什么是投射物?
要理解投射物反彈的原理,首先需要了解什么是投射物。投射物是技能移動(dòng)的載體。如果你讀過十年前關(guān)于投射物系統(tǒng)重構(gòu)的文章,你會(huì)知道投射物包含以下關(guān)鍵組件:
普通投射物:
- 移動(dòng):投射物會(huì)移動(dòng)到指定位置。
- 碰撞:投射物會(huì)與物體發(fā)生碰撞。
- 目標(biāo)追蹤:投射物會(huì)追蹤移動(dòng)目標(biāo)。
- 腳本交互:投射物需由設(shè)計(jì)師定義行為。
- 可見性:投射物對(duì)某些單位可見,對(duì)其他單位不可見。
- 視覺與音效:投射物需要視覺效果和音效。
反彈投射物:
- 移動(dòng):清除當(dāng)前目標(biāo),朝新目標(biāo)位置或單位移動(dòng)。
- 碰撞:不再與梅爾隊(duì)伍的單位碰撞,而是與施法者隊(duì)伍的單位碰撞,因?yàn)槊窢枴敖俪帧绷送渡湮铩?/p>
- 目標(biāo)追蹤:若投射物追蹤移動(dòng)單位,應(yīng)改為追蹤另一單位(通常是施法者本人)。
- 腳本交互:反彈投射物繼承原投射物的腳本定義。例如,佐伊E技能的泡泡被反彈后仍會(huì)使目標(biāo)昏睡。
- 可見性:反彈投射物的可見性規(guī)則反轉(zhuǎn),視為梅爾隊(duì)伍的投射物。
- 視覺與音效:為反彈投射物播放正確的視覺效果和音效。
-區(qū)域觸發(fā)器
我們需要一個(gè)機(jī)制在投射物接觸時(shí)進(jìn)行交互并將其反彈。這聽起來有些熟悉,對(duì)吧?亞索的風(fēng)墻能阻擋投射物繼續(xù)前進(jìn),檢測(cè)區(qū)域內(nèi)的投射物并銷毀它們。而對(duì)于反彈技能,我們更進(jìn)一步,不僅不銷毀投射物,還會(huì)修改并將其返還。了解了投射物和區(qū)域觸發(fā)器的交互后,我們準(zhǔn)備打造投射物反彈系統(tǒng)的首個(gè)原型。三年前的我提出了以下方案:
- 使用區(qū)域觸發(fā)器處理投射物碰撞檢測(cè)和反彈邏輯。
- 在形狀類中定義通用的OnMissileReflect邏輯,適用于任何實(shí)現(xiàn)相應(yīng)功能的形狀。
- 重置投射物視覺效果,使其重新開始生命周期并調(diào)整為正確方向。
- 使用“狂暴”系統(tǒng)(為烈娜塔終極技能開發(fā))將梅爾設(shè)為技能新?lián)碛姓摺?/p>
- 梅爾被視為投射物的傷害來源,繼承所有擴(kuò)展效果(如佐伊E的泡泡效果)。傷害根據(jù)原施法者的屬性計(jì)算。
如果你讀過烈娜塔首席工程師Jeff Doering發(fā)布于2022年的技術(shù)博客,你會(huì)了解“狂暴”系統(tǒng)。在梅爾的情況下,我們“狂暴”的是技能,而非像烈娜塔那樣的普通攻擊。梅爾被設(shè)為“狂暴”的觸發(fā)者,計(jì)算傷害或擊殺時(shí),她被視為傷害來源并獲得所有獎(jiǎng)勵(lì)。
投射物分為兩類:目標(biāo)型和非目標(biāo)型。目標(biāo)型投射物有固定目標(biāo),無真實(shí)碰撞(如安妮的Q)。非目標(biāo)型投射物是技能射擊,可能擊中路徑上的任何目標(biāo)或落空(如伊澤瑞爾的Q)。
- 目標(biāo)型技能(如凱特琳的R):反彈時(shí)檢查施法者,始終將技能返還給施法者。
- 非目標(biāo)型技能(如伊澤瑞爾的Q):反彈時(shí)將技能返還至施法者的位置。
-投射物重建
這樣就完成了嗎?還沒那么簡(jiǎn)單。原型未能很好處理非線性移動(dòng)的投射物,如黛安娜的Q、悠米的Q和奇亞娜的R。這些投射物有復(fù)雜的移動(dòng)方式:
- 奇亞娜的R沿墻移動(dòng)。
- 悠米的Q跟隨玩家光標(biāo)。
- 黛安娜的Q是平滑曲線的樣條投射物。
雖然可以通過繼承實(shí)現(xiàn)針對(duì)每種移動(dòng)類型的函數(shù),但我退一步思考,決定從零開始重建投射物,傳入新的目標(biāo)位置或單位。投射物初始化過程會(huì)自動(dòng)處理目標(biāo)追蹤問題。因此,我們選擇銷毀來襲的投射物,并根據(jù)其信息重建一個(gè)新投射物。這帶來多重好處:
- 解決了非線性投射物問題,因重建投射物無需為每種移動(dòng)類型單獨(dú)實(shí)現(xiàn)邏輯。
- 修復(fù)了反彈投射物方向錯(cuò)誤的視覺效果問題。新投射物從零開始,確保視覺效果穩(wěn)定且可持續(xù)。
- 解鎖了延遲生成反彈投射物的功能,有助于平衡技能。
-投射物劫持
我們希望反彈傷害隨法術(shù)強(qiáng)度成長(zhǎng),并可調(diào)整,因此梅爾會(huì)施放新技能,類似于塞拉斯。但她只劫持與投射物相關(guān)的部分,而非整個(gè)技能(包括施放動(dòng)畫、藍(lán)量消耗等)。投射物移動(dòng)或撞擊觸發(fā)的效果由梅爾繼承。
這解決了反彈友方治療和護(hù)盾的問題,梅爾會(huì)對(duì)友方施放治療或護(hù)盾,但需要額外工作來修復(fù)這些技能(如賽娜的R、娜美的W等)。同時(shí),這允許調(diào)整反彈投射物的傷害輸出,并繼承可再次施放的技能(如李青的Q、阿卡麗的E、維克斯的R等):
- 原施法者無法再次施放,因技能流程已結(jié)束。
- 若滿足再次施放條件,梅爾可再次施放。
-傷害重新計(jì)算
目前,我們使用區(qū)域觸發(fā)器檢測(cè)投射物,銷毀原投射物并由梅爾重建新投射物。但問題在于,新投射物由梅爾施放,傷害會(huì)基于她的屬性計(jì)算。想象一級(jí)梅爾反彈18級(jí)全AD裝備厄斐琉斯的普通攻擊,反彈傷害會(huì)微不足道,因梅爾的AD很低。這不符合設(shè)計(jì)目標(biāo):敵方越強(qiáng),梅爾的反彈技能應(yīng)越強(qiáng)。
為此,我們需要使用原施法者的屬性(AD/AP)計(jì)算傷害。為實(shí)現(xiàn)這一點(diǎn),我們創(chuàng)建了一個(gè)字典,存儲(chǔ)反彈技能射擊、對(duì)應(yīng)施法者和施放時(shí)的等級(jí)。以提莫為例:若提莫用E毒鏢攻擊梅爾,毒鏢接觸反彈護(hù)盾時(shí),我們存儲(chǔ)提莫的角色引用和等級(jí)。當(dāng)毒鏢反彈并傷害提莫時(shí),我們查詢字典,使用提莫的等級(jí)和屬性計(jì)算傷害。
但塞拉斯以不同方式解決此問題,他使用自身屬性,將AD傷害比例轉(zhuǎn)為AP比例,因他是一位AP刺客。而梅爾的反彈技能將投射物返還給原施法者,因此使用施法者屬性更合理。
-投射物重新著色
開發(fā)初期我們就知道,在激烈的團(tuán)戰(zhàn)中,反彈技能可能難以辨認(rèn)。我們考慮過使用附加粒子效果標(biāo)示反彈,但最終決定為反彈投射物重新著色,既更顯眼,也能傳達(dá)梅爾掌控投射物的感覺。《英雄聯(lián)盟》引擎原本無法任意重新著色物體,因此我們與引擎圖形團(tuán)隊(duì)的工程師Riot Mewdini合作實(shí)現(xiàn)這一功能。以下由她講解:
大家好!我是Riot Mewdini,來說說梅爾重新著色技術(shù)的實(shí)現(xiàn)和挑戰(zhàn)。我們的首個(gè)方法是動(dòng)態(tài)克隆反彈投射物的材質(zhì),并為克隆材質(zhì)添加重新著色宏。這在反彈瞬間會(huì)造成卡頓,但作為概念驗(yàn)證效果不錯(cuò)。之后,我添加了對(duì)重新著色漸變的支持,允許藝術(shù)家將投射物的亮度值映射到顏色范圍,為梅爾的皮膚設(shè)計(jì)提供了更多自由度。
另一種方法是在加載時(shí)為相關(guān)投射物創(chuàng)建支持重新著色的材質(zhì)。但這導(dǎo)致內(nèi)存占用過高,例如,若游戲中有元素使者拉克絲,內(nèi)存占用會(huì)增加約35MB。對(duì)于最低配置僅2GB內(nèi)存的系統(tǒng),這不可接受。
我們還希望避免在著色器中使用ifdef宏,因這會(huì)導(dǎo)致受影響的著色器變體數(shù)量翻倍。隨著需要支持重新著色的著色器增加(因各種邊緣情況),包括所有粒子著色器和小兵的Uber著色器,變體數(shù)量都會(huì)加倍。最終我們采用的方案更簡(jiǎn)單:為受影響的著色器添加始終開啟的重新著色指令。當(dāng)不需要重新著色時(shí),傳遞零透明度,保持原色不變。
此方案修復(fù)了早期bug,如金克絲的地雷未被重新著色(因其被視為小兵)。其他bug需單獨(dú)修復(fù),并在廣泛的QA測(cè)試中發(fā)現(xiàn),包括:
- 因代理粒子系統(tǒng)的抽象,子粒子未繼承重新著色(如烈娜塔終極技能的復(fù)雜視覺效果)。
- 厄斐琉斯的炮臺(tái)被反彈后嘗試攻擊厄斐琉斯時(shí)崩潰,因炮臺(tái)投射物無法訪問顏色漸變數(shù)據(jù)。
- 阿蘿拉的召回投射物因歸屬混亂而不可見。
- 非目標(biāo)型技能有時(shí)引發(fā)除零錯(cuò)誤(如泰隆)。
- 舊版粒子未傳遞關(guān)鍵字,這些關(guān)鍵字用于定義不同皮膚的粒子效果條件(如蘭博的舊版皮膚)。
還有更多問題,如“黑洞故障”,由投射物復(fù)制與反彈之間的競(jìng)爭(zhēng)條件引發(fā),這種情況在有兩個(gè)梅爾時(shí)會(huì)出現(xiàn)。
-平衡性
我們解決了投射物反彈系統(tǒng)的大部分問題,玩家在測(cè)試中體驗(yàn)到了被梅爾反彈招牌技能的感覺。不出所料,他們對(duì)此并不開心。因此,我們需要解決一個(gè)嚴(yán)肅問題:如何平衡這個(gè)技能?Riot Emizery提出了兩個(gè)主要調(diào)整杠桿:
1. 調(diào)整反彈投射物的傷害/控制效果:通過反彈邏輯的監(jiān)聽事件實(shí)現(xiàn)。當(dāng)梅爾通過反彈對(duì)敵方英雄造成傷害時(shí),計(jì)算傷害后應(yīng)用百分比減免。游戲中,W技能等級(jí)越高,減免百分比越高。
2. 控制投射物反彈的延遲:我們?cè)谕渡湮锓磸椣到y(tǒng)中添加了計(jì)時(shí)器。目前游戲中未使用此功能,但我們有方法控制投射物飛向目標(biāo)的時(shí)機(jī)。
-面向未來
類似于塞拉斯的R,我們需要讓梅爾了解英雄的被動(dòng)技能,因?yàn)楸粍?dòng)技能封裝在獨(dú)立對(duì)象中,不屬于技能本身。許多技能腳本假設(shè)施法者始終是該英雄。例如,安妮的Q假設(shè)安妮是施法者并查找其被動(dòng)。但梅爾施放安妮的Q時(shí)沒有安妮的被動(dòng)。為此,我們將許多技能移到共享位置,移除對(duì)英雄本身的依賴。這改善了技能目錄的封裝,為未來英雄、游戲模式和靈活性打開更多可能性。
在我們的專有引擎和工具Hextech中,我們升級(jí)了許多英雄腳本,采用現(xiàn)代化的數(shù)據(jù)查找、屬性處理和傷害應(yīng)用標(biāo)準(zhǔn),以兼容投射物反彈系統(tǒng)。這為游戲的長(zhǎng)期成功奠定了基礎(chǔ)。投射物反彈技術(shù)開啟了更多可能性,我們現(xiàn)在可以修改投射物并轉(zhuǎn)移其所有權(quán)。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.