calendar_viewer 日記/2006-07

お名前:

2006/7/30 (日)

というわけで、ver0.38リリース。
ベータ版の内容に加えて、戦闘をカプリスの遠距離射撃からはじめるようにしました。
ピンとこないかもしれないのでもうちょっと具体的に書くと、従来の動きが

索敵&敵確定
→それに向かって移動
→隣接したら白兵戦&初撃スキル

・・・だったのに対して、今回の改訂で

索敵&敵確定
→それに向かって移動
→カプリス射程に入ったらまずカプリス使用(推定遠距離&初撃スキル)
→接近続行
→隣接したら白兵戦

・・・という感じ。
まあ、Glenelgのデフォルト索敵範囲は3セルしかないので、あんまりピンとこないかも。
つーか、だから今まで実装してなかったのですが。

要は、Ver0.38で「第三者が近くにいたら索敵範囲を減らせる」ようにしたので、これの裏返し:「回りに人がいなければ、広めに索敵したい」という気持ちがでてくると思われたので、それにあわせた拡張という感じです。

逆にいうと・・・これを利用すると横殴りする可能性は多少増えます。
白兵戦だと隣接する必要から移動するまでの時間が長いので、その間に第三者がアクションすることでホムが攻撃前に「横殴り」と認識・中断できる可能性がありました。
ですがカプリスだとほとんど移動せずに撃てるので・・・ということです。
一応カスタマイズ可能対象なので、もし「第三者が近くにいるときでも索敵範囲がそれなり」ならば、この機能はOffしたほうがいいでしょう。

以上、コメントまで。

2006/7/27 (木)

最近、工体AIのファイルがアクセスできなくなったとかで、MMOBBSのホムAIスレがいろいろと騒がしくなっているようです。

で・・・そのスレでいろいろと話題になっている機能とか、例のAI機能○×表とか・・・ホムに対していろんな要望はまだまだあるようで。
そこについて思ってることをちょこちょことメモ書き。

趣旨は・・・友瀬の場合、他AIで実装していてしかしGlenelgでは未実装の機能の多くは「友瀬なりの理由があって」積んでないんだよ、というような話。
何度も話題にしている「くるくる」や「バニル以外のホムスキル」の件は今更だと思うので、それ以外について。

○横殴り回避関連
最近にわかにあちこちで話題になっているこのあたり。
MMOBBSでは、きのこAI的な「敵の周囲に他キャラがいるなら、その敵を攻撃しない」というようなものになっている・・・という話題がでていました。
これについて、ちょっとコメント。

友瀬&Glenelgでの根底にあるポリシーは、
「あるキャラ(PC/ホム)の周囲数セルの範囲は、そのキャラの『領土』のようなもの」
というようなものです。
人間でもそうですよね?「他の人の周囲にいる敵は殴らない」っていうのはある意味当たり前なんですが、それ以前に「そもそもそういう距離には(徒歩では)近づかない」のが、普通の人間のプレイスタイルのはず。
なのでGlenelgでは「わずか3セル」だけをアクティブ索敵範囲にしていました。
きのこAIは「相手キャラの『領土』に踏み込まない」ように作っているのに対し、Glenelgはそもそも「自分の『領土』外には出て行かない」という感じでしょうか。

ただこのルールだと、そういうポリシーを考えずに索敵範囲を広げたり、また「テレポ」が絡んだり・・・とにかく『領土』が重なってしまった場合にと何かとおかしなことがおきるんですね。
そういうこともあって、Ver0.38に向けて「視界内に誰かがいたら、索敵範囲を狭く」できるようにしました。
どっちのやり方がいい、という話ではないです。
横殴りしないという目的のためには、いろんな達成手段がある、ということです。

○手動でのアクティブ・パッシブ切り替えについて
これは機能○×表からのネタ。表上は「先行・非先行切り替え」になっています。
多くのAIで持っているのに、Glenelgでサポートしていないのには、これも理由があります。

この機能は言ってみれば「普段はアクティブ策敵だけど、状況によってパッシブ策敵」にしたい、ということ。
ならば、その「状況」を判断して自動的にパッシブになることができるのなら、わざわざ手動操作はしなくていいのでは?というのがポイントです。
友瀬はこの「状況」は具体的には以下のようなモノだと思っています。

  1. ホムの体力が減っているので、「いのちをだいじに」にしたい。
  2. 強い敵がそばにいるので、変に突撃しないようにしたい。
  3. 第三者プレイヤーと混戦状況なので、横殴りにならないように大事をとりたい。

上記のそれぞれの状況について、Glenelgではカスタマイズと敵ごとの学習で、対応できるようになっています。

  1. ホムの体力が減ると、自動的にパッシブ策敵モード/逃亡モードになり、無理な攻撃はしません。
  2. 敵ごとに「アクティブ策敵対象」にするか否かを指定できるので、強い敵には自分からは攻撃しないようにできます。
  3. 『第三者が近くにいるときはパッシブ策敵にする』カスタマイズが可能です。

こういう方法で「自動的に切り替え」できるのだから、わざわざ手動操作できなくてもいいのではないか、と。 ホム操作用に無限に操作方法があれば別に準備してもいいんですが、UIが限られているので・・・こういうところは自動化したい、というところです。
もちろんこれは友瀬の現状認識なので、この想定外の事象から必要性が生まれたならば、実装の余地はあります。
が、おそらくはそういうときでも「その状況に応じた自動判断」の仕組みを作り、手動操作はさせないと思います。
実際上記での「3」の状況は、この日記の最初にあげた「周囲の人を見る」話です。

以上、長くなったので、他の話はまた別の機会に。

2006/7/24 (月)

というわけで。
先日から掲示板で話題に挙がっていた、『近くに誰かがいたらアクティブ索敵の方法を変える』系統について対処をしたベータ版を作成しました。
Glenelgではもともと周囲のオブジェクト状況を総合的に判断する下準備があったので、そこをちょこちょこと拡張したら、そんなに難しくありませんでした(^^;
一応簡単に動作確認はしたので問題はないと思いますが、まだヘルプファイルなどに反映していない点も含めてベータ版、ということで。

掲示板では「人がいたら、その人までの距離を見て云々」という方法が提案されていたのですが、
  他人−敵−ホム
・・・のような関係だと上記のやり方では危ないので・・・単純にそういう状況での索敵距離を固定値で指定するだけで十分と判断・妥協しました。
また、Glenelgのアクティブ索敵範囲はわずか3セルがデフォルト。
常識的に考えて、この距離での索敵で今回問題になるような混戦になるほうが不自然なので、今回の拡張もデフォルトでは機能させていません(近くに人がいてもいなくても索敵距離は3セル)。
テレポ狩りなどで他の人のトレインのど真ん中に落ちたときでも、「テレポ アウト後1秒強はアクティブ索敵を禁止」しているので、まず横殴りにはならないと思われます。

まあ、このあたりのパラメータは個人のプレイスタイルや主要狩場によって変わってくるとは思うので・・・うまいことカスタマイズしてみてください。

とまあ、とりいそぎ。

2006/7/17 (月)

3連休は、いつもどおり午前中に狩りをする生活でした。

うちのホムも完全に主力になり、今通っているGD3やピラ地下では、ホム主力・ケミは共闘&フォロー要員に近い状況です。
FLEEが180を超えたのが大きく、上述のマップではほとんどに敵に対して95%回避を確保。
HP自体も7000近く、事故死もほとんどないです。

そして、このレベルになってきて気が付いたホム関連仕様の真意。
ホムが「敵から優先的にタゲられやすい」という、育成初期には厳しい弱点としていろいろとりだたされていた仕様。
これが、このレベルになると非常に助かる仕様になります。

例えば・・・テレポしてモンハウのど真ん中、って言う状況。
ケミ単体なら、迷わず即再テレポで逃げるシーンなのですが、ホム連れとなった今ではそんなことはしません。
あわてず騒がず、ケミは数歩横に移動すると・・・あら不思議。 全ての敵はホムに群がり、ケミ本体は蚊帳の外(笑)
ホムには囲まれ補正が存在しないので、10匹くらいに囲まれてても平気な顔して避けまくり。
つまり、そういうモンハウを軽く食えるようになったのです。

もちろん、十分なFLEEが必要ではあるのですが・・・AGI職ばかりの友瀬には、結構新鮮でした。

2006/7/11 (火)

Glenelgユーザーの方からバグ報告あり。
簡単な内容だったので、即対応したver0.37aを出しました。

対応したバグの内容は、
『登録したホム友達が、10秒後に自動的に削除されてしまう』というもの。
もともとGlenelgは『ホム友達を見失ったら、10秒後に削除する』という仕様で作っているのですが、その「見失った」チェックが間違ってました。
ver0.31からのバグなので・・・誰も気づかなかった機能なんだなぁ、とちょっと複雑。

ともあれ、上記だけが0.37aでの変更点。
「ホム友達」を使っていない人は差し替える必要はありません。
また変更点も以下に記載の1行だけなので、自力編集してくださってもかまわないと思います。

USER_AI/friend.lua の中、function CheckTemporalyFriend() の途中に以下のような行があります。

for j, v in pairs( EnemyList[OBJECT_OF_FRIEND] ) do

ここの途中の EnemyList というのが間違い。 この行を以下のように差し替えれば直ります。

for j, v in pairs( ObjectList[OBJECT_OF_FRIEND] ) do

以上、報告まで。

2006/7/9 (日)

AI、ホムの進化に対応。
Ver0.37betaの正式版&掲示板で指摘をいただいた項目への対応です。

最近、こっこAIを見てなるほどと思わされたのが、「平均戦闘時間を調べて、その推定終了時間に近づいたらオートスペルは使わない」という機能。
言われてみれば、自分自身が(ホムでなく自分のキャラで)戦闘しているときは「おおよそ何撃で倒せる」というのは意識して行動しているので、それをホムに意識させるのは悪くないかもしれません。

ただ単純にやると、共闘時にはうまく行かない、という問題もありそう。
共闘相手がケミ単体ならともかく、パーティ戦闘時は区別して記録するというのも大変そう。

まあいずれにしても、今は夏のイベント向けのアクション中。
AIの大きな機能追加は、当分できないかな。

2006/7/5 (水)

つーわけで。
あんまり人任せってのもアレなので、うちのホムも進化させました。
0.37betaで問題なく動いている感じなので、この週末にでも正式バージョンアップというストーリーで進めたいと思います。

以上、速報まで。

2006/7/4 (火)

つーわけで、タナトスパッチ。
環境変化でGlenelgにいろいろ問題があったので、メモ。

  • ホム進化+別形態ホム関連への対応が不完全でした。
  • NPCのIDがだいぶ変わった結果、マップ自動判定が正常動作していません。
    • 上記に関連して、NPCIDの自動判定処理を行うとおかしなことになります。
      その場合、ai_selfset.iniを削除してください。

上記関連をいじったver0.37beta版を作成しましたが、こちらは上記に該当するホムを持っていないので、残念ながらテストができません。
うまくなければ報告くだされば調査・対応します。

以上、なんか同じことをあちこちに書いてるような気もしますが(^^;

2006/7/2 (日)

イベント対応でいろいろ多忙な今日この頃。
皆さんはいかがお過ごしでしょうか?

以下現状メモ。

  • 歌屋。
    ちと数日「次曲検討中」になってます。
    リクエストで「亡国〜」とか、ゲーム内Wisで「スピッツでなにか」とか多少もらっているのですが、保留中。
    つーか、前者は友瀬が知らない(^^;
  • AI。
    語るスレや他AI掲示板などでときどき見るネタに、「共闘狙いで1発殴る」っていうのがあります。
    これについては、今のところうちにはリクエストが来たことがない&ソロしてる分にはいらないので対処していません。

    ホムが絡むと経験値計算上「吸われる」部分があるゆえの要求だと思いますが、 「共闘で殴るぐらいなら全力で殴りゃーいいじゃん」「そんなにシビアな効率を求められるのが面倒」というのが友瀬の感覚。
    友瀬があんまりパーティプレイをしないから、というのもあると思うのですが。

    ちなみに、技術的にも難しかったりします。
    ホムは「自分が攻撃をしたか」「自分の攻撃が敵に当たったか」といったことを知ることができないのが大きな理由。
    つまり、「1回だけ攻撃指示をされても、ATKスピード上攻撃できないタイミングで指示をされたら、攻撃できない」「攻撃が空振りしても攻撃したつもりになる」というような問題が。
    前者はがんばれば対処できますが、後者がいかんともしがたい。
    なので友瀬的には、手動で攻撃&ALT+Tで停止が賢明かな、と。
    需要、そんなにあるもんですかね?

▼過去ログ
お名前: