《千軍破》武將技能關係推測與討論

假設1,按照客服所說,羣技能、不可替代技能優先級高於其他技能;

假設2,羣技能自身的優先級根據技能等級排序,例如妖術3>妖術2>妖術1;

假設3,羣技能優先級相同,例如千軍破=落雷=火燒連營=八門金鎖=妖術=春秋斬=鬼神驚;

假設4,羣技能優先級高於其他不可覆蓋技能,例如千軍破>攻心;

假設5,名將技能優先級高於其他將技能優先級,例如威嚇>火箭

假設6、主動技能不和被動技能進行優先級比較,例如趙雲鐵血在判定時只會和陷坑比較,不會去和反亂比較(假設趙雲打上了反亂);

假設7、姜維連弩計入名將技能;

假設8,名將技能每名名將僅能擁有唯一,即不能出現呂布同時有千軍破、落雷、威嚇、鐵血、連弩,但是呂布可以同時有反亂、虎嘯槍陣、陷坑等技能;

假設9,技能攻擊、反擊的傷害高於普通攻擊、反擊。

一、技能的設計

技能表:技能id,技能名稱,技能圖片id,技能描述,技能屬性id

技能圖片表:技能圖片id,技能圖片

技能屬性表:技能屬性id,技能兵種限制,技能範圍id,主動被動,發動概率

技能優先級表:guid,技能id,優先級

技能-效果關係表:guid,技能id,技能效果id

技能效果表:技能效果id,效果對象,技能攻擊效果,技能防禦效果

技能範圍表:技能範圍id,技能範圍類型,技能範圍數量

技能-屬性關係表:guid,技能id,屬性,關係類型id,效果

關係類型表:關係類型id,關係類型

【說明】

技能表的描述可能不全面,但是最關心問題已經包含在裡面了。其中有,技能的兵種限制(例如,陸遜火燒連營只能弓兵使用)、技能的攻擊效果(例如,增加多少攻擊、增加多少防禦)、技能是主動技能還是被動技能(例如,奮鬥是被動技能增加步兵攻擊,虎嘯是主動技能騎兵發動)、技能攻擊範圍(例如,反亂只能攻擊1個對象,千軍破攻擊9個對象)、技能攻擊範圍類型(例如,妖術是十字攻擊,鬼神驚是X攻擊),技能發動概率(例如,落雷發動概率是多少,春秋斬發動概率是多少),屬性點對技能的影響(例如,增加武力可以提高槍陣的發動概率,千軍破和任何屬性沒有關係)等

技能-效果關係表描述技能對應的效果,允許一個技能有多個效果(例如,神射提高弓兵的攻防)。

技能-屬性關係表描述哪些技能對屬性有依賴,其中關係類型id關聯關係類型表,查找是針對發動概率還是具體效果,效果爲關係類型的加成數值

二、武將的設計

此處只考慮武將-技能關係

玩家武將-技能表:guid,玩家武將id,技能id

玩家-武將表:guid,玩家id,玩家武將id

玩家武將表:玩家武將id,對應武將id,......

初始武將具有兩個技能,則在玩家武將-技能表中insert兩條記錄即可。記錄玩家武將id和技能id。

三、技能發動的算法猜測

變量定義不描述

獲取玩家武將技能信息,按照優先級排列,存入列表

依次遍歷此列表

獲取列表當前技能發動概率(此爲調用方法,分別根據技能、技能-屬性加成、裝備加成來計算);

根據概率設置模擬範圍;

利用蒙特卡洛方法來模擬技能發動與否的判斷(此處肯定有一個方法來根據概率進行發動與否的模擬,是否蒙特卡洛方法僅爲本人猜測);

判斷技能是否發動

是{記錄發動技能,跳出循環}

技能列表中數據順次移動一位,循環進行下一技能的判斷

獲取發動技能id,如果列表中技能都沒有發動,則按照普通攻擊處理

獲取技能id(或是普通攻擊)的效果

根據效果進行攻防計算四、針對猜測算法的說明

我們關注的地方是:

1、根據優先級排列,存入列表

2、判斷技能是否發動 是{記錄發動技能,跳出循環}

這個決定了具有不可覆蓋技能的武將是否要打上其他主動技能

基於,當前的算法,我們以前的想法是可以推翻的,即具有不可覆蓋技能的武將可以打上其他主動技能

舉例諸葛亮同時有落雷、陷坑、四面楚歌、攻心等技能。

戰鬥時,諸葛亮主動攻擊敵方,則陷坑不發動。

接下來,根據假設,我們獲得優先級爲落雷>攻心>四面楚歌。如果諸葛亮同時還會罵聲,則四面楚歌和罵聲的優先級不在本文考慮。

按照算法,先判斷落雷是否發動。如果落雷發動,我們就能看到落雷的效果。

如果落雷不發動,則判斷攻心。攻心不發動依次判斷四面楚歌。

如果都沒有技能發動,就按照普通攻擊進行。

我們假設落雷概率是0.01,攻心概率是0.1,四面楚歌概率是0.1,則發動落雷概率是0.01,發動攻心概率是(1-0.01)*0.1,發動四面楚歌概率是(1-0.01)*(1-0.1)*0.1。

假設趙雲同時有鐵血、陷坑、槍陣等技能。

在戰鬥時,趙雲被地方攻擊,則槍陣不發動。

接下來,根據假設,我們獲得優先級爲鐵血>陷坑。

按照同諸葛亮的判斷,我們假設鐵血發動概率是0.4,陷坑發動概率是0.3,則發動鐵血概率是0.4,發動陷坑概率是(1-0.3)*0.4。

這裡,我們還有一個假設要提出:加入武將的技能都爲主動技能,則武將不能保證一次攻擊能至少發動一個主動技能,一次被攻擊能至少發動一個被動技能。

綜上,在攻擊時,諸葛亮能發動技能的機會肯定是要大於每個技能單獨的概率,因爲增加了判斷的次數。這也就保證了攻擊時高於普通攻擊的概率要比只有一個落雷提高了;在反擊時,趙雲發動技能反擊的概率也比僅有鐵血提高了。

五、結論

主動技能2個的好處大於1個,但是並不是越多越好。因爲技能本身也需要被動技能來確保效果的提升。我個人優先推薦名將在自身技能的基礎上學習1個主動技能和陷坑。並不推薦武將全部主動技能,哪怕是諸葛亮呂布這樣的。

六、問題

上述論證都是基於同客服諮詢的優先級假設。客服確認這個優先級有同研發證實。我在這裡是在完全相信客服的職業操守、職業能力前提下。

如果客服證明的這個優先級假設是錯的,則算法從根本上推翻。變爲另外一個方向的結論。

七、推論

武將學習主動技能應根據自身已有技能的限制、陣型限制以及玩家的整體規劃來進行。

例如,陸遜這個武將,技能是火燒連營。我個人推薦學習不受兵種限制的技能。因爲火燒連營只能弓兵發動。如果陸遜統帥高也可以考慮學習火箭。

例如,諸葛亮這個武將,技能是落雷,可以學習攻心、四面楚歌等。

例如,關羽這個武將。我個人先把關羽改造成步兵將領,那麼可以考慮學習槍陣作爲額外的主動技能。