タグ: 優先度

索敵優先度に関する設定

こっこAIの索敵アルゴリズムは、ポイント制になっています。
攻撃可能な敵に対し条件に応じて採点していき、その時に最もポイントの高かった敵をターゲットします。
採点内容については、誰をターゲットしているか、その敵の優先度設定はいくつか、敵との距離はどのくらいか等です。

採点式
ターゲットポイント=Σ(条件優先度×評価倍率)

実際に設定変更が可能な項目は条件優先度の値です。また、敵の個別優先度も索敵条件に関わりますが、
こちらの設定方法は操作系設定の項目を参照してください。

条件優先度

索敵をする上で、味方・敵の攻撃対象や、敵との距離、Mob.luaで設定される優先度、
平均戦闘時間などの条件があります。
これらの条件をそれぞれどの程度重要視するかの数値を条件優先度としています。
条件優先度には、以下の8つの項目があります。これらの数値を自由に設定することで、
優先的にターゲットしたい敵の傾向を決定します。
なお、0に設定した条件については、採点対象にならなくなります。

【攻撃対象の条件】
TargetPriority[TP_En2Ow] = 9 -- 敵→主人(主人を攻撃する敵に対する優先度)
TargetPriority[TP_En2Me] = 8 -- 敵→自分(自分を攻撃する敵に対する優先度)
TargetPriority[TP_En2Fr] = 6 -- 敵→友達(友達を攻撃する敵に対する優先度)
TargetPriority[TP_Ow2En] = 10 -- 主人→敵(主人が攻撃する敵に対する優先度)
TargetPriority[TP_Fr2En] = 7 -- 友達→敵(友達が攻撃する敵に対する優先度)
【設定値の条件】
TargetPriority[TP_Rec] = 3 -- 平均戦闘時間(平均戦闘時間の短さの優先度)
TargetPriority[TP_Rank] = 4 -- 設定優先度(個別優先度の優先度)
【距離の条件】
TargetPriority[TP_Dist] = 5 -- 主人からの距離(主人からの距離の優先度)

評価倍率

採点時には、条件優先度に対して、その条件をどの程度満たしているかの評価倍率を掛けます。
例えば、主人からの距離という条件に対しては「距離」の評価が掛かります。主人の隣の敵は最も高い評価となり、
画面端に居るような敵は最も低い評価となります。(ただしOnBattleDistanceより外の敵は全てポイント0になります)
評価倍率は最大値1であり、評価1の時に条件優先度の設定値がそのままポイントとして加算されることになります。
すなわち、主人との距離が1の敵と8の敵では、評価倍率が2倍近く違うことになります。

また、自分や主人、敵の攻撃対象の条件(自分を攻撃する敵、主人が攻撃する敵など)については、
満たすかどうかの評価なので、01が掛かります。0が掛かる場合は、当然その条件でのポイントは得られない
ことになります。
ターゲットがフリーの敵は攻撃対象の条件でポイントを得られないので、アクティブ索敵の時にフリーの敵に対しては
設定値と距離の条件のみで採点されることになります。
デフォルトでは攻撃対象の条件優先度設定値が比較的高めにされているため、
殆どの場合は攻撃対象の条件が成立する敵からターゲットされます。

友達の攻撃対象の条件については、友達の数だけ評価が分散されることになります。例えば友達が二人居る場合、それぞれ違う敵を攻撃していれば「友達が攻撃している敵」の評価倍率はそれぞれの敵に0.5ずつになります。(同じ敵を攻撃している場合は、評価倍率1になります)

それぞれの評価倍率は以下のように計算します。

平均戦闘時間	:	1 - (評価対象の平均戦闘時間÷60)
設定優先度		:	1 - (評価対象の設定優先度÷20)
主人からの距離	:	1 - (評価対象の主人からの距離÷15)
	
※母数は、それぞれの変数の最大値

実際の採点は以下のようにして行われます。

採点例

敵A	=「主人を攻撃」×条件優先度8 + 「平均戦闘時間(4秒)」×条件優先度3
	+ 「個別優先度(10)」×条件優先度5 + 「主人からの距離(3)」×条件優先度6
	= 1×8 + ( 1 - 4 / 60 )×3 + ( 1 - 10 / 20 )×5 + ( 1 - ( 3 / 15 ) )×6
	= 8 + 2.8 + 2.5 + 4.8
	= 18.1

敵B	=「自分を攻撃」×条件優先度9 + 「平均戦闘時間(6秒)」×条件優先度3
	+ 「個別優先度(5)」×条件優先度5 + 「主人からの距離(5)」×条件優先度6
	= 1×9 + ( 1 - 6 / 60 )×3 + ( 1 - 5 / 20 )×5 + ( 1 - ( 5 / 15 )×6
	= 9 + 2.7 + 1.25 + 3.96
	= 16.91
			
	したがって、「敵Aのポイント>敵Bのポイント」により、敵Aをターゲット。
カテゴリー : AI機能, 戦闘系設定 タグ : , , ,

敵別優先度設定操作(Mob.luaデータ系)

敵ごとに索敵優先度、共闘の個別設定をする操作です。
これらのデータはMob.luaに保存されます。
総合ツールのMob設定エディタを使えば、ゲーム外でもこれらの設定を編集することができます。
複雑な操作の場合は、エディタの利用をお勧めします。

個別優先度の設定

Mobごとに個別にターゲット優先度の値を設定できます。
この値は索敵時の評価に使われます。Alt+対象右ダブルクリックによる手動攻撃命令を送ると、その時点で
その対象Mobに対して優先度が+1されます。ホムンクルスはそのままそのMobを攻撃し始めますが、
同様の操作を続ければ優先度はクリックのたびに+1されていきます。優先度の最大値は20です。
なお、一旦無視設定に登録することでその敵の優先度設定は0にリセットされます。

また、優先度設定値によっては戦闘中のターゲット切り替えに影響します。
現在の敵が優先度設定値15以下の時、主人が優先度設定値が11以上15以下のMobを攻撃すると、
主人の攻撃したMobへターゲットを切り替えます。

優先度設定値が16以上になると、そのMobは最優先で倒す敵として認識され、15以下のMobと戦っている時に
ターゲットされると、即座に最優先の敵にターゲットを切り替えます。

また、主人がターゲットした相手をリアルタイムに追従の設定がtruefalseかによって、
優先度設定値による挙動が変わります。

手加減する相手を登録

主人が座っている時にAlt+対象右ダブルクリックで手動攻撃命令を送ると、今後その敵に対しては手加減
(共闘ボーナスモードと同じ動作)するようになります。
もう一度Alt+対象右クリックで手動攻撃命令を送ると、登録は解除されます。
(解除の時は主人が立っているか座っているかは問いません)

手加減する相手に対する攻撃時間や、敵の数の制限は共闘ボーナスモードのものと同じです。

カテゴリー : AI機能, 操作系設定 タグ : , , , ,
top