gemとかcpanみたいな

ライブラリインストール機能なんてものを突然思いついた。

具体的にはAI向けライブラリ(SetInputみたいな)をAIManagerのごとく登録&取得可能にして
それをrequire(“ライブラリ名”);で利用できるようにth123_aiを拡張して
ついでに依存関係も記載させて、ライブラリが別のライブラリを使う場合はそれも芋づる式にインストールする。

こうすれば今の貧相なAPIでも誰かが上に乗っけるラッパー的なもので丸々環境作ってくれれば問題なくなる!
……まぁそこまでは言わなくともSetInput的なものを簡単にインストールできるというのは間違いなく開発にプラスになると思う。
例えば、A入った時点でお互いの位置&キャラ&霊力&手札などから考えうる最高コンボしてくれる関数、とかライブラリ配布すれば皆幸せになれたりする。
しかも、AIManaerで下地はあるから特に苦労することなく実装できそうという。

問題は、そんな事してライブラリ作ろうとしてくれる奇特な人が居るかどうかって話。
AIManagerは奇跡的に何とか成功の部類だけど、普通こういうものは作成者自身がまず盛り上げないと誰も使わないのよね。
だからといって自分にそんな事が出来るかといわれると……

やるとしたら、導入するだけで作成効率が全然違うってレベルのライブラリを公開前に多数用意するのは必須。
そんな事が出来るのか、自分に?

AIManager@ver0.87

自由時間は上手く働いたような、全然上手くいってないような……

AIManager@ver0.87
・AI vs AIモードを追加
・エラーリポートの改行が崩れていた不具合の修正

AI同士で対戦する際に一々別々に起動するのが面倒くさかったって理由で専用モードつけてみた。
黒窓一つにまとめてしまおうかとも思ったけど、そうすると表示が激しいAI同士だとわけわからなくなるし、何より別々の方が見ていて楽しい!
という超個人的な理由により二窓継続となりました。
フルスクリーンプレイヤーからするとAlt+Tabで窓切り替えし辛いため使いづらいとの事。
うーむ、フルスクリーン時は黒窓表示なしモードでも作ればいいのかなぁ

エラーリポートの改行は実は実装直後から色々弄っていたのですがどうにもならなかったので最後の手段で何とかしました。
あぁもう、改行コード変換なんて仕様はこの世からなくなれば良いんだ!!

スレを改めて見直して返答忘れていた物に返したりバグ報告の検証をしたり、Luaのエラー機構にちょっと手を入れたら動作しなくなって大慌てで元に戻したり。
そんなこんなで結局目に見える成果は残らなかった自由時間、やる意味はあったのかな……

宣言その4

ツールチップは当分放置。

・AIManagerにAI同士で対戦させるモードを作る。
・自由時間

宣言をするとその作業はその時間中に終わらせなければならないと考えて自身を追い詰めてしまうため、あまり大きなタスクは手を出せない。
で、ここ数日は小さい物にしか手を出せずいまいちやり辛かったので試しに自由時間を設けてみる。
これでまたサボり癖でたら他の方法考えよう。

00:40追記:
AI同士で対戦モード実装完了。
予想以上に時間がかかった、やっぱりGUIはまだまだ経験不足だなぁ

DXLibGameSettingDialog

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第六弾
(これ随分と久しぶりだw)

DXLibGameSettingDialog
DXLibで作ったゲーム用設定ダイアログ
とある人向けに作ったので汎用性に欠けるが、見せられないほどじゃないので公開。
たぶん使用用途は大分狭いので、実際に使うよりかは参考にする程度が一番かもしれない。
WTLでダイアログ組んだり、ゲーム以外の分野でDXlib使う際に参考になる、かな?

ぶっちゃけ、開発よりReadme書いてソース見せられる形にして~って作業の方がしんどかったです。

息抜き

最近th123_ai関連ばかりでその他のコード弄る余裕があんまりない。
せっかくの休みだし、息抜きって事で別のコードでも書こうかなーとか画策中。

いや、プログラムの息抜きがプログラムってどうなのよって話ですがw

th123_ai(仮)の進捗報告その16+α

ツールチップはあれだけ時間使っておきながら結局振り出しに戻るでむなしさだけが残った。
これ調べるのに使った時間丸々使えば自力実装出来てる気がする。

th123_ai.zip@ver0.88b
・キーコンフィグにて今まで認識していなかった一部記号キーも認識するようになった。
・F11キーとF12キーの検出率が悪かった不具合の修正
・iniに緋想天もしくは非想天則終了時にth123_aiも終了する機能、AppDownExitを追加
・0.88aより同時起動した場合にキーコンフィグが正常に取得できていなかった不具合の修正

AIManager@ver0.86b
・AI起動後終了しないように動作変更

キーコンフィグの記号対応は機能追加でもなんでもなく
むしろMSの陰謀の所為で今まで正常に動作していなかっただけという。
スキャンコードというキーボードの全キーと1対1で対応させた識別子のようなものがあるわけですが
実際のキーボードとのやり取り時は生のスキャンコードが来るのに、OSのエミュレート機能を使うとキーボード種類にあわせた変換がかかっていたのが原因。
つまり、英語日本語どちらのキーボードにもあるが配置が違うキー(^@「:」¥の6つ)が変換の煽りを食らって動作していなかっただけ。
MSDNとかもう二度と信用しねぇ……

F11とF12キーはyield呼ばれるたびに”その時押されていたら”という頭の悪い処理をしていたため、気持ち長めに押さないと反応しなかったでちょっと検出方法変えてみた。
自分で使った範囲では動作改善した気がするけどしばらくは様子見。

AppDownExitは自分でも頭悪いネーミングだと思うが他に浮かばなかった。
要するに非想天則落ちた時に終了するってだけ。

同時起動でキーコン落とすのは、動作側検出精度向上の修正の際に誤って相手がAIの場合は~って分岐を抜かしてしまったのが原因。
その結果、どちらのAIも同じキーコンを取得してしまい動作しなくなっていた。
分岐コード復元して修正。

AI起動時に終了が微妙に評判悪いので終了しないようにしてみただけ。
うーん、必要ある?


ツールチップはどうしよう……
改行表示なしでいいなら問題なく動くんだが、改行ありにする方法が判らない。
リストビューの個別ツールチップ表示する拡張スタイルが抽象化されすぎて中身見れないのがなぁ

th123_ai(仮)の進捗報告その15+α

128投稿目!
16進数で言うと0x80投稿目! 2進数で言うと10000000投稿目!

th123_ai.zip@ver0.88a
・get_special_dataにおいて8/16/13/14/9/15番が動作していなかった不具合の修正
・get_special_dataで長視「赤月下(インフレアドムーン)」の残フレーム数を取得できるように
・AIManagerから起動後、F11を押して別AIを読み込んだ場合でも起動時のAIのものとしてエラー報告が動作していた不具合の修正
・キーボード使用時、AI動作側自動認識の精度向上

AIManager@ver0.86a
・サブディレクトリを含むAIを登録すると場合により実行できていなかった不具合の修正

信じられるか? get_special_dataのバグは全部違う原因なんだぜ?
・8番夢想天生の点灯数は取得後変数に代入していなかった
・9番緋想緋緋想は受け側に付加されるのにキャラが天子の時、と判定が入っていたため。
・13番と14番泡姫は判定に使っていた画像IDを書き間違えていた。
・15番MPPはアドレスが違っていた、解析ミス?
・16番毒煙幕は条件分岐に使っていたモーションIDを間違えていた。
よくもまぁこんなにバグを仕込んだ物だと関心するね。
2時すぎてあせっていたせいなんだろうなぁ

インフレアドムーンは赤Fテスト中に取得できない事に気づいて急遽付け足した。
なんで効果同じなのに別変数使って管理してんだよ!

AIエラー報告のバグは、AIManagerから実行された時にエラーしたらそのAIのエラーとして報告する機能がリロードしようが何しようが動き続けていたという話。
F11押したらフラグ折るようにして解決。

動作側検出精度向上は
・ゲームパッド使用者がいたら逆側を使う。
・AIManagerからもらったキャラIDと合致していたらそちらを使う。
・戦闘開始前最後に押されたキーがキーコンフィグに含まれて居たら逆側を使う。
・キーコンフィグがデフォルトと6キー被っていたら逆側を使う。
こうなっているわけですが、2~4番目が上手く動いてなかった、つまり前回追加分全てにバグがあったわけです、なんてこったい。
といっても、想定の1/2程度しか検出できないって程度だったので、中途半端ではあっても動いてはいたんですけどね。
キャラID受け渡し方法変えて、キー入力取得方法変えて、デフォルトキーコンを直してやるようにして修正。
今度こそキーボーダーの人でも快適に使えるはず……

サブディレクトリ問題は……ごめんなさい。
AIManagerの最後に実装したのがこの部分で、意識朦朧としつつ書いたので絶対バグあるはずだからリファクタリングしろ!とメモにも書いておいたんですが、その後恐ろしいぐらい問題なかったのでそのまま放置してました。
くそ、むちゃくちゃ致命的な上に、そこにバグがあると推測まで出来ていて見逃していたとか悔しすぎる……
yuyukoの作者さんごめんなさいorz


ところで「他人の空似」でググルと上から6番目にヒットする件。
どういうことなの……

宣言その2

AIManagerの成功はAI公開&導入のコストダウン
AIManagerの失敗はスレに書く大義名分がなくなりコミニティ(?)が動かなくなった事。
そんなこんなで、AI職人および自分の励みにするために何とか盛り上げてみたいんだけど方法が思いつかない。

今日の作業予定(例によって午前2時リミット)
・前回更新分の動作テスト
・キーボード使用時の検出精度向上
・obj周りの問題にいい加減取りくみ始める。

00:40追記:
動作テストオワタ
やっぱりというか、むしろ無いかもと期待したのがおかしいというか。
とにかくバグ大量に見つかって穴があったら入りたい気分になった。
だってget_special_dataだけで5バグですよ? 本当にお前は馬鹿かと

01:50追記:
検出精度向上オワタ
テスト兼ねて新しくあがってたyuyukoのAI動かそうとしたら例外エラー、だと……
objの予定やめてこのバグ(だろうもの)の調査先にやるべきだな。

進歩

どんな形であれ、日記を書くことは良い事らしい。

昔の日記を読み直していたら恥ずかしさで顔から火が吹きかねん気持ちになったが、今も昔も変わらないことと今と昔では違うところが実感できて良い感じ。
特に技術系の進歩は予想以上に大きいようで、以前書いた内容を見て「違うってばw」などと突っ込みを入れられるレベル。
こういう、改めて自分がどう変わったのかを知る手段があるっていうのは大きいよね。


ところで、ほぼ1年前にファイルフォーマットがマイブームとか書いていたわけですが、実は今でもマイブーム。
ここ一年でメジャーなものだけでもwav/zip/mp4な色々なフォーマット読み書きできるようになったし、最近は独自フォーマットを作って遊んでいたりもする。

ファイルフォーマット弄るだけで生きていける世界とかないかな……

宣言

やる気を出す方法を確立したが、それも使わなければ意味がない。
使いすぎて効果なくなったらその時また新しい方法を考えればいいのさ!
ってことで今日も作業内容宣言。

・AIManagerで登録済みAI削除機能の実装。
・th123_aiでAIスクリプトでエラーした際、エラーした行番号をサーバに自動登録する機能の実装。
・AIManagerからエラー行番号を閲覧できる機能の実装。
・th123_aiでget_special_dataを動くようにする。
・th123_aiでキーボード使用時の動作側検出が怪しいのでさらに精度向上を目指す。

多少無謀な気がしないでもないが、今日は5時間半あるからきっといける。

23:00追記:
ご飯食べた、洗濯物干した、ごろごろした。
削除機能の実装終わった。
あと3時間しかねぇ……

00:20追記:
スクリプトエラー登録機能の実装終わった。
くそう、この辺一個当たり20分で終わる目算たったのに1時間以上かかるとは……
get_special_dataに2時間はかかると目算してたんですけど!!

01:30追記:
UIに凝っていたらいつの間にか1時間たっていた、何を言っているのか(ry
あっれ、まだ閲覧機能終わったところなんだけど……

03:00追記:
get_special_data終わった。
予定より一時間すぎてるし、明日起きれるかなぁ
キーボード検出は明日でもいいよな、うん。