2007年07月04日

BHAVの概念について (by: たなかり)

BHAVというと何の事だかと思われる方も多いでしょうから、先ずはBHAVの概念と基本構成について簡単に説明をしていきます。

  1. BHAVって何?

    • Sims2は全ての動きを統括する総合プログラムと、オブジェクトなどの動作を個々に指定しているプログラムとがあり、後者は前者の制御下で管理、監視されています。
    • 分かり易くいうと、Sims2の総合プログラムは個別のプログラムに言語を提供しているだけにすぎず、ほぼ全ての動作を個々のプログラム群が賄っているのです。
    • したがって、情熱さえあればかなり自由度の高いカスタマイズが可能です。
    • この「個々の動きを設定しているプログラム」をBHAVと呼びます。



  2. BHAVの概念について

    • BHAVには大きく分けて三つの種類があります。
      1. グローバルBHAV   (Instance:0x0000〜0x0FFF)
      2. セミグローバルBHAV(Instance:0x2000〜0x2FFF)
      3. ローカルBHAV    (Instance:0x1000〜0x1FFF)

    • グローバルBHAVとは全てのBHAVから参照が可能で、その機能を利用できる物を言います。例えば、シム達の基本的な反射や行動のトリガーなどがこれにあたります。
    • オブジェクト等は何かしらのグループに属しており、そのグループ単位をセミグローバルといいます。セミグローバルBHAVは、そのグループに属する全てのBHAVから参照が可能で、機能の利用ができます。例えばベッドのグループに属する物は、クリックした際の行動(寝る等)などをセミグローバルからの参照で割り当てができます。
    • 最後にローカルについてですが、これは対象のオブジェクト等が設置されている区画でのみ効力を表します。したがって、最も安全に、かつ自由度を持たせたプログラミングを行える事になります。グローバルやセミグローバルについては、プログラミングを間違えると、最悪はセーブデータ全体を破壊します。しかし、ローカルBHAVの場合は設置された区画でのみの効力発揮になりますから、テストを行った区画のみの破壊で済みます。
    • 慣れない内にグローバルやセミグローバルを改変したHackの作成を行うのは大変なリスクを伴いますので、ローカルBHAVをいくつも作成していき、慣れてきたらセミグローバルやグローバルを扱うように心がけてください。



  3. BHAVの構成について

    • 個々のファイルに納められている物全てが補完しあってはいますが、主にプログラムを構成しているものを簡単に説明します。
      1. Bhaviour Function(BHAV):これがプログラムの集合体になります。小さなサブルーチン群が納められており、個々の機能で全体を構成する形がとられています。プログラムの癖的な物はVisualBasicよりもCに近い感じです。
      2. Bhaviour Constant(BCON):定数の定義を行います。定義された定数はBHAVからインスタンスNo.とアドレスを用いて呼び出されます。
      3. Pie Menu Strings(TTAs):パイメニューに表示される文字列を定義します。パイメニューというのは、例えば自シムをクリックした際に表示されるメニューの事です。
      4. Pie Menu Functions(TTAB):個々のパイメニューが使用するBHAVはどれで、誰がどういう状態の時にメニューを利用できるかといったものを定義します。自発行動・指示行動の制御は主にここでします。
      5. Object Functions(OBJf):オブジェクトが定義された状態になったときに自動実行されるBHAVを定義します。

      他にもTextListがありますが、これについてはインスタンスによって用途が異なり、種類も多種に渡るため説明は割愛します。

    • 動作におけるBHAVの分類と種類について

      1. 動作を行わせる際にもBHAVは2種類に分類されます。ActionBhavとGuardianBhavの2種類で、PieMenuFunctionsにて設定をします。
      2. この2つは動作に大きく関係しており「Action」は動作そのものを設定するBHAV、「Guardian」はActionを起こす際にはどんな条件が必要か?というものです。
      3. シムに指示を出す際、シム自身をクリックすると「遊ぶ」とかのメニューが表示されますが、あれを「PieMenu(パイメニュー)」といい、「Guardian」に設定された条件がクリアされていないと対象のPieMenuを表示しないようにするといった使い方が一般的です。
posted by staff@sims2communityJP at 18:58| Comment(0) | 解説 [制作]hack, Bhav | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。