★☆ キャラ制作奮闘記 ☆★
(2002.03.22)
CNS ってなんだろうなぁ
さて、CNSである。
いきなりで「さて」もへったくれもないのだけれど、CNSなのである。(笑)
結構、様々なサイトで解説されているので、細かなステートコントローラの記述方法・効果等の具体的な記述方法はそちらに譲るとして、ここではCNSファイルの構造・・・というか、概念についてふれてみたいと思うわけ。
さて。
キャラを作成するうえで、決して避けては通れず、かつまたキャラの動きを司る中枢ともいえる部分。
それがCNSなのだ。
一口にCNSといっても、その構造は大きくは2つに分けて考えることが出来る。
「キャラクターの基本設定を行っている部分(コンスタント部)」と、「キャラクターの動作を設定してある部分(ステート定義部)」である。
コンスタント部では何を設定してあるかというと、
・ライフや攻撃力、防御力などのデータ設定
・キャラ表示の際のスケール設定
・移動やジャンプの際の速度設定
などである。
若干話が前後するが、各技の攻撃力は、それぞれを定義してあるステート定義部で指定してあるが、それはあくまでもコンスタント部で攻撃力を「100」と設定してある場合の値である。
例えば、立小パンチの攻撃力を、ステート定義部で「30」と設定していたとしよう。
コンスタント部で攻撃力を「50」とした場合、立小パンチの実際の攻撃力は「30」×「50」%=「15」になる。
同様に、コンスタント部の攻撃力を「200」とした場合、立小パンチの攻撃力は「60」となる。
要するに、コンスタント部で設定した値はCNS全体に影響を与えるのだ、と理解して欲しい。
ステート定義部では、実際のキャラの動きを定義してある。
ただ、この部位もさらに大きく2つ(3つ、という方が正確だけど)に分けて考えることができる。
まず「通常の動作を設定してある部分」。
これはコマンド入力などにより制御が移され実行される部分である。
そしてもう一つは「常に実行される動作を定義する部分」である。
これはプレイヤーの操作に関係なく、常に実行するべき処理を記述する部分である。
いずれの場合も、キャラの動作を司る「ステートコントローラ」と、それを実行するための条件を意味する「トリガー」との組み合わせで記述することになる。
書き方の概念としては、おおよそ次の通り。
まず、「Statedef」を宣言し、これからなんの動作を定義するのかを明らかにする。
次に、その動作の中でどんな動きをさせるのか、必要となるステートコントローラを記述してやる。
また、併せてそのステートコントローラが実行される条件としてトリガーを記述してやる。
どのステートコントローラがどんな効果を持っているのか、詳細に知りたければ、mugenに付属するドキュメントの「sctrl.txt」を読んでみると良いだろう。
また、どんな条件がトリガーとして使用できるのかは、同じく「Trigger.txt」を読むといい。
いずれも英文だが、極端に難しい英語ではないので、中高生レベルの英語力があれば、ほぼ理解できるだろう。
なお、キャラクターの基本的な動き(例えば歩く、走る、ジャンプなど)は、あらかじめ「common1.cns」にて定義されており、基本的にはわざわざ記述する必要はない。
ただ、標準の動きとはことなる動きをさせたい場合は、自分で定義し直す必要があるだろう。
ちなみに「常に実行される動作を定義する部分」では何を記述すればよいのか、であるが、実は無理に使用する必要はない。
典型的な例としては、攻撃を喰らったときの「呻き声」を鳴らすステートを記述することである。
攻撃喰らい時のステートに手を入れても実現できるが、これは common1.cns に含まれる動きなのだ。
無理に common1.cns をさわらずとも(総じて common1.cns に定義されているステートはややこしいことが多い)、「常に実行〜」にて定義すれば実現可能なので、そちらをお勧めする。
概略だけ説明すると、トリガーとして「攻撃喰らいモーション時」を設定し、Playsnd コントローラを使うのだ。
具体的な記述は、うめき声を設定してあるキャラのCNSを覗いてみるといいだろう。
簡単だけれども、CNS の概念としては以上だ。
これらを理解した上で、ステートコントローラやトリガーの記述方法を見てみると良いのでは・・・。
というところで、今回はこれにて。