ホムンクルスAIについての独り言
[ラグナロクオンライン]のホムンクルスシステムで使用する ホムンクルスAIのカスタマイズについてのメモ
プロフィール

モルティシア

Author:モルティシア
何時の間にやら貧乏キャラが定着しそのまま「安ケミ」と呼ばれるようになった「安っぽいケミ」
一時休止していたものの、最近ふたたびホムンクルスのカスタムAIの開発&公開を再開
メマー無しPC3の42転職
[完全製薬・完全露店]キャラ

カテゴリー

月別アーカイブ

最近の記事

最近のコメント

最近のトラックバック

ブロとも申請フォーム

この人とブロともになる

リンク

このブログをリンクに追加する

ブログ内検索

RSSフィード

FC2カウンター

メールフォーム

名前:
メール:
件名:
本文:

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

非先行における突然の先行化について
うちのAI用BBSに書き込みがあったので、この現象について私が知っていることをちょっとまとめてみます

経験からの認知であるため、これが正しいと言い切るつもりはありませんが
これは恐らく「さっきまで戦っていた敵」と「新しく沸いた敵」のIDが同じであった時に起こる現象だと思われます

同じ現象はデフォAIでも起こります

非先行状態のGetEnemy処理の構造上
「自分をターゲットした敵」以外を自分から殴りに行くことはありえません

非先行状態のGetEnemyの敵取得は
--
target = GetV (V_TARGET,v)
if (target == MyID) then
~~~~~~~~~~~~~~~~~~~~~~~~~~
--
といった分岐でIDを分類しています

これは「敵IDがホムンクルス自身を敵としてターゲットしているなら」
という意味です
この条件を満たさなければこの先の処理は行われません

なら何故突然ホムがアクティブ化して敵を殴りに行くのか?
原因は二つ考えられます
・「直前までホムをターゲットしていた敵」と「全く同じIDの敵」が新たに現れた
・「直前まで主人をターゲットしていた敵」と「全く同じIDの敵」が新たに現れた
この二つです

この時AI上では「敵が攻撃範囲外に逃げた」としか認識しません

その為、IDが同じであるのでその敵を殴りに行ってしまいます

さらにややこしいことにROでは「ターゲット」の「情報が上書き以外の方法でリセットされていない」様なのです
つまり、新たに同じIDのモンスターが沸いた時、そのモンスターが他のキャラを新しく殴らなければ
新しく沸いたモンスターであるにも関わらず、古い「ターゲット」情報が残っているのです

AIはこれを「自分がターゲットされている」と誤認して殴りに行ってしまいます

対策は不可能ではないでしょうが、
動作テストを行うための条件を意図的に作るのが難しくまともなテストが出来ないのと

古い敵のターゲット情報をどうやってAIに認識させるか?
モンスターが新たに沸いたということをどうAIに認識させるか?
といった問題が残っています

自動的に反撃しなくていいのなら
IDLE_STのホムの敵を取得する処理へ飛ぶ部分
[object = GetMyEnemy (MyID)]
を削除してしまえばOKです

これで勝手に殴りに行くことは殆ど無くなるでしょう

その代わり 自 衛 も し ませ ん
(しかも『「直前まで 主 人 を ターゲットしていた敵」と「全く同じIDの敵」が新たに現れた』 には対策できてないし)

個人的にはこの改造はオススメできません
どうしてもこの誤作動が気になる方だけが自己責任で行ってください

個人的には、敵を倒した後ホムがどこかへいこうとしたら
咄嗟にALT+Tでいいんじゃない?とか思っています

良い対策方法がひらめいたら随時実験して実装していきますが、これはスタック同様に仕様であると諦めた方がいいかもしれません
スポンサーサイト

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://yasukemi.blog49.fc2.com/tb.php/48-3e561886
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。