スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

新mugenでの不具合の理由が判明

推測していた通りproj***boundの限界値が変更されていたようですね
調査したところ限界値は
256*256*256*51+256*256*51+256*51+51=51*16843009=858993459
のようですね

256*256*256*51+256*256*51+256*の辺りで
法則性に気付いて試してみたらドンピシャだった

ちなみに二進数では
0011 0011 0011 0011 0011 0011 0011 0011
となります

projheightbound,projedgebound,projstageboundで限界が違うかどうかまでは調査してないです
ただprojedgeboundの限界は858993459で間違いないと思う(projedgeboundにステージやアドオンの影響がなければ)


この調査に当たってCNS WIKI見たんですけど
projheightboundとprojstageboundって速度が無ければ関係ないんですね
じゃあ省略してもいいような・・・
速度あるProj撃たずにでかい判定のProj出すことのほうが多いですし
スポンサーサイト

新mugen

新mugenのほうをちょっと勉強してました
新mugen専用キャラとかいるし新mugenとwinmugenの互換について
知っておいて損はないと思った

新mugen触って思ったこと
・エラメが豊富になってる。winmugenじゃエラメが出ないところでも出る
例えばCEIL() RESULT CLAMPED TO INT_MAXとか
PARENT IN RETARGETED TRIGGER HAS BEEN DESTROYEDとか

上のほうはCeil()の計算結果が2147483647を超えたってことじゃないかな
下のほうは・・・もしかして混線のことを咎められてる?

・なんか細かな仕様が違う
[State 120,下準備]
Type=ChangeState
Trigger1=!NumProjID(5900)
Value=5900
Persistent=256
こんな感じの記述があって
Statedef 5900でID=5900のProjをフラグ代わりに出してるんだが
新mugenのほうだと2500ループを起こして死ぬ

推測
1.ProjHeightBound,ProjEdgeBound,ProjStageBoundの仕様が変わっていて、
 オーバーフローを起こしている
2.フレームの終わりにProjを出すようになった等の理由で
 出したProjをそのフレーム中に感知できないようになった


また、全画面用の攻撃判定が新mugenだと機能しなくなっていて
二桁減らすと普通に動いてくれた
もしかして限界値が小さくなってるとか?

・Condが有能
 製作者なら一度はIfElse(PlayerIDExist(A),PlayerID(A),****,0)
 という記述をして、IfElseの不便さを体験したのではないだろうか
 (多分真のほうも偽のほうも読むためエラメが出るのだと思う)

 Cond(PlayerIDExist(A),PlayerID(A),****,0)ならエラメが出ることは無い

 ただ試合開始前に一度全部の記述をチェックされるのか
 Cond(0,sysvar(0):=0,0)
 という記述はエラー落ちした

・Condによる変数いじり
[State -1,変数いじり]
Type=Null
Trigger1=1||Var(0):=(GameTime%50<5)*Enemy,LifeMax-(GameTime%50=[5,9])*Enemy,LifeMax+(GameTime%50=[10,14])-(GameTime%50=[15,19])+(GameTime%50=[20,24])*2147483647-(GameTime%50=[25,29])*2147483648+(GameTime%50=[30,34])*(Enemy,LifeMax*(Random%3-1)+Random%3-1)+(GameTime%50=[35,39])*Random%10**(Random%2+1)+(GameTime%50=[40,44])*Random*Random*Random+(GameTime%50>44)*Random*Random
Trigger1=1||Enemy,Cond(Var(0):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(1):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)+Enemy,Cond(Var(2):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(3):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)+(略)+Enemy,Cond(Var(58):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),Var(59):=Enemy(Enemy,Name!="博麗 霊夢"),Var(0),e)
IgnoreHitPause=1

有名な話だがcondで敵の変数がいじれる
fvar(40)を使えばsysvar(0)もいじれる
sysvar(1)~sysvar(4)とsysfvar(0)~sysfvar(4)しか信頼できない

多分親変更なしでヘルパーの変数弄れると思うので軽くなってありがたいのですが
それにしても強力すぎる・・・搭載も簡単だし

・文字数制限がない
 好きなだけ一行に記述を詰め込むことができます
 ただ演算子があまりに多いとエラー落ちする模様
 1+1+1+1+1+・・・とかやると260行かないぐらいで落ちる
検索フォーム
リンク
訪問者数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。