BrawlAI初心者になる講座

どうも、KAIです。

先日Wifiが終了すると報告した次の記事がこれですw

でも、考えてみればWifiが終わればオフ勢であっても
日頃手合わせをするのはAIということになるのです。

自分で強くしたCPと戦ってみませんか?


AIの構造は

1,現在の状況に合わせ、いくつかの候補から抽選して行動を選ぶ
2,抽選された行動を行う

の2つです。

動作構造はPSAで言うコモンアクションなどと同様で、
Figter.pacに元の記述があり、それを各キャラで上書いて使います。

まず未改造ファイルでAIだけ強くしたいなら
抽選の確率を変更することが第一だと思います。

因みに最初に言っておくと、
確率を変更する部分は、独自の記述が大半を占めているので、
学ぶことは少なく、応用がきく物も少ない~です。

逆に技などの細かな動作は
プログラミングでよく使うような記述に結構似ています。
前準備として学ぶことが多い反面、
テキストプログラミングが初めてじゃない方であれば
今回初めて学ぶことは少ないのではないかと思います。

JSを知らない、書いたことない人は確率変更をまず先にしてから
AIScriptPadやそのほか色々に慣れたほうがいいのかも…?

---変更手順---
まだ私も初心者にもなれていないです。(特にルーチン構文)

殆ど同封のチュートリアルを噛み砕いて貼っつけてるだけですし、
独自解釈により間違ってるとこも多いと思いますが、
大体こんなもんかな~って感じで見てやってください。

あと、間違いに気づいた方はコメントくださいm(_ _)m(他力本願)

それと、編集する前に一度
チュートリアルを見たほうがいいと思います。(他力(ry


--必要な物--
・AIScriptPad
・変更したいキャラのMotionEtc or Etc
・Figter.pac(任意、Common3から入手可能)
・↑の他にも参考にしたいキャラ

1, AIScriptPadという物をBrawlVaultからDLしましょう。

2, 次に、2バイト文字の入らないところに作業用フォルダを作成します
(これ必要だったっけ…?こんな構造にした理由を覚えていない)
とりあえず私はCドライブ直下にAI/Workというふうにフォルダを作って
そこに作業ファイルを保存してます。間違ってたらすみません。

3, 早速AIScriptPadを起動してみましょう。

4, File → New → Projectを選択しプロジェクトを作成します。
入力内容は
・プロジェクト名
 任意。プロジェクトファイルの名前にもなります。

・作業ディレクトリ
 さっき作ったフォルダを選択してください。

・ソースファイル
 編集したいキャラのファイルです。
 直接これを編集するわけではありません。


|(5), ソリューションの作成(任意)
|改造されたキャラがうまく復帰してくれないなど、
|技毎の変更が必要な場合、あると少し便利です。 

|まず、さっきと同様の手順で、
|Figter.pacや参考にしたいキャラのプロジェクトを作成しておきます。

|次にNewからソリューションを選び、
|・ソリューション名(任意)
|・保存場所(プロジェクトと同じ場所を推奨)
|・プロジェクトファイル(複数選択可)
|を入力し、CreateSolutionをクリックします。

|これで右側メニューから他プロジェクトへの移動がダブクリで行えます。

ここから
・賢さ重視

・ミス行動を修正する、改造による派生などを行わせる
に分岐します。

改造によって技の使い方などが変わってる場合もありますでしょうし、
必要に応じてみるものを選んでください。


Aルート~賢さ重視 

A-1, AIPDを開く
今から、AIPDという物を編集します。
これは、最初に書いた「候補から抽選して行動を選ぶ」部分です。

左のデータ一覧の下の方にAIPDがあるはずです。ダブルクリックで開いてください。

すると真ん中の大きな窓にテキストが現れると思います。
これがAIPDです。

A-2, 技の確率を指定しているところまで飛ぶ
最初の方に「slot~」と書かれているのは無視して、(チュートリアルに説明が乗ってない)

//Routine call table

と書かれているところまでスクロールしてください。

Find&Replaceというメモ帳で言う「検索」「置換」の機能が用意されているので
それを使うと早いかもしれません。

A-3, AIPDの編集
何やら技の名前っぽいものと数字がたくさん並んでいますね。
ここで確率を変更します。

最初に{}の前に何か書いてあるのはその抽選が行われる状況です。
Far、Middle、Close、VeryCloseなど色々ありますが、
これはすぐわかりそうですね。敵との距離です。X/Yが付くと軸が限定されます。
他の物はReference→AIPD Repsどうぞ。(英語ですが。)

最初の条件を変更する必要性はないと思います。(というかまだ変更したことない)
追加もやったこと無いので、できるかわかりません。

{}の中に書かれている物が行動の候補です。
行動名は状況よろしくReference→Routinesからどうぞ。(英(ry

横4つの数字が確率です。それぞれの意味は左から
・確率1(CPレベルが高いほどこの確立に近づく)
・確率2(CPレベルが低いほどこの確立に近づく)
・上のレベルの最大値
・上のレベルの最小値
となってます。

レベル最大、最少値はレベルそのものの数値じゃないので注意。
レベル値はチュートリアルのAIPDの項目に乗っています。

例えば、
fXFar{
????
????...

FSmash 5,80,60,0
}
と書かれているなら、
「敵と離れている場合、Lv7以上であれば確率値5。
Lvがそれ未満なら、Lvが低くなればなるほど確率値80に近づく」
つまり、
「レベルが低くなるにつれ、敵の位置に関係なく横スマをぶっぱし、
レベル7以上であればぶっぱ行動を控えるようになる。」
ということになります。
逆に、隙の少なく、リターンの取れる行動をレベルが上がるにつれ
沢山選ぶようにさせることもできます。

行(選択肢)を増やすこともできるので、
自由にとらせたい行動をとらせてみてください。
因みに、「Unk~」は、まだ何の行動なのか解明されていないものです。

Farの時にNBをそこそこ振らせるようにしたのですが、
結構間合い管理(という名の歩き)をしていたので、
やけに確率が多いのはそのあたりの行動かと思います。

最後にセーブ、pacファイルに書き出す方法も書くのでお忘れなく。


Bルート~細かな動作の修正、改造対応

B-1, ルーチンを開く
今から、ルーチンという物を編集します。
これは、最初に書いた「抽選された行動を行う」部分です。

左のデータ一覧の上の方に2~4けたの数字のIDが書かれているはずです。
変更したい動作をReference→Routinesで確認した後、
それをダブルクリックで開いてください。

すると真ん中の大きな窓にテキストが現れると思います。これがルーチンです。


変更したいルーチンがデータ一覧に書かれていない場合、
コモンルーチンがそのまま使われています。

その場合、データ一覧を右クリックし、NewScriptを選択。
名前を「上書きたいルーチンID.as」にし、Figter.pacからそのルーチンの中身を
さっき作ったルーチンにコピペしてから編集するといいでしょう。

しかし、Figter.pacにすべてのルーチンがそろっているという訳ではありません。
私もここはよく分かってないので、教えてください偉い人!状態です。


B-2, ルーチンの編集
これからASを編集して行くのですが、
最初に言ったように汎用的な構文がほとんどを占めています。よって、
「チュートリアルを見て勝手にやってください」としか言いようがありません…
なので、間接的なアドバイスや参考になりそう(?)なテキストを置いていきます、

復帰をきちんとさせたい方は多いと思いますが、
復帰に使われる上Bは、ID6048ではなく、ID2040です。
フォックスなどの603A・6048・2040と入れ替えると、普通の復帰技であれば
大体うまく復帰してくれます。頭が出るのが気になる方は2040内の
上B発動タイミング・発動高度などを各自調整しましょう。

他にも、モーション同様他使い回せる場合は積極的に使い回しましょう。

コモンルーチンが無い場合も、上手く操作できてないということは
その技が大きく変わっている~ということなので、
一から(?)新しくルーチンを作ってしまうというのも手です。

そのための(便利かはどうか知らない)テンプレを置いておきます。
これを使えば、掴みを必殺技のような技にしていてもCPが使ってくれます。
//この1行下から

#include
//TrueID=0x0000//ルーチンID
id 0x0000//ルーチンID

//Set Unknown
unk 0x00000//使う変数の数。var0だけを使う場合、ここは10000になる。

//Strings

SetVec var0 Zero

//____________________
label

//ここに書きたいものを書く。

Return
Return

//この1行上まで

また、ルーチンを追加したらAIPDでそれを行う確率も調整しておくといいでしょう。


B-3, 判定データの編集。
これを設定しておくと、相手がCPの場合しっかりガードや回避を行ってくれます。
別に気にしない人は気にしなくていいです(汗

MoveDef(PSA)ファイルに指定されているアニメーション名に対し、
判定の発生、判定の最大範囲などを設定しますが、見たまんまです。
見たまんま弄ってください。(適当)


分岐終了です。

6, 保存、書き出しを行う。
プロジェクトを作るときにも書いたように、
これはpacファイルを直接弄っているわけではありません。

なので、セーブと書き出しという保存のための2つのコマンドがあります。

セーブは、AIScriptPadのネイティブな形式で保存されます。
書き出しはpacファイル内にバイナリデータとして変化させ、保存します。
因みに書き出しでも元ファイルに直接書き出すわけではありません。

・セーブ
 File→Save→セーブしたいもの(大体はAllでおk)

・書き出し
 Tool→(大体は)Full rebuild(書きだしたいものを選んでもよし。)

作業フォルダにBuildというフォルダが生成され、
そこにAIが編集されたMotionEtcが保存されます。
あとはFilePatchCodeなどでファイルを適用させれば、このAIが動きます。

フリーズなどは同時実行する行が多すぎる(=ReturnやFinish系のミス)が殆どです。
あとは変数を使いすぎても不具合が起こるそうです。
他にはファイルサイズ制限とか。


ふぅ、やっと書き終わった。

めっさ長文になったなと思います…
ここまで読んでくれた方はどれほどいるだろうか…

この文面だけで挫折して欲しくはないんですけどね…
せめて折れるならツール使ってからにしてください…w


まぁ、この記事を書いた理由がAIの行動理念が分からない人が、
「AIを賢くさせるためにまず何をしたらいいか」を知ってもらうためなので、
AIの構文・基礎などを纏めたチュートリアルよりかは、
AIが強くなるという「結果」になるべく近い書き方をしてきたつもりです。

まだ初心者にもなれてない私ですが、そういう人でしか見れない観点から
見て思ったことは、絶対同じ境遇にいる人の役に立つと思ったので、
敢えて理解しかけの今のうちに書いておきました。


そんなことで、自分のブログですが長文失礼しました。
主にこれを見て諦めてしまった人とべろさんに。


そういうわけで今日はここらで。

ノシ & 最後まで見てくれてありがとう、お疲れさま~

コメントの投稿


幻想のコメントにする

どう返信していいのかわからないので、
返信がほしい場合は公開か別のメッセージツールでお願いします

管理人について
魔理沙大好き
名前:KAI
 HN:カイにゃん,青黒符とか

やってること
・スマブラ(U/X/64)
・スマブラハック(Zeus/PM/他)
・スプラトゥーン
 WiiU@Project_KAInyan
 Wiimm@2024-6360-7598

・東方
・DTM
・絵
・プログラム/Webデザイン
・モデリング
・Key/Gt/Bs/Dr/その他楽器
詳細


KAIへのコンタクト
Skype:kai.marth
Twitter:@Project_KAINyan

お好きな名前で呼んでくださいね
ブログのヒット数
記事の種類
記事の数=バーの長さ
最新記事
最新コメント
魔理沙があなたに
言いたいことがあるようです。
サイトリンク
ブログリンク