忍者ブログ


[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



[ 2024/04/24 09:00 | ]
ヒステリシス
PGする上で役に立つ知識、知っておきたい概念というものがあります。
今回は、ヒステリシスをご紹介します(テレビショッピング風に)


僕がこの言葉を知ったのはひでさんの旧ブログ、CHPのときでした。
なんとなく病的で難しそうな言葉、ヒステリシスですが、別の言葉で呼ばれていたり無意識のうちに使っていたり、とくに使うのが困難というものではありません。



ところで、ヒステリシスってなんか「ヒステリー」に似てますよね。
だから病的に聞こえるのですけど。


まさに「ヒステリー」が語源なのではないかと思います。
「ヒステリー」は本来精神病の一種で、この病名がつけられた背景には、当時この病気は女性だけが持つものだと思われていたために「子宮」という意味の言葉が使われた、というのがあります。現代では単に短気だという意味で使われるほうが多いので男女関係ないんですが。


このヒステリーというのは、一度スイッチが入っちゃうと突然興奮状態になり、その状態がしばらく続き、終わるときには急激に気分が落ち着き興奮状態が現れなくなる、というものです。
この特徴を持った状態制御の方法をヒステリシスと呼び、一定の状態を安定して長く維持するために使われます。




さてそんなところで、ひでさんの旧ブログを読んだほうが早いのですが。


CHEの熱量制御にヒステリシスの概念を持ち込んでみましょう。
まず設定しなければいけないのは、どの状態を維持するために判断するか、ということと、双方向の状態変更の際の閾値(いきち)です。


もっとも頻繁に使われるのは、「射撃/非射撃状態」を維持するために、「熱量」を「2つの閾値で」判断することです。
言い換えれば、熱量について、射撃状態から非射撃状態に移行するときの閾値と、非射撃状態から射撃状態に移行するときの閾値を与えます。




グレネード以外は射撃することによって発熱しますので、熱量を一定範囲に抑えつつ射撃の状態を長く維持することが目的となります。
では実際に、二つの閾値を与えてみましょう。


『熱量60%以上でなければ射撃開始 / 熱量80%以上なら射撃中止』


こんな感じです。
さて、ここで設定した○○%というのは、一体何を意味するのでしょうか?



まず射撃時間は、80%-60%=20%分の熱量がたまるまで、となります。
射撃の間に自然放熱もありますので、その分を加えた熱量を考えると最大連射数が出てきます。
特に熱攻めをする場合は、少しずつ撃ち込むより一気に撃ちこんだ方が確実にオーバーヒートを狙えますので、二つの閾値は離れていたほうが良い場合が多いです。



次に、射撃の発熱が放熱よりも早い場合、下限の60%というのは、最低でもこの熱量を維持する、という意味になります。
低ければ低いほどいい熱量をなぜ維持するのか?
これは、敵の攻撃を回避するために射撃ができなかったり、そもそも射撃する必要がなくなったりなど、そういった強制的な非射撃時間の間に、自然放熱を利用して排出できてしまうからです。
熱量0%のまま回避一辺倒では、ちょっと勿体ない。
旋回してる間にも自然放熱が利用できるのに……ということです。



では、上限の80%というのはどうでしょうか。
これは自機の発射熱によって上がりうる上限ということになります。
ということは、もしここに被弾したら……


各OKEには耐熱キャパシティというものが設定されています。
が、これは熱ヒステリシスによって「最低維持熱量+発射耐熱量+被弾耐熱量」に分けられます。
したがって実際に被弾に対して許容できる熱量は、100-熱ヒステリシスの上限となります。
上記の例では、被弾耐熱量はわずか20%に過ぎません。
ということは、耐熱キャパシティの20%を超える熱量の攻撃を受けると、オーバーヒートする可能性が高い、ということが言えそうです。




というわけでできることなら熱ヒステリシスの上限は低いほうが良い、つまり被弾耐熱量は大きい方が良いのですが。
最低維持熱量、発射耐熱量、被弾耐熱量、このどれもが大きい方が良いという結論になってしまいます。
バランスを考えながら、非射撃時間の間に放熱できる熱量、最大連射数、喰らってもオーバーヒートしない武装、これらを削っていく、あるいはどれかに重点を置く、といった設定をしていくことになります。




これらに加え、冷却装置の起動条件があります。
冷却装置の1回の放熱量1210pを有効に使うには、これより高い熱量で設定する必要があります。
熱ヒステリシス上限との差も重要で、これより小さい熱量で冷却を使用すると攻撃に歯止めが利かなくなり冷却装置を使い切ってしまいます。


また条件が大きすぎると、被弾耐熱量(=上記熱ヒステリシスの上限)まで熱量が上がっているときに、2発目の被弾でオーバーヒートする可能性が高くなったり、逆になかなか冷却を使わないで相手にペースを明け渡すという展開もありえます。




まぁここまで考えると埒が明かないので、とりあえず、被弾耐熱量の少し上、ビーム2,3発喰らったら起動するようにするといいのかな。
自機の発射熱でごくたまに起動するような値にして、被弾しなくても試合の中で使い切るという手もありますし。
チャンス(相手の被弾時とか)にはヒステリシスを無視して射撃し、強制的に冷却装置を使うことも忘れずに。






さて、補足です。
熱ヒステリシスというのは、必ずしも必要なものではありません。


たとえば、回避が困難な機体、レールバッドを考えてみると、常に攻撃するか被弾するかという状態ですので、最低維持熱量、発射耐熱量といった下位の区分は必要なさそうな気がします。


熱ヒステリシスはあくまで、回避に専念したときに被弾熱量<自然放熱量とすることが可能な場合にのみ適用できるのではないかと思っています。
もし被弾熱量のほうが多ければ、遅かれ早かれ冷却を使わざるを得ないので、とっとと反撃しろっということになります。反撃したほうが熱的に不利な場合もままありますけれど。





ここまで読んだ方はお分かりになると思いますが、このヒステリシスという概念、ひでさんが持ち込む以前には別の言葉で呼ばれていました。


ダブルロックです。
2つの閾値によって一定の状態を制御するというのは、まさにヒステリシスそのものです。
したがって、熱量以外にも距離、旋回、あとは…んーなんだろーな、すでにひでさんが提示したものしか思いつかないですが、そういったものにもヒステリシスは適用可能な概念です。

※ループを使うかどうかという実装上の差異はあれど、やろうとしてることは同じです




ただちょっと注意してほしいのは、
今作では射撃と通常移動、旋回、ジャンプが両立しますので、
射撃以外の動作を実行するルーチンに入る=射撃を中断する、
とは言い切れない、ということです。


したがって射撃中止チップなどで明示的に射撃を中断するか、
これまでどおり急速移動などの射撃が中断される動作に流すか、
あるいは最低維持熱量だけを設定して、発射数を変えることで発射熱量の上限を暗黙的に規定するか、というような流れになります。





読み返すのも面倒だ。

拍手[4回]

PR



[ 2010/11/15 09:52 | Comments(2) | 未選択 ]
1. posted by kitakan  2010/11/15 18:21
たぶん、意図せずアンカータグが閉じられていません
「ひでさんの旧ブログを読んだほうが…」からのところです
2. posted by ライ  2010/11/15 20:47
駄々漏れでした。手打ちだとこうなる。
ご指摘ありがとうございますた。

コメントを投稿する






<< 弾道がおかしい  |  ホーム  |  いきなり小CPU大会参加 >>