calendar_viewer 日記/2015-04
new<<
2015-4;
>>old
[日記] |
||||||||||||||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
2015/4/29 (水)
ホムAI:Glenelg v0.68 の問題点†
別途4/4へのコメントでも書きましたが。
あれ以外にも多少気になる点があるため、自分の修正作業前の整理メモ。
今はバーニングイベント優先なので AIの即時リリースはしません:
明らかなバグについては修正場所もメモっておきます。
ちなみに 3 以降は仕様追加・改善事項なので、実施するか否か未定です。
1. コンボ処理の致命的バグ†
4/4 へのコメントにも書いた内容。
Glenelg V0.68 では、エレノアのコンボ系スキルが一切動かない:
それどころか、コンボスキルを使用すると AI が落ちます。
致命的な問題で、すみません。
修正は簡単。combo.lua 内を開いて「CreateComboTable」で検索、ひっかかる 2箇所を書き換えればよい。
元: CreateComboTable() 正: CreateComboTable(skid)
セラの自動ペインキラー対応が原因:
『登録されている複数キャラにペインキラー使用』という振舞いを、
エレノアコンボの仕組みを流用して『複数のペインキラー操作を自動発生』させるように設計しました。
その際、エレノアコンボとリスト生成の方法が異なることから、
使用しようとしたスキル種類に基づいて生成処理を分岐するようにしました。
で、その際に、エレノアコンボ側にバグが入ってしまった、と。
2. CHASE 時の空きエリア検索処理漏れ。†
V0.60 で作成した機能を、間違って部分的に消してしまった (^^;;
敵味方が密集しているときに、適切な空きエリアに移動する仕組み。
ターゲット管理の方法を変更した際の修正ミス。
AImain.lua 内、OnCHASE_CMD_ST()とOnCHASE_ST()のそれぞれ最後のほう。
GetEmptyCell() を呼んでいる OnCHASE_CMD_ST() のほうが正しい。
ちなみにこれらの関数の差は、前者が『AIが自律的に敵を決めたとき』、後者が『ユーザが敵を指定したとき』。
3. 自動ペインキラー、リストの非揮発化†
現状では自動ペインキラーのリストは『AIリロードで消えてしまう』揮発情報としている。
だが、利便性にやや難ありのため、改善対応の検討中。
この機能でやりたいことは実質的に『自分で物理攻撃しない後列キャラは、常に防御対象』、
『前列は状況に応じてなので自動化対象外』だと考えている。
だがこの『後列キャラ』というのが、意外と難しい。
例えば職で指定することはできない。世の中にはいわゆる『殴りプリ・殴り魔法職』というのがいる。
動作観察するのが妥当だとは思うが、それだとこのスキルに期待される『事前に防御準備』はできない。
一番簡単なのが『友瀬のJoseは殴りプリだから、対象外』『友瀬のさやかはIntプリだから対象』というように
キャラ名で指定することなんだけど、これはホムAIからは取得できないんだよね。
仕方ないので現状は割り切って、パーティ結成時に対象を指定・そのパーティ中だけ有効な情報でいいという想定。
だから『アカウント』情報を揮発記録する仕様になっている。
だが揮発情報だと、狩場に行ってそこで設定する必要がある。
またホム自身が死んでしまうのも、アウト。
どうせ友達登録するんだから、それを前提に記録してしまうのも手ではある。
消し忘れと、友達ロック機能との兼ね合いには気をつけないとだけど。
4. 制限スキル適用外敵リスト†
こっこAIで実装されている機能:フィーリルの奥義スキルを使ってよい・いけない敵を記録する。
これによって、例えば『ポリンに奥義を撃ってしまう』ユーザの誤操作を防ぐ。
意図としては『メカニズム的に連発できない・ミスが許されない』スキルに事前フィルタをつけることになる。
正直、奥義スキルは実用品ではない==不要だと思っていた機能だが、エレノアのつかみ3段で気が変わった。
これも決して狩での常用品とはいえないが、
例えば騎士団で深淵やブラッディナイト複数に囲まれたときの『5分間に1回の打開スキル』としては有用。
で、そういうタイミングでうっかり取巻きカリッツに使ってはたまらない。
学習情報は、敵ごとの学習リストに項目追加する方式がいいだろう。
ポイントは『使ってよい』ホワイトリストにするか、『使っちゃダメ』のブラックリストにするか、か。
『使ってよい』対象は少ない気がするのでホワイトリストのほうが使い手に優しいんだけど、
その場合『初めて出会い頭で会った敵に使えない』という問題があるんだよね。。
Glenelgでの敵ごとのActive/Passive指定同様に、『未学習の相手用』のデフォルトはユーザ選択できるようにするか。
5. 範囲攻撃・強化スキルの条件段階化、およびその自動・手動判定†
これらのスキルは、自動使用の条件に『敵群の脅威度』合計を用いている。
これ自体は正しいが、これには2つほど、考慮すべき項目がある。
1つは『SPの残量』。
余裕があるなら強化/範囲攻撃してもいいし、減っているときに使わせたくない。
1つは、上記にも関連:『かゆいときの手動フォロー』。
『今は強化よりも攻撃だろう』とかいう類ね。
ともあれ、まだもやっとした考えに過ぎないので、具体化は未定。
とりあえず、SP残量に起因して使用率を変動させる条件を追加したい。
ご意見などがあれば。
2015/4/28 (火)
雑記:バーニング、状況。†
4/21からのバーニングソウルフェスティバル(以降バーニング祭)についての、状況メモ。
基本骨格は?†
去年のアマツ祭とほぼ同様です。
つまり以下のようなもの。
- 精錬祭:+2段階レベルの安定精錬と、カード差替。
- 付随してメモリアルダンジョンめぐり。
- トレジャーハント:イベント限定アイテムゲット
参考 日記/2014-04-28、日記/2014-05-14
去年と違うところは?†
以下、いくつか列挙していきます。
- 事前イベント:経験値&ポイント稼ぎ
- バーニング祭の前2週間で、事前イベントが実施。
- 丸太を納品すると、経験値、および精錬祭のポイントが獲得できる、というデイリークエストが提供された。
- 精錬祭の弱点であった『経験値的ボーナスはない』を埋めるようなかたち、といえる。
- ちなみに経験値はかなり多く、1回1M単位。
- しかも、分割40で提供されていたため、新人でもロス少なく成長可能。
実際新規から初めても、初期配付される教範を併用して期間中実施すれば転生二次の後半に届く量。
- トレジャーハント。
- 暗号から座標獲得→当該座標からイベントマップでチャット行列→3択のご褒美表チャレンジ・・・という流れは変わらず。
- 暗号は、昨年あったローマ式暗号(数文字ずつ文字をずらす)が削除。
『ローマ数字』と、『ミイラ、とり』『とれ、ジャーハント』の言葉遊びで残った仮名文字→数字変換。 - イベント限定アイテムは、体力強化系のサンダル。
- メモリアルダンジョン。
- 微妙なクエスト追加。3日にわけて3回以上のメモリアルダンジョン突破で、サンダルをもらえる。
- つまり、今回はサンダルは手に入りやすい。
- 微妙なクエスト追加。3日にわけて3回以上のメモリアルダンジョン突破で、サンダルをもらえる。
- 精錬祭り。
- 精錬を行うために、前提クエストを実施する必要が発生した。
- 10ステップくらいのお使いクエストと、任意のメモリアルダンジョン参加が必要。
友瀬的な状況は?†
- 事前イベント。
- 新キャラ祭り(笑)
枠を埋めていた作っただけのノビ・倉庫商人・ポタアコあたりをがちゃがちゃと。
結果、5人ほどの転生二次が発生しました。- それでもさすがに、2アカウント全部を埋めるまではいきませんでした(笑)
- 正直、他キャラとPT組めるレベルになるとは思ってませんが。
今後もイベントで育てればいいかな〜と。
- 新キャラ祭り(笑)
- トレジャーハント。
- やってることは去年と同じ。
つまりコメントとしては去年同様、『ステップが多すぎ、手間がかかりすぎ』というのが感想。 - さらに事前イベントが追い討ちをかけている気がする。
実働キャラが、単純に自他ともに増えているのよね。- 自分だけに着目すると:『まわせる』キャラが増えている。
- 他者に注目すると:実働キャラが増える。結果、『入場人数制限のある専用マップ』での 入場ボトルネックが発生しやすい。
- まあ、全キャラでまわす必要はないので、自分分については自業自得なんだけど。
- 自分だけに着目すると:『まわせる』キャラが増えている。
- やってることは去年と同じ。
- 精錬祭り、前提クエストの話。
- 前提クエストのクリアが必要、というのが地味につらかった。
- たかだか10ステップくらいとはいえ、それを多数のキャラでやることになるわけで。
繰り返す:全キャラでまわす必要はないので、数に関しては自業自得なんだけど。
もともといた10数人だけでも、苦しいよ。 - 前提クエを設定した理由は想定・理解できるので、仕方ないとは思う。
事前イベントで『新人』にも精錬ポイントが入っているのが問題で、これによる『精錬暴落』は抑制する必要があった。
- 考えられる危険なパターンは、このイベントのためだけに『新規30day無料』のアカウントを作成
→新規12人x4200pts の精錬ポイントゲット、ウハウハだぜ、という線。
事前イベントは丸太さえあれば2ステップの超軽量イベントだっただけに、これは十分狙えた。 - 上記を抑制するための手間として、単調作業クエスト&MD攻略追加は、面白いラインだと思う。
特に後者のMD攻略は、時間的制約もさることながら、新規アカウントで必然的に発生する『レベルはあるけど装備なし』には効く。
- 考えられる危険なパターンは、このイベントのためだけに『新規30day無料』のアカウントを作成
- 精錬祭り、現状。
- 今のROでは、精錬数値による素のボーナスはあまり意味がない。特に防具。
いちおー武器は多少狙うけど、無理にはたたかない予定。
逆説的に、『精錬値によってなにかが起こる』ものを優先的に実施。 - +6過剰精錬に意味がある装備の精錬、順次実施中。
- 『精錬値+5以上/+6以上のときほにゃらら』and/or『精錬値1ごと/2ごと/3ごとにほにゃらら』というアイテムは、結構ある。
- +3ごとに攻撃速度ボーナスのあるソーンシールドとか。
精錬値に応じて能力値ボーナスの、楽園の鳥かごや精霊の王冠、幸運の服とか。
精錬値で完全回避が増えるヴァルキリーマントとか。
- プロンテラ軍服シリーズの準備。
- 属性カード刺しの既存装備から、カードを移動するアクション。
- 問題は、相応のカードがあんまりないことなんだよね。
火と水はあるんだけど、風と地がない。
風が一番重要なんだよねえ。 - ちなみにプロ軍服には『壊れない』プロ軍団長にアップグレードする方法があり、それの条件が精練値+8以上。
後述の邪竜と同じ理由で、後回し。
- 盾の新調。
- 去年は、差替え先の盾を確保できなかったんだよね。
1年かけて地味にためてたヴァル盾5枚を精錬&旧ガード系に刺さっている3減系カードを引越。
殴りアカウント用にホドレムリンcを1枚欲しいところ・・・ - ヴァル盾は精練値によるボーナスは特にないので、精練はお手軽にできる+5でストップ。
ポイント余剰を見て+6までは狙うかも。
- 去年は、差替え先の盾を確保できなかったんだよね。
- +7以上を狙うアイテムの準備&実チャレンジ。
- スパノビ用の催眠術師の杖。+10までしなければならないのでハードルは高い。
ちょっと考えて、ポイント使って通常精練で叩いた。
通常精練にしたのは、エルニウムの節約のためというのが大きい。
杖自体も、在庫10数本&今後も魔法大会で入手できる『壊してもは困らないモノ』だから。
精練ポイントも貴重とはいえるが通常精練はミラクルの1/30の消費なので、下手にミラクル繰り返すのと比べれば誤差と判断。
→結果、+7 が3本に。+10は遠い(笑) - タコ帽子、持っていた2個を+6まで。
数が少ない&+7が区切りなのでミラクル精練が妥当と判断、何度かチャレンジしたけど、ダメなものはダメ(笑)
1個はキープしておくとして、残る1個を売るか通常精錬冒険するか、はたまたもう少しミラクルするか、迷っている。 - 邪竜の鎧。5個の在庫を+6まで。
これは+8まで==ここから2段階が強化が必要なため、通常精錬で行くには5個では少なすぎる。
ミラクル精錬では成功率的に+8は論外、+7 も大浪費になる可能性が高い。
さすがに分が悪いので当面は他の精錬を優先して、余剰がありそうならミラクルで+7→通常で+8狙い、と考えている。
- スパノビ用の催眠術師の杖。+10までしなければならないのでハードルは高い。
- 今のROでは、精錬数値による素のボーナスはあまり意味がない。特に防具。
ご意見などがあれば。
2015/4/4 (土)
ホムAI:Glenelg Ver0.68†
表記、そんな感じ。
いつも通り、更新履歴からは読み取れない情報をいくつか。
傭兵AI†
なんどか日記記事も書いた件。
Glenelg のおいてある USER_AIフォルダに、カスタム版傭兵AIを作成・置くようにしました。
ホムAI を "/hoai" で使うように、傭兵AIは "/merai" で切り替えられます。
公式ページで『AIをカスタマイズしてると落ちる』云々という記事がありますが、 今回のGlenelg傭兵AIはそちらの情報は一切いじっていませんので、同じ理由でおちることはないはずです。
機能的には、『アクティブ化』+『友達判定』+『マインドブレイカーの自動使用』です。
ただ、傭兵AI側でまで友達登録作業をやりたくないとか、先日の日記に書いたような傭兵AI側APIの限界などから、結局いろいろ割り切って対応しました。
- 友達リストは、傭兵AIでは編集できない。
- ホムAI側で実施した友達リストを流用
- いわゆるホム友達的なものは、あきらめてID+IsMonster()での判断対応。
- そのため、第三者のホムだとか、各種召喚系オブジェクトは『実際には誰のものであっても』友達であると判断します。
同時攻撃者の自動友人登録†
傭兵AIにもかかわって、傭兵+ホムを同時使用する場合の友達判定まわり。
ロキについては、傭兵AI側で『ホムは自動的に友人と判断』していますが、
逆に『ホムがロキを友達と認識しない』という問題がありまして。
それの改善策として付けたというのが大きな理由。
ものすごく単純に、ロキと同じターゲットをホムand/orPC本体が攻撃していれば、 数秒後に自動的にロキを『友達』と認識するようになります。
自動ペインキラー†
ペインキラーは一時的に防御力を上げる『強化系スキル』ですが。
ホムには珍しい『任意の対象を強化できる』という特徴があります。
特にLv1ペインキラーはクールタイムがゼロなので、『複数のPCを強化できる』のです。
で、Glenelg的には、以下のような仕組みを作りました。
- スキル割当で登録できる『自動ペインキラー』で他のPCを指定することで、
それもペインキラーの強化対象にする
- このリストは揮発記憶。AIのリロードが発生すると失われます。
- 従来の他強化スキル同様、ボスケミに対する強化スキルとして登録。
- 自動強化スキルに『ペインキラーLv1』を登録した場合、他スキル同様にボスケミに対して 強化を行った後、前述の『自動ペインキラーで指定』されたキャラにも順にペインキラーをかけます。
そんな感じ。
ご意見などがあれば。
- バグ発見。近いうちにアップデートします。
■現象
エレノアコンボでエラー。
■原因
自動ペインキラー用でスキル連続使用の仕組みにコンボを流用。その際に、一部関数の引数にミスがあった。
■手動修正のやり方
「CreateComboTable()」という記述(2箇所)を、以下のように修正。
「CreateComboTable(skid)」
-- ともせ%管理人。 2015-04-27 23:59:42 (月)
2015/4/2 (木)
雑記:傭兵AI、その後。†
いろいろ試しているのですが。
なんかROクライアント側のAPI実装が微妙な感じで、頭良い動作ができない感じです。
以下、試してみてわかっているところをメモ。
- GetV( V_HOMUNTYPE, xx ) の動作があやしい。
- ホムAIでは、xx にオブジェクトIDをいれると『そのモノの種類』が取れた。
例えば「ホム:バニル」とか「敵:スケワカ」「PC:アルケミ」というような。 - 傭兵AIでは、今のところ nil(未定義)しか戻らないように見える。
「ロキ自身」「視界内のホム」を試したが、どちらも nil。 - この結果、傭兵AIでは『周囲のモノの種類によって行動を変える』ことができない。
- 例えば『魔人の巨影』にだけマインドブレイカーを使う、なんてのができない。
- 例えば、視界内のモノが『味方ホム』か『NPC』かがわからない。
- ホムAIでは、xx にオブジェクトIDをいれると『そのモノの種類』が取れた。
- GetV( V_MERTYPE, xx ) の動作があやしい。
- 本来の用途は、傭兵タイプを取得するもの。
自分が剣士か弓かという情報を得られる:これに応じて動きを変えられるようになっている。 - だが、今は1(ARCHER01)しか返ってこないように見える。
「ロキ自身」「視界内のホム」を試したが、どちらも1。
ロキはどうみても弓兵ではないので、動作としてはおかしすぎる。 - とはいえ、定数定義の const.lua にはロキに相当するIDは定義されていないので・・・
- 本来の用途は、傭兵タイプを取得するもの。
実運用的には、前者で地味に困っています。
上述したマインドブレイカーの無駄打ちの件もそうですが。
ジェネでホム+ロキ状態で戦おうとした場合に、『味方のホム』を知ることができないんです。
つまり、横殴り判定がしづらい。
傭兵AIを自由に書き換えることまでは推奨していない、っていうのは事実なんでしょうし。
特に V_HOMNTYPE については、もともとかなり変則的な実装だったので、傭兵AIで同じように動く保証はどこにもなかったわけではあるのですが。
仮にも「情報取得用関数」で定義されているモード・引数が適切に動作していないというのは事実で、正直間抜け。
ご意見などがあれば。