正式公開版 Ver 1.5(2007/3/3公開)

物理演算とAIで格闘ゲームっぽいものを目指そうというプログラムです。
NekoFight ver1.5をダウンロードする(Windows+OpenGL、ZIP圧縮、12MByte)
操作法はメニューから操作法を見てください。
2007/3/3日 Ver1.5 公開
ものすごーく久しぶり(4年?)な趣味ソフト公開ですが、NekoFightのバージョンアップです。棒立ちだった敵キャラにAIつけてみました。
AIの方式は単なる3層ニューラルネットで、学習アルゴリズムは私独自のED法(誤差拡散法)です。
ED法は、バックプロパゲーションが実際の神経系のメカニズムとしてはありえないというのが気になって私の方で考え出した学習アルゴリズムですが、学習速度が非常に速いのと、中間層を増やせば無制限に性能が上がるのが特徴のアルゴリズムです。私の方では、おそらく本物の脳みそ(前頭前野大脳皮質)もこんな学習アルゴリズムなんじゃないかと思ってますがもちろん確証は無し(笑)
設定で中間層素子数は好きなように変えられるので重い人は数を減らしてください。頭がお馬鹿になりますが処理は軽くなります。
あとサンプルデータは一つしかないので、すいませんが素子数変えたときは各自で一から学習させてやってください。基本はニューロなので似たケースでは似た振る舞いをしますが、このクラスの問題となると入出力パターンの組み合わせは無限に近いのでそれなりに時間かけて学習させてやらないとだめです。
左下の表示はAIへの入力信号で、内容は視野と各関節の接触センサーと空間での絶対座標(向き含む)です。起動直後は学習OFFで学習結果のみで自律動作してますが、メニューで学習ONにするとユーザの操作パターンをそっくりコピーすることで学習します。
使うのは矢印キーとZ(近づいて掴み)、XとCで(左右のキック)です。同時押し可能ですので起き上がるときは両足で蹴上がるなどいろいろやってみてください。あとRキーでワールドがリセットされせます(学習内容はそのまま)。
なお物理演算側で、筋肉の張りや歩行ルーチンなど調節して前よりは操作しやすいようにしてあります。
あとゲームっぽく場外つけてみました。
とりあえず何が面白いのかわかりにくいとは思いますが暇つぶしにどうぞ。
2003/9/4日 Ver1.4 公開
なんとなくマウスでの操作などを強化してみました。あと、メニューから重力切れるようになってます。計算部はそれほど変わってないです。
2003/4/16日 Ver1.3 公開
のんびりした更新ですが、技術面で思いついた部分があったので修正しておきます。全体の角運動量保存が成ってないんじゃないのかというのの対策や、衝突判定でバグがあったりしたのでその辺りです。操作方式も変わっていて、Z, Aでつかみです。投げなどが前よりもまともになってるんじゃないかと思います。
6/27日 Ver1.2 公開
最近は裏で暗躍してるので表にプログラムが出てきませんが(笑)、明日からのイベント対策でちょっとだけバージョン上げておきます。前のバージョンですと起立や歩行に外力処理入っていましたが、今回のでは基本的に全部内力相当になっているので多少は自然になったんじゃないかと(ロールで変な挙動でてるけど・・・)。倒れるモーションなどもまともになっているはずですが、逆に立ち上がるだけでも難しくなってます。倒れたら足をじたばたさせてどうにかして立ち上がってください。
あと、ジョイスティック指せば2キャラも動かせるようになってます。
あ、あとコンパイラがVC.NETになっているので、98系OSだと動かないかもしれません。
修正
完全に内力だけだと地面上に転がったときや壁に接触したときに操作が難しいので、足以外で接触してたら謎外力働いて左右に動けるようにしときました。
3/18日 Ver1.1 公開
メールでご意見いただきましたが、共通するのが「XとCを連打していると空飛ぶんですけど」というものでして(^^;こりゃまずいということで対応しました。
プログラム的には足に凄い加速かけてるだけなんですが、ここのところを外力扱いだったのでこれを内力扱いにしました。そのため、キック以外に起き上がりなどいろいろ使えます。あとXとCを連打すると空に向かって蹴りを連打します。プログラム的にそう書いてませんが、なぜか安定するようで。
この辺の内力計算なんかはいろいろノウハウ必要だったりするところなんですが、微妙にまだ処理が変かもしれず(内力で発生する挙動で回転に関する系全体の保存則が成り立ってないような・・)。まぁよく考え直します。
あと、今まで歩行ルーチンがオブジェクトの上に乗ったときのことに対応してませんでしたが、対応しましたので物体の上でも歩けるようになってます。階段っぽいオブジェクト配置にしておきました。ただ、足がどこに行けば良いのかで怪しい挙動が出やすいです。なぜか後ろに進むと確実に転ぶし(^^;
既にIKや物理演算どうのこうのではなく、一番厄介なのがモーションをプログラムで生成するところになっています。各点の位置を全てプログラムで制御していますので、どういう風に動かせば良いのかが頭痛いところです。
あと、筋肉ダンパーの係数(意味不明だけど、表と裏の筋肉を両方緊張させたのに相当する成分、挙動が硬くなる)とか起き上がりや歩行関連のパラメーターチューニングしておきました。ただ、こういうのはあちらを立てればこちらが立たずで調節が難しいです。改悪してなければいいんですけど。
夜に追加
Nifのサーバーがメンテで落ちてたので、ジャンプ部分をこっそり変更。足を伸ばすだけにしました。
3/17日 Ver1.0 公開
一度やってみたかった物理演算ベースの格闘ゲームです。といっても、今のところそれを目指したサンプルですが。
技術的には古のAnimeBodyが基本になってますが、ノウハウが数々たまっているので、プログラム的には完全に作り直したものです。関節の制約処理などAnimeBodyよりはかなり処理がまともになっていると思います。IK周りの技術はそれなりに凄いはず(自画自賛(笑))
表示周りはかなり手抜き(影ぐらいちゃんとステンシルバッファで処理しろよとか(^^;)ですが、モーションの方に気合入ってます。なのでビデオは弱くても問題ないですが、CPUは1GhzクラスのCPU推奨です。やっていることがことなのでIK周りの処理でかなり重くなってしまっています。
あとまだコリジョン周りがいい加減なので今後強化予定です。ここを直せばそれなりに組み技などにも耐えられるんではないかと踏んでいます。このバージョンでも両手ホールドすれば組み手は行けますが、そのままぶん回しているとコリジョン処理のいい加減さにより抜けます(^^;。ただ、IK関連や物理演算周りは、既に技術的に問題になるところはなさそうですね。
操作ですが、まだプラクティスモード状態で、2Pは立ってるだけのデクノボウです。操作はできません。自キャラの方は移動とキックとしゃがみ、ジャンプとあと相手の手を取ることができます(パンチが失敗したため(^^;)。
これだけの操作ですが、完全にプログラムだけでモーションを生成(モーションデータの類はまったく使わず物理演算とIKだけ)しているので適当に動かすだけでそれなりに遊べると思います。こういう作り方のプログラムは珍しいでしょうし。ただ、実際にゲームにするかは今後の気分の問題でしょうか。
あと、数々の制約によりプログラムソースの方は公開しないと思います。