DHQの雑記とか

mugen関連でいろいろと

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

randomを使った行動分岐について

mugenのrandomはひとつひとつが別の値を返しますが、
どうも知られていないようなので不具合事例を上げて説明。


まず、「randomはひとつひとつが別の値を返す」ことの説明。
具体例を上げると
trigger1 = random <= 500 && random > 500
こんなトリガーでも、1つ目のrandomでは300、2つ目のrandomでは600が代入され、
成立することがあります。


そこで不具合の事例ですが、例えば
190番ステートのイントロで見かけるステコン群に

[state 190]
type = changestate
trigger1 = random < 333
value = 191

[state 190]
type = changestate
trigger1 = random = [333,666]
value = 192

[state 190]
type = changestate
trigger1 = random > 666
value = 193

こんなものがあります。
ここで、191番ステートへのchangestateにあるrandomに750、
192番ステートへのchangestateにあるrandomに250が入ると、
このフレームではいずれのステートへのchangestateも行われません。
理論上、イントロに飛ぶまでに数10Fかかることもありえます。
実用上は、数回試行が行われれば191番あるいは192番へ飛ぶわけですが、
例えばhelperと同期をかける必要があるなど、フレーム単位での調整が必要な場合、
タイミングがずれて異常な挙動を示すことがあります。
したがって、上述のステコン群の改善例としては

[state 190]
type = changestate
trigger1 = random < 333
value = 191

[state 190]
type = changestate
trigger1 = random = [333,666]
value = 192

[state 190]
type = changestate
trigger1 = 1
value = 193

こんなものが上げられます。191番、192番へのchangestateが行われなかった場合、
確実に193番ステートに飛ぶので、190番ステートにいるフレームの長さは必ず毎回同じ長さになります。
ちなみに2番目の192番ステートへのchangestateにあるrandomは、random <= 333にしても構いません。

なお、AI用のchangestateのように、必ずしも1Fで分岐を成立させなくてもいいケースでは、
上記のようなchangestate条件の緩和は必要ありません。

  1. 2012/11/17(土) 15:03:41|
  2. キャラ製作の豆知識
  3. | トラックバック:0
  4. | コメント:0
<<プレイヤー操作動画上げてみました その30 | ホーム | エフェクト射出用helperについて>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dhq.blog137.fc2.com/tb.php/77-1f1402b0
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

DHQ

Author:DHQ

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
お知らせ (2)
mugenの仕様 (16)
mugenのAI (3)
キャラ製作の豆知識 (31)
動画について (32)

FC2カウンター

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

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