【冰話XS】010:萬物互聯(lián) 資源變量の任督二脈

☆※冰の引言※☆?
前文主要詳細(xì)介紹了 XS 函數(shù)中的隨機(jī)應(yīng)用以及隨機(jī)百分比與 XS 隨機(jī)函數(shù)之間真假隨機(jī)的辯證分析,深入淺出地把隨機(jī)這個深邃而抽象的東西講解明白,著實不是件易事。眾所周知,在帝國時代2決定版中,觸發(fā)里的兩個至關(guān)重要的支撐是變量和資源,在現(xiàn)有觸發(fā)條件的體系中,資源和變量并不能很好聯(lián)動起來,基本還是你打你的,我玩我的這種現(xiàn)狀。如何打破這種相對獨(dú)立的藩籬,成了戰(zhàn)役設(shè)計思路破局的一方面。但是目前來看常規(guī)方法并不能解決問題,觸發(fā)有個效果"根據(jù)變量修改資源"簡直雞肋的不得了,基本等于不能用的亞子。這個時候 XS 函數(shù)就有它獨(dú)到之處可以扭轉(zhuǎn)乾坤,四兩撥千斤,用好下面介紹的四個函數(shù),很多意想不到的效果都能輕松實現(xiàn)。

☆※本節(jié)の紹介※☆


☆※資源讀寫函數(shù)※☆?
帝國2中共有268個資源(截止印度DLC 73855版本),一個場景中最多有8個玩家(如果算上蓋亞就有9個),那么總共就有2144種資源可供設(shè)計者使用。每種資源都是相對獨(dú)立的,作個生動的類比,它們就猶如一個個獨(dú)立王國,彼此之間沒有什么關(guān)聯(lián),如何打破它們彼此之間的邊界,把它們互相關(guān)聯(lián)起來,可以說是個非常重要的課題。在現(xiàn)有觸發(fā)體系下,想實現(xiàn)資源間產(chǎn)生一定條件的聯(lián)系基本是比較困難的,但是 XS 腳本調(diào)用函數(shù)能輕松實現(xiàn)這一點(diǎn)。
XS 腳本調(diào)用函數(shù)在資源/變量之間起的是穿針引線的作用,不管是對資源還是對變量而言。其原理本質(zhì)是數(shù)據(jù)的讀取與寫入。首先是對要修改的資源/變量進(jìn)行讀取,以獲得其實時的現(xiàn)有值存儲在臨時變量里面,然后利用XS腳本調(diào)用的自定義新建函數(shù)體作為堆棧緩沖區(qū),在這個函數(shù)體里面對一系列的臨時變量做各種的復(fù)雜四則運(yùn)算得到對應(yīng)的計算結(jié)果賦值給臨時變量,最后將堆棧緩沖區(qū)中修改后的臨時變量寫入對應(yīng)的資源/變量之中,完成一個簡單流程的修改。
這樣講可能在術(shù)語上比較專業(yè)一點(diǎn),考慮到很多創(chuàng)作者不是IT行業(yè)的從業(yè)人員,未必接觸過這些計算機(jī)類的名詞,故筆者用相對而言比較接地氣的方式簡明扼要地描述一下對應(yīng)的過程。用個通俗易懂的形容就是拉抽屜的過程。首先把抽屜拉開,檢查一下抽屜里原有的東西(讀取數(shù)據(jù)的過程),然后對抽屜里的東西進(jìn)行增添、剔除或修改的整理(數(shù)據(jù)處理的過程),最后把整理后的抽屜關(guān)上(寫入數(shù)據(jù)的過程)。下面就先來瞅瞅資源方面的讀寫函數(shù)吧。

☆※變量讀寫函數(shù)※☆?
與資源讀寫類似,變量方面也有對應(yīng)的讀寫函數(shù)。不過需要提點(diǎn)的事,資源ID的值可以是任意實數(shù)(即小數(shù)和整數(shù)均可),但變量ID的值卻只能是整數(shù),這個是需要重點(diǎn)關(guān)注的細(xì)節(jié)點(diǎn)。

☆※資源&變量的相互修改※☆?
上面對資源讀寫函數(shù)以及變量讀寫函數(shù)進(jìn)行了詳細(xì)的使用說明,相信大家對于這兩類函數(shù)有個初步認(rèn)識與了解了吧。在講具體闡述資源和變量之間是如何聯(lián)動之前,先來看看觸發(fā)器有個效果"根據(jù)變量修改資源"這個雞肋的效果,大家就能體會到什么叫沒有對比就沒有傷害,這個效果并不能進(jìn)行任何復(fù)雜運(yùn)算,只能根據(jù)變量大小進(jìn)行非常簡單粗淺的設(shè)置和加減乘除運(yùn)算,基本就廢了武功,食之無味,棄之可惜。這種超級閹割版的設(shè)置對于場景設(shè)計者多樣化的要求可謂是不孚眾望,能起到的實質(zhì)輔助作用甚微。千呼萬喚始出來最終,還是要讓這"萬物互聯(lián)"粉墨登場。


Ⅰ.根據(jù)資源修改資源

Ⅱ.根據(jù)資源修改變量

Ⅲ.根據(jù)變量修改資源

Ⅳ.根據(jù)變量修改變量

☆※應(yīng)用實例&案例分析※☆?
到這里基本的實用函數(shù)基本介紹完畢(當(dāng)然最重要的函數(shù)仍未粉墨登場,在后續(xù)會出場)。筆者作為研究 XS 調(diào)用函數(shù)的先行者,恭愍王作為第一部使用 XS 調(diào)用函數(shù)設(shè)計的大型長篇戰(zhàn)役,正式拉開了帝國時代2決定版輕編程的序幕,毫不夸張地說,這開啟了帝國時代2的設(shè)計新時代,毋庸置喙具有劃時代里程碑的意義。
在其他后來的優(yōu)秀戰(zhàn)役中,我也充當(dāng)一定程度的技術(shù)顧問的角色,為他們的設(shè)計出過謀、劃過策,在此之中也貢獻(xiàn)過不少經(jīng)典的 XS 函數(shù)使用案例,涌現(xiàn)了一些非常實用的點(diǎn)子思路,分享出來以饗讀者。這里大概結(jié)合資源&變量聯(lián)動的主題講三個基本典例+一個進(jìn)階級的案例。

☆※典例一:那些年曾經(jīng)的勃艮第葡萄園※☆
首先還是來講講這個西方霸主DLC中飽受爭議的銀冠科技,從一開始的將所有食物以2:1的比例兌換成黃金的超強(qiáng)爆發(fā),到中期的將一半的食物以2:1的比例兌換成黃金的扭轉(zhuǎn)戰(zhàn)局,再到現(xiàn)版本食物黃金轉(zhuǎn)換的完全消失,不得不說真令人扼腕嘆息。
雖然PVP中大家對于這樣的一波流的猥瑣科技深惡痛絕,但在PVE中這樣的資源轉(zhuǎn)換科技推廣開來將是顛覆式的創(chuàng)新設(shè)計,所以這里針對資源轉(zhuǎn)換科技進(jìn)行詳細(xì)解析,下面結(jié)合不同時期的勃艮第葡萄園科技作為切入點(diǎn),從特殊到一般,手把手教你如何舉一反三,觸類旁通。
從上面兩個例子可以看出,如果不利用 XS 函數(shù),在現(xiàn)有觸發(fā)效果基礎(chǔ)上進(jìn)行構(gòu)思設(shè)計,即使使用窮舉法也不可能實現(xiàn)當(dāng)年勃艮第葡萄園的效果,目前來說使用 XS 函數(shù)是這個問題的唯一解,所以說在這里?XS 函數(shù)的巨大優(yōu)勢便顯露得淋漓盡致了。
從這兩個特殊案例入手,我們可以輕松總結(jié)出一個通用的模板,以后做資源轉(zhuǎn)換相關(guān)主題的時候就可以直接套用了。這就完成了境界的蛻變,從個別到一般,從特例到普遍,達(dá)到了舉一反三,觸類旁通的目的了。

☆※典例二:想當(dāng)年可薩帝國的動態(tài)25000分※☆
不知道讀者們玩過可薩汗國這個戰(zhàn)役沒有?在我參與擔(dān)任技術(shù)顧問的眾多作品之中,這個戰(zhàn)役里有一關(guān)是達(dá)到一定分?jǐn)?shù)即獲得勝利的,這關(guān)的設(shè)計很具有資源變量聯(lián)動的典型性,非常值得拿出來細(xì)細(xì)品味其設(shè)計思路。
這關(guān)的設(shè)計要求是達(dá)到25000積分即獲勝,而獲得積分有兩種途徑:
1.打敗一個敵人計5000分(總共5個敵人);
2.收集一定量黃金(1黃金=1積分);
這個數(shù)要求必須能做到實時動態(tài)更新,準(zhǔn)確在屏幕上顯示玩家的積分進(jìn)度,而且這個數(shù)會隨著玩家的黃金消耗而減少,并不是只增不減的。
從字面上看,如果用現(xiàn)有的觸發(fā)效果來看,這種即使是窮舉也無濟(jì)于事,因為可能性千千萬萬,根本不可能無遺漏的情況下面面俱到,一一列舉出所有對應(yīng)情況。這里使用 XS 函數(shù)可以輕松實現(xiàn)資源與變量之間的萬物互聯(lián),打通觸發(fā)思路的任督二脈!
首先明確的是,先寫一個觸發(fā)兩個效果:改變變量100、變量101設(shè)置為0,改變量101名稱為score(用哪個變量全憑玩家喜好,可隨意設(shè)置,這里僅舉例,變量名稱可任意設(shè)置也可不改,后面會講),在觸發(fā)信息那里的簡短描述如下圖示例所寫,如果變量沒有改名字則寫成 <Variable 101> (數(shù)字與你設(shè)置的變量有關(guān))

然后寫一個循環(huán)觸發(fā),循環(huán)の目的是積分能做到實時更新,效果是 XS 調(diào)用函數(shù),程序代碼見下:
最后寫一個勝利條件判定觸發(fā),變量101值 ≥25000 就觸發(fā)勝利即可。
看看吧, XS 函數(shù)真的可以化腐朽為神奇,把不可能變成可能落地,許多看上去遙不可及的設(shè)計,通過 XS函數(shù) 的神奇演繹都能夠完美落地,觸發(fā)設(shè)計上的瓶頸基本上觸手可破,在系統(tǒng)設(shè)計層面上打通了實時多因素融合難題的最后一公里,為觸發(fā)設(shè)計復(fù)雜化多樣化鋪平了道路。

☆※典例三:鎌倉永仁德政令蘊(yùn)含的數(shù)學(xué)模型※☆
數(shù)學(xué)建模與帝國時代2,這兩個貌似完全不搭邊的事物,如何在場景中聯(lián)系起來,這個就是北條Beta實驗室需要解答和研究的方向了。
在北條中,有一關(guān)是描述北條貞時如何實現(xiàn)得宗專制的,里面有個設(shè)定就是亂黨指數(shù)與農(nóng)民生產(chǎn)效率掛鉤。玩家必須想盡辦法降低不斷攀升的亂黨指數(shù),否則農(nóng)民生產(chǎn)效率將逐趨向于0。該設(shè)計由亂黨指數(shù)下面的兩個參數(shù)——亂黨等級以及亂黨指數(shù)百分比來決定的,最終目標(biāo)是通過輸入這兩個變量的,最終影響玩家的農(nóng)民生產(chǎn)效率。
從專業(yè)的角度來看,這是一個雙變量影響模型,用兩個不同的相對獨(dú)立的變量對玩家的某個屬性進(jìn)行修改,最后作用于玩家上。這是一種全新的嘗試,把數(shù)學(xué)建模的思路帶入帝國時代2中的觸發(fā)設(shè)計,從雙變量影響單因素到多變量影響多結(jié)果,這也是挖掘帝國中觸發(fā)設(shè)計方面潛力的有益嘗試,也是北條這個Beta實驗室所需要達(dá)到的目的。
這個觸發(fā)系統(tǒng)設(shè)計的原理是一段時間(比如每15或20分鐘)做一次判定,收集讀取亂黨指數(shù)對應(yīng)的值進(jìn)行關(guān)于農(nóng)民工作效率方面的計算,從而修改農(nóng)民的工作效率。在整個過程中,如何對變量妥帖地設(shè)置權(quán)重系數(shù),是所有數(shù)學(xué)建模中最重要的也是必然會遇到的最大困難。調(diào)試參數(shù)的數(shù)值除了在紙間的理論計算,還要在游戲中對具體性能進(jìn)行測試的實踐過程,俗話說:“實踐是檢驗真理的唯一標(biāo)準(zhǔn)”,誠然,必須把實踐與理論相結(jié)合,相輔相成兩條腿走路,才能構(gòu)造一個相對而言比較好的數(shù)學(xué)模型。
因為場景設(shè)定,玩家為了減輕農(nóng)民工作效率的負(fù)面影響,必須要使用永仁德政令或其他方式降低亂黨指數(shù)百分比, 從而延緩負(fù)面效果的快速蔓延。永仁德政令的原理就是給除玩家外的每個玩家派錢從而降低參數(shù)的值,雖然可以反復(fù)進(jìn)行研究,但是隨著使用次數(shù)的增加,使用成本也在水漲船高。玩家如何通過數(shù)學(xué)模型計算權(quán)衡好各種利弊,調(diào)整好自己的戰(zhàn)略,作出最有力的決策,這份答卷就是玩家需要自行在場景中探索答案了。

☆※進(jìn)階案例:按軍事人口扣減的軍糧消耗☆※
最后的最后,來講講如何輕松實現(xiàn)簡單的軍糧消耗與軍事人口相關(guān)的實際問題。
在P佬的老作品"垂死的太陽之子(Children of the dying sun)"中有一關(guān)的設(shè)定是:每5分鐘玩家的軍事人口在超過20的情況下,每個軍事人口消耗1點(diǎn)食物,食物量歸0就會慢慢扣血而亡。比如說玩家有50軍事人口就消耗50食物,玩家有88軍事人口就消耗88食物,諸如此類等等。在舊時代,P佬給出的解答方式是把100軍事人口的上限劃分成0~20, 20~40, 40~60, 60~80, 80~100, 100+,這幾個區(qū)間然后分別扣除0,20,40,60,80,100點(diǎn)食物。在受限于以前的觸發(fā)條件下也只能做到這種程度了,當(dāng)然你從0枚舉到100也不是不行,但是這么簡單的設(shè)計要用這么大的工作量屬實是劃不來的。
但是時代變了, XS?函數(shù)解決這樣的問題可以說是得心應(yīng)手,得來全不費(fèi)工夫。
最后加上一個循環(huán)觸發(fā),堆積屬性玩家食物量1,反向(≥1 的反向是 <1 也就是 <=0 的意思),定時器n秒,損壞玩家軍事人口多少血,就可以完美實現(xiàn)當(dāng)玩家沒有食物的時候忍饑挨餓(表現(xiàn)為軍事單位逐漸扣血)的效果。
在這個案例中,直接規(guī)避了傳統(tǒng)觸發(fā)效果必須要枚舉的困局,實現(xiàn)了從少量有限到大量無限的飛躍,通過這一個函數(shù),無論玩家有多少軍事人口,都能輕松自如一勞永逸地解決所有因枚舉而產(chǎn)生的問題,從而另辟蹊徑,達(dá)成事半功倍,四兩撥千斤的效果。

☆※冰の小結(jié)※☆?
本節(jié)從資源變量之間的萬物互聯(lián)作為切入點(diǎn),帶領(lǐng)各位讀者遨游這奧妙無窮的互聯(lián)世界,讓相對獨(dú)立的資源、變量等要素彼此之間產(chǎn)生聯(lián)系,繼而更好的為設(shè)計者提供服務(wù)與幫助。下期將開啟xsEffectAmount函數(shù)的大門,開始敘說此函數(shù)的點(diǎn)點(diǎn)滴滴;另外繼續(xù)介紹帝國2中的復(fù)雜知識——DPS及其應(yīng)用。從建筑駐扎的附箭數(shù)與DPS的計算原理著手,淺談DPS對于帝國時代2設(shè)計者的思路與啟示,如何利用它設(shè)計更多更有趣的應(yīng)用。
欲知后事如何,請聽下回分解?


