2006年03月24日
TraceAI 機能をカスタマイズする
今回はデバッグについて語りたいと思います。
Move( MyID, x, y )
TraceAI( "Move to: "..tostring(x)..tostring(y) )
このように、組み込み関数に渡す値をトレースしたいと思う機会は多いかと思いますが、 まずはこれを自動的に行ってくれるコードを見てみましょう。
組み込み関数の呼び出しをトレースこの例ですと、Move, MoveToOwner, SkillObject 関数に渡した値が、このようにトレースされます。
MyID = 12345
local x, y = 120, 141
Move( MyID, x, y )
2006ウ・3ソ・24タマ 14ステ 20コミ 43テハ Call API: Move(12345, 120, 141)
しかしながら、TraceAI.txt に書き出す情報が増えていきますと、 ちょっとデバッグしただけでテキストの大きさがMバイト単位になり、ROの動作がすごいことになります>< ハードディスクへの負荷も無視できないでしょう。 TraceAI.txt を分単位で自動的に分けて保存してくれたら便利だとは思いませんか? なので、そのような機能を実装してみることにしましょう。
TraceAI.txt を分単位で分割保存はい、これで1分ごとに 2006_03_24 15_26.txt のような形式で TraceAI.txt を分割保存してくれるようになりました。 注意点として、この機能は事前に USER_AI フォルダの下に trace_backup フォルダを作っておかないと動作しません。 trace_backup フォルダがあれば、その下に1分ごとに上記のようなファイル名のテキストが保存されていきます。
デバッグについてですが、いちおう拙作のほむエミュレータなんていうツールもあります。 スタンドアロンなLuaインタプリタ上で動作するので、Luaのデバッガを使ってAIのコードにブレークポイントを仕掛けることが出来ます。 が、これはホムが実装される以前に、私自身がAIの状態遷移を完全に把握していない時に書いたものなので、 あまり本格的なデバッグに役立つものではありません>< たまにちまちまと修正したりしてるので、そのうち改良版をどこかに上げたいと思います。
トラックバックURL
この記事へのコメント
質問があるのですが、リーフの治癒の手は敵に使用するようにできるのですか?できるのなら教えてもらえると助かります><
質問ですが、強敵に対しても初激だけスキルを使用するようにはできないのでしょうか?
初激のみ=true、強敵に高確率使用=falseだと、スキルを使用しなくなる?
よろしくお願いいたします

