以前書いた、フリーズの原因について

2015.10.30 23:32|スマブラX改造
以前、アイクラのオプション側をいじる方法容量をなるべく増やさないようにする方法を書いていたのですが、
最近になってようやく元々のOffsetが0のものに数値を追加すると
実機でそのアクションを行ったときに発生するフリーズの原因が分かりました。

どうやらもう一つOffsetの指定(小さい順に並んでいるもの)があって、
そこに値を追加しないと動作しないようになっていたみたいです。
PSAとバイナリエディタをうまく使えば楽に解決できました。
これでBrawl Box v0.67bで圧縮しなくても容量の大きさに大差がでなさそうです。
ちなみに、バイナリエディタでTypeをValueやScalarからPointerに変更するとフリーズするのも同じ理由でした。
(対処法はこちら)

そういえば、オーバーライドがないキャラにオーバーライドを作るの、できました。
プリズムコメットマリオに導入してみて、現在動作もほぼ正常です。
これで上位形態なら亜空の使者の仕掛けでも自滅ができなくすることが可能になりました。
ただ、名無しだったりしてBrawlBoxで編集時に消されてしまいますが...
作り方はこちらです。

オーバーライドを使えば掴み系Bに対しての反撃をノーダメージで実現できるのでいいですね。
オーバーライドを使った掴み系B反撃方法はこちらです。
スポンサーサイト



AIを弄ってみた

2015.10.25 02:45|スマブラX改造 謎
戦闘時、オーバーヒートアイスクライマーCP操作で並キャラ相手に詰む(プレイヤー操作なら普通に進められるが)なんてことがあったので、AI弄ってみることにした。
AIScriptpad2.0を使い始めてみた。(V1は一部いじれないものがあるようなので)
攻撃が当たる位置に敵がいるのに待機し続けていたので、とりあえずATKD.atkd(AIが識別できる攻撃範囲などのデータが入っているファイル)の通常攻撃のいくつかのxmaxとymaxの値を100まで上げてみたら超攻撃的になった。
AIPD.aipdも弄ったが、slot内の確率を少し変えた程度。まさかここまで変わるとは...
そして、AIScriptpad2.0は情報が少ないのもあってかなり使いにくい。良くわからないコマンドが多すぎる...

そういえば、アイクラのAIって掴みの確率数値0になってたんだな... CPアイクラが掴み行為をほとんどしないわけだ。

AIScriptpad2.0のコマンドをまとめた記事を作ってみたが、おそらく間違いがかなりある。
間違ったところがを見つけたらどんどん指摘して頂きたい。

実はネタAI作れるようにはなりたいと思っていたりしないこともない。
↑こういう小さい文字や大きい文字を入れると文字指定もっと細かくできたらいいのに...とよく思う。

ルーペ、花ダメージ無効化

2015.10.17 21:55|スマブラX改造 PSA参考
常時完全に、ではないですができるようです。
花ダメージを防ぐ場合はLA-Basic[24]、
ルーペダメージを防ぐ場合はLA-Basic[45]を
常にダメージにならない値にしておけば大丈夫です。(どちらの場合も20以下なら大丈夫でしょう)

記述例(ルーペダメージ無効化):
Set loop Infinite
  If Compare LA-Basic[45] > 0
    Basic Variable Set: LA-Basic[45] = 0
  End If:
  Synchronous Timer: frames = 1
Execute Loop:
発動時、ルーペ状態になりがちな技でルーペダメージを防ぎたいときに使えそうですね。
この方法ではルーペ状態そのものになることは防げませんが...

追記(2017/9/3):
ルーペ状態そのものになることは、LA-Bit[25]をfalseにすれば防げます。ほぼ画面上から完全に見えなくなるだけですが...
ルーペダメージはLA-Bit[26]をfalseにしても防げます。
花ダメージを防ぐことができるものは見つかりませんでした...

BrawlBox 意味不明なキーフレーム

2015.10.12 23:02|スマブラX改造 バグ関連
以前モーションを作っている時に起きたこと。
公式のモーションを1F取ってきて貼り付け、そこからまた違う公式のモーションを1F取ってきて貼り付け。
その間にInsertで2つのモーションを繋げた。
そして保存。すると何故か追記していないキーフレームが勝手に追加された。
Clean→基本的に消えない(固定キーフレームのため?) しかも例え消えても保存後に復活
Clear→消えるが保存後に復活
モーションのファイルのみを開いて削除→消えるが保存後に復活

えぇ...


追記
それまでBrawlBox v0.71を使って編集をしていましたが、BrawlBox v0.73bを使ったら解決しました。
その後BrawlBox v0.71で編集してもこの様な現象は起きませんでした。
ただ、偶然かもしれないので過信はしないでください。(←追記:他のものは0.73bを使っても0.77でも直りませんでした)
BrawlBoxのファイル名を変えてみると特定のバグが起きなくなる
なんてこともあるようなのでバージョンが原因ではない可能性もあります。

また、現在BrawlBox v0.73bはダウンロードできなくなっているようです。

空中でシールド

2015.10.11 02:25|スマブラX改造 PSA小ネタ
シールドで攻撃を受けると空中でシールドを張った状態になることがあるらしい。

Mario_GuardAerial
このように。

ジャストガードをした後、後退して空中に行くとなることがあるという。(普通は空中に出たら落下する)
この状態になると、動けなくなりシールドはただの飾りになる(当たり判定消滅)。
対処法はわからないが、とりあえずGuardDamageに
Allow Specific Interruptで空中ジャンプや空中回避でキャンセルできるようにしておけば基本的に動けなくなって詰むということは少ない。
常時ジャストガード状態のような設定を入れていないキャラでなったことはないので、ほとんどのキャラは気にしなくていいと思われる。

ちなみに「空中では使えないアクション」というのが設定されているようで空中でシールドを張るのは難しいらしい。
アクションオーバーライドでChange Action =E, In Airなどを消したものにしても空中でシールドを張るのはシールドを張った状態で空中に移動しないとできないとか。
さらに空中でシールドを張っている時は地上でしかAction移行をできなくする設定をしていなくても地上回避や掴みアクションに移行はできない。
掴みも空中でChachWaitの状態から投げや掴み打撃への移行はできないらしい。

ちなみに空中で地上回避は一応可能なようだ。 実用性はないが...

PopoNana_EscapeBAerial

不明なコマンドなど

2015.10.05 02:25|スマブラX改造 謎
名前登録がされてるだけで(されてないものもあるけど)どういう動作をするのか不明なコマンドが結構あるので。
一応動作不明なイベントはOpenSA2でUnknown Commandsとして検知できるがOpenSA2で認識されないイベントが多すぎる...(どういう動作をするか分かっているイベントも不明なイベント扱いにされることが結構あります)
さらに不明なイベント?(パラメータを増やした11010B00や11010C00)などを識別済みイベントとして判別したり
不明なイベント(0A080000など)でも記述場所によっては検知できなかったりするので
正直、実際に使われている未識別コマンドをOpenSA2だけで全部見つけ出すのは無理ですね...

ちなみに未識別コマンドの中には効果音を出すものやキャラの点滅を操作するもの、BGMを消してしまうものなどがあるようです。
他にも、ほとんどのキャラに使われているのに未識別のものもありますね...
例: 111C1000(Graphic Effect)、14050100(Aesthetic Wind??)、18010300(Character Spef GFX?)

AIScriptpad Commands

2015.10.02 00:00|スマブラX改造 PSA参考
この表は未完成です。
不明な点が多いこともあり、訳がかなり雑になってます。間違っていたら指摘してくださいな。
実際に動作を確認したものはかなり少ないですが、全部確認しなくても十分なAIは作れると思います。
AIScriptpad2.0ではReferenceを見ると英語で説明文が書かれています。
あと、順番が少し雑になってるので注意。

イベント-入力関連-       解説
StickCPのスティック入力を制御する。1で前方、-1で後方 その次の数値は1で上方、-1で下方
AbsStickCPのスティック入力を制御する。1で右、-1で左 その次の数値は1で上方、-1で下方
Buttonボタン入力をする。AやBなどはそのままだが、十字キーなどは不明... "|"を使えば同時押しに
ClearStickスティックの位置を元に戻す?

使用可能な変数はverのみ。ver0からver20位まで使える。22以上は使わない方が無難らしい。

-イベント-関数関連解説
XCooedキャラのX座標を返す関数
YCooedキャラのY座標を返す関数
OPos敵が右にいるとき1、左にいるとき-1
Directionキャラが右向きのとき1、左向きのとき-1
XSpeedキャラの横方向へのスピード
YSpeedキャラの縦方向へのスピード
OXCoord敵のX座標
OYCoord敵のY座標
NumJumpsキャラのジャンプ回数
AIPDFloat1敵いる距離が遠い時?
AIPDFloat2敵のいる距離?
DistToOEdge崖の近くに敵がいるか?
LevelValueキャラのCPレベル。チュートリアルにある値と同じ?                             
ObjXCoord飛び道具のX座標?
ObjYCoord飛び道具のY座標?
OXSpeed敵の横方向へのスピード?
OYSpeed敵の縦方向へのスピード?
ObjXSpeed飛び道具の横方向へのスピード?
ObjYSpeed飛び道具の縦方向へのスピード?
EstOPassTimeX敵の予測X座標?
EstOPassTimeY敵の予測Y座標?
EstOXCoord敵の予測X座標?
EstOYCoord敵の予測Y座標?
Damageキャラがダメージを受けたか?
ODamage敵がダメージを受けたか?
ODirection敵の向き?
ONumJumps敵のジャンプ回数?
HurtboxSizeキャラの当たり判定?
OHurtboxSize敵の当たり判定?
DistBackEdge敵が崖つかまりしているか?
BBoundaryすぐ下にバーストラインがあるか?
TBoundaryすぐ上にバーストラインがあるか?
LBoundaryすぐ左にバーストラインがあるか?
RBoundaryすぐ右にバーストラインがあるか?
DistTop立てる場所までの距離?

イベント-分岐関連-      解説
ifIfブロックを立ち上げる。条件に合うとき中のものを実行する。
”&&”や"||"を使うとorやandを使わなくていいのでorやandは必要なし?
ifnotifブロックを立ち上げる。条件に合わないとき中のものを実行する。
elseIfブロックの条件に合わない時立ち上げる。elseのすぐ後にifを立ち上げる場合はelifを使う
elifIfブロックの条件に合わない時に条件をつけてIfブロックを立ち上げる
endifIfブロックを閉じる
orIfの条件が合わなかった場合もう一つ条件を加え、条件に合う場合ifの中身を実行
ornotIfの条件が合わなかった場合もう一つ条件を加え、条件に合わない場合ifの中身を実行
andIfの条件が合った場合もう一つ条件を加え、条件に合う場合ifの中身を実行
andnotIfの条件が合った場合もう一つ条件を加え、条件に合わない場合ifの中身を実行













イベント-ループ、ルーチン関連-解説
labelループなどで使うlabelをセットする
Return1フレーム後、システムをlabelから実行再開する
Finishループ、ルーチンの実行をやめる
Seekループをやめ、次のlabelから実行を再開する
Jump1フレーム待たずに即座に前回Seekされたラベルにジャンプする   
Goto次のラベルに即座にジャンプし、その後呼び出した位置に戻る

その他と?のイベント解説
Rndランダムに値を出す
Zero0
One1
SetVar値をセットする
Add値を加算
Sub値を減算
Mul値を乗算
Div値を除算
SetVecベクトル値をセットする
AddVectorベクトル値を加算
SubVectorベクトル値を減算
MulVector ベクトル値を乗算
DivVectorベクトル値を除算
Randomランダムに値を出す
SetFrameフレームをセットする
Callもう一つのモジュールを呼び出す?                                                        
Cmd20不明
SetTimeout実行の一時停止?
EdgeCheck崖へに捕まれるか?
Cmd21キャラが動いているか?
GetShieldRemainシールドを出して大丈夫か?
GetRndPointOnStageランダムに値を出す?
AtkDiceRollランダムで次の行動を決める?
Breakpoint区切り点?
Cmd2F攻撃判定と結ぶ?
Cmd30動きながら攻撃判定と結ぶ?
NumFramesフレーム数?
Func12不明
Func13不明
Func20不明
Func21不明
Func22不明
Func23不明
Func24不明

-Requirements-説明
GT比較元が比較対象より大きいときにtrueを返す
LT比較元が比較対象より小さいときにtrueを返す
GE比較元が比較対象以上のときにtrueを返す
LE比較元が比較対象以下のときにtrueを返す
XDistLEX座標が比較対象以下のときにtrueを返す?
ODistLE敵の比較元が比較対象以下のときにtrueを返す?
FrameGE経過フレームが比較対象以上のときにtrueを返す?
Idlingキャラが何もしていないときにtrueを返す
Dashingキャラがダッシュ中ならtrueを返す
InAir空中にいるときtrueを返す
CanThrow投げられるものがあるときtrueを返す
CalledAsルーチンを返せるときtrueを返す
OutOfStageステージの外にいるときtrueを返す
InAirOnSaved空中でステージの中にいるときtrueを返す?
Act1EOr1D不明
CharDistLEキャラが一定の範囲内ときtrueを返す?
DiceRollResultAtkDiceRollの結果が指定されたIDならtrueを返す?                       
Falling落下中の時trueを返す
Invincibleキャラが無敵状態の時trueを返す
Grabbing敵をつかんでいる時trueを返す?
ModeRelated不明
NormCharDistLEキャラのステートが通常のときtrueを返す
OAttacking敵が攻撃を出しているときtrueを返す
NoOneHanging何も持っていないときtrueを返す
OCol敵が攻撃していないときtrueを返す
OWiring敵が崖つかまりをしているときtrueを返す
OInAir敵が空中にいるときtrueを返す
IsCaughtキャラがつかまれているときtrueを返す
NoOpponent敵がいないときtrueを返す
IsCharOfキャラの引数が指定されたものであればtrueを返す
OIsCharOf 敵の引数が指定されたものであればtrueを返す
True常にtrueを返す
MeteoChance敵が復活したか?
ev1未使用? 不明
OInHigh敵が高い位置にいるか
ev2未使用? 不明
ev3不明
fXFar敵が遠距離にいるか
fXMiddle敵が中距離にいるか
fXClose敵が近距離にいるか
Back敵が後ろにいるか
Far遠くにいるか
SamePlaneいる位置が敵と同じ高さか
Lying地上で倒れているか
CanJumpジャンプできるか
MarioCape反転属性の攻撃を受けて向きが変わったか
FullCharge 必殺技のチャージが最大状態か
PokemonTiredポケモンがつかれた状態か
DiddyClingディディーの横必殺技で掴まれたか
Gliding滑空常態か
AccelFallキャラの落下スピードが最大か
rInAirキャラが空中にいるか
fVeryClose敵がすぐ近くにいるか
XVeryClose敵とのX座標が近い値か
JumpRecoverRangeジャンプが回復したか
ev15未使用? 不明
PeachHoverピーチが空中でホバー状態か
VeryCloseOrBack敵がすぐ近くかまたは背後にいるか
Not1_4_9_12And2敵が遠く高い位置にいるか
SnakeUpB スネークが上必殺技を使ったか
OBlown敵が吹っ飛んだか
OSFall敵がしりもち落下中か
ev1Cアイスクライマーが妥当なことをしているか?
DiddyBananaディディーがバナナを2つ出していないか


AIPDで使うもの
Attack dice roll tableではslotが使われている。0から22位まであり、それぞれのslotの中から行動をランダムで行う?
どのような条件でどこが動くかは他のアクションから来ている?

Requirementsは上のものと同じ。

RoutinesID解説
Nothing0なにもしない
Unk1010不明
Unk2020不明
Unk2121不明
Unk2222不明
Unk2323不明
Unk2424不明
Unk3030不明
Unk3131不明
Unk3232不明
Unk3333不明
WalkUp40敵のいる方に向かって歩く
Hop50ジャンプ
SHopTowards51敵のいる方にジャンプ
FHopTowards52前にジャンプ
SHopNeutral53ジャンプ
DJNeutral 54ダッシュジャンプ?
FHopAway 55後ろにジャンプ
SHopAway 56敵のいる方と逆方向にジャンプ                                         
SHopDJ57敵のいる方にダッシュジャンプ
FHopDJ58敵のいる方にダッシュジャンプ
DashUp60敵のいる方にダッシュ
RollF71前方回避
RollB72後方回避
GetBehind80避ける?
Unk10101010不明
Unk10201020不明
Unk10301030不明
Unk10401040不明
Unk10501050不明
Unk10601060不明
Unk10701070不明
Unk10711071不明
Unk10721072不明
Unk10731073不明
Unk10741074不明
Unk10751075不明
Unk10761076不明
Unk10771077不明
Unk10781078不明
Unk10801080不明
Unk10901090不明
BlockRecovery10A0敵の追撃に警戒する?
Unk10D010D0不明
InterceptCliff10F0崖つかまりを妨害する?
Unk11201120不明
Unk11301130不明
Unk11401140不明
Unk11501150不明
Unk11601160不明
Unk11701170不明
JumpOnStage2010地上ジャンプ
Unk20202020不明
Unk20302030不明
EdgeRecover2040崖つかまり?
OnGotDamaged2050ダメージを受ける?
Unk30103010不明
Unk30203020不明
Unk30303030不明
Unk30403040不明
Unk30803080不明
Unk30903090不明
Spotdodge30A0その場回避?
DodgeWhenAttacked30B0攻撃を避ける?
AirDodgeWhenAttacked30D0空中で攻撃を避ける?(空中回避?)
Reflect30E0反射?
Jab1236031弱攻撃
FTilt6032横強攻撃
DTilt6033上強攻撃
UTilt6034下強攻撃
FSmash6035横スマッシュ攻撃
USmash6036上スマッシュ攻撃
DSmash6037下スマッシュ攻撃
NSpecial6038通常必殺技
SSpecial6039横必殺技
USpecial603A上必殺技
DSpecial603B下必殺技
Grub603C掴み
Noting603Dなにもしない?
NAir6041空中ニュートラル攻撃
FAir6042空中前攻撃
BAir6043空中後ろ攻撃
UAir6044空中上攻撃
DAir6045空中下攻撃
NSpecialAir6046空中通常必殺技
SSpecialAir6047空中横必殺技
USpecialAir6048空中上必殺技
DSpecialAir6049空中下必殺技

プロフィール

ICLPX

Author:ICLPX
主にスマブラXの改造をやっています。
更新ペースはその時によってバラバラです。
質問などがあれば気軽に書き込んでください。
かなり過去に書いた記事も更新することがあります。

最新記事

最新コメント

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

この人とブロともになる

QRコード

QR