重返未來:1999戰(zhàn)斗計算分析(一)
近期,因為對1999自動化戰(zhàn)斗比較感興趣,同時也希望可以精進一下我拙劣的編程技術,稍微總結了一些戰(zhàn)斗的規(guī)律,并盡量以一個統(tǒng)一的標準來衡量卡牌價值以便決策,以期可以實現(xiàn)可靠的自動戰(zhàn)斗,下面是我的第一版初稿,希望各位大佬可以批評指正
一、手牌規(guī)律
????????根據(jù)我當前的總結,手牌僅有首回合規(guī)律分布,后續(xù)為隨機獲得,當前階段算法我將更著重于當前手牌使用的“短期期望”,等后續(xù)技術力再增進一些再結合概率考慮嘗試做一些基于期望的長期規(guī)劃
????????首回合手牌,一定為三個角色各兩張小卡,再加上第一張卡牌的復制,一共七張卡。后續(xù)從六張卡牌中隨機抽取補充手牌
二、一些先決結論
????????1、buff卡
????????????????以十四行詩為例,首先假設所有角色面板相同,其次假定所有卡牌倍率相同(對單200%,對群150%),再其次,忽略防御和暴擊率造成的結論干擾。
????????可以得到以下簡易結論:
????????????????假定使用buff卡后持續(xù)時間內剩余的五張卡均為輸出卡
????????????????????????使用buff卡:1.15*200%*5=11.5
????????????????????????不使用buff卡:1*200%*6=12
????????????????????????使用buff卡:1.15*150%*2*5=17.25
????????????????????????不使用buff卡:1*150%*2*6=18
????????????????可以看到,以純期望傷害計算,buff卡的使用并不會帶來太多的直接傷害損失。而同時,使用buff卡帶來的自身穿透、全隊減傷、自身屬性增益詞條的獲取,全部收益合計得出,使用buff卡應該是一件比較劃算的行為
????????????????其后,假定使用buff卡后持續(xù)時間內還使用了一張治療卡(如蘇芙比)
????????????????????????使用buff卡:1.15*200%*4=9.2
????????????????????????不使用buff卡:1*200%*5=10
????????????????????????使用buff卡:1.15*150%*2*4=13.8
????????????????????????不使用buff卡:1*150%*2*5=15
????????????????可以看到,以傷害計算計,使用buff卡后還使用一張純治療卡,帶來的傷害損失已經比較大了,大約是對單80%,對群120%,均為接近半張卡的輸出,考慮到十四行詩本身的穿透和傷害減免、增益詞條等,這種行為或許可以是一個不虧的行為。當然原則上應當是避免這種情況的存在的,但考慮到決策條件的泛用性和簡易性,因此決策中可能仍會使用“buff周期”,盡量保證全程吃滿buff
????????2、大招和激情點數(shù)
????????????????1999中大招的釋放會存在激情限制,使用卡牌、移卡、合卡均可以獲得一激情點數(shù),為了量化移卡、合卡帶來的收益,同時為了兼顧百夫長、未銹鎧等角色卡牌中自帶的激情值,我考慮將大招傷害拆分處理:
????????????????????????大招對單:拆分為200%對單卡+(大招倍率-200)%的額外傷害
????????????????????????大招對群:拆分為150%對群卡+(大招倍率-150)%的額外傷害
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(以大招對2個敵方計)
????????????????大招前半部分作為普通單卡計算,額外傷害部分以激情點為權重分配給移卡、合卡操作,從而量化移卡合卡操作,使得使用后可以順帶合卡的卡牌的使用,可以獲得更高的優(yōu)先級。對于自身描述中包含了激情點數(shù)的,也可以更客觀的衡量其卡牌價值,以便后續(xù)邏輯選擇的處理。
????????????????對于普通卡自身使用帶來的激情點,我決定暫不考慮。后續(xù)無論是使用以激情點體系考慮大招傷害的平均期望傷害來計算,還是就像現(xiàn)在這樣不管了,又或者是有更優(yōu)秀的決策體系出現(xiàn)了,那是以后的事情,關我啥事
三、核心邏輯
????????以行動點為籌碼,期望傷害為貨幣的計算體系
????????1、讀取手牌
????????2、開始計算buff、治療周期
????????3、以角色本身面板*卡牌倍率為每張卡牌標定初始價值(傷害)
????????4、計算卡牌使用后是否會帶來合卡,如果有,為卡牌加上合卡收益(卡牌所屬角色面板*倍率)
????????5、對二夾二、二夾三的情況,酌情適當考慮大招傷害的激情點傷害分配,如在二夾一的基礎上乘以一個衰減系數(shù)(0.4、0.2),以鼓勵決策程序使用被夾卡牌
四、目標
????????基本目標:
????????????????1、構建基本素材庫,錄入各角色名稱、各等級面板、技能倍率、技能圖片
????????????????2、建立基本類、如角色、卡牌,錄入素材庫信息
????????????????3、借助圖像識別,實現(xiàn)對手牌、卡牌等級、戰(zhàn)斗開始前使用角色及其等級、行動點數(shù)量等關鍵信息的讀取
????????????????4、構建激情點模擬計算體系,為大招傷害計算提供基礎工具
????????????????5、實現(xiàn)對移卡合卡等操作的排列組合
????????????????6、實現(xiàn)以期望傷害為權值的手牌使用決策體系
????????進階目標:
????????????????1、實現(xiàn)對我方血量的讀取,以優(yōu)化治療卡的選擇和使用
????????????????2、實現(xiàn)對敵方屬性的讀取,并實現(xiàn)對克制屬性傷害增幅的計算
????????????????3、實現(xiàn)對敵方血量的讀取,以便實現(xiàn)手牌的使用目標選擇優(yōu)化
????????????????4、嘗試統(tǒng)計已造成傷害,以便更精確的實現(xiàn)目標選擇
????????????????5、錄入敵方數(shù)據(jù)庫,以便更精確的完成傷害計算
????????????????6、嘗試完成對暴擊傷害的識別(感覺不太能實現(xiàn),標識太小了)