『RigidChips』は、剛体であるChipsの挙動をシミュレートするのが目的です。『RigidChips』は、Chipsとして読み込んだテキストファイルの内容を元に、Chipsを組み立てて機能させます。
Chipsとなるテキストファイルは、Windowsに添付しているアプリケーション『メモ帳』(notepad.exe)にて作成することが出来ます。テキスト(英数字)で構成するため一見難しそうですが、一旦理解してしまえば、テキストならではのコピーや貼り付けを簡単に行うことで、作りたいChipsをすぐに作れることに気付くでしょう。
テキストファイルは、文字コードをASCII、改行コードをCR+LFまたはLFとする必要があります。ただし文字コードは、Shift_JISやEUC-JPで構いません(ASCIIを含むため)。改行コードをCRにすると『RigidChips』が作動を停止しますので注意してください。Windowsの『メモ帳』を使用する場合、文字コードとして「ANSI」を選んで保存してください(実際にはShift_JISで保存されます)。
Chipsを作成する前に、Chipsがどういう仕組みで動くのか、大まかながら理解しておきましょう。Chipsの仕組みを理解する上では、変数というものを理解することが重要です。基本的には、変数と各Chipの動きを結び付けておき、キーで変数を操作することで、結果的にChipsを動かす仕組みになっています。
Chipsのもととなるテキストファイルは、大きく分けて「Val」「Key」「Body」「Script」という4つのブロックから構成されます。各ブロック名の後に中括弧 { } があり、その中にそれぞれの内容を書いていきます。
ちなみに、//
と記すと、そこから行末までがコメントとして認識されます。つまり、Chipsとして読み込まれるときには無視されます。作成時のメモや、配布したときの伝達事項などを書き記しておくと良いでしょう。
コメント以外は、全てASCII文字(半角英数字)で記述する必要があります。日本語入力機能(IME)を無効にしてから入力しましょう。
//MyChips
Val {
//ここで変数を定義する
}
Key {
//ここでキー入力を定義する
}
Body {
//ここでChipの構造を定義する
}
Script {
//ここで自動制御を定義する
}
Valブロックでは、変数を設定します。ここでは、クルマを作ることを考えてみましょう。クルマには、進むための変数と、止まるための変数、曲がるための変数が必要になると思います。まずは、この3つの変数を設定してみましょう。
それぞれの変数に対して、属性を設定できます。設定できる属性は以下の通りです。
まずは、変数の名前を決めます。変数の名前は、半角英数字であれば好きに付けられます。判りやすいように、進む変数を「Engine」、止まる変数を「Brake」、曲がる変数を「Handle」として扱うことにしましょう。変数の名前は、KeyブロックやBodyブロック、Scriptブロックなどで変数を扱うときに必要となります。
変数の名前に続けて、括弧の中に属性を書き記します。それぞれの属性はカンマで区切り、属性の名前にイコールをつけて属性の値を指定します。大文字と小文字は同一視されます。途中に空白やタブがあっても、動作に影響はありません。編集のしやすさを考えて、上手く使い分けましょう。
変数の名前(属性の名前=属性の値, 属性の名前=属性の値, …)
以下の記述例では、「Engine」「Brake」「Handle」のほか、ハンドルブレーキの力として「HBrake」も設定しています。また、「Engine」にある「max」属性の値を「3500」としています。爆速を目指してこれを「350000」など巨大な数値にすると、大抵の場合はChipsを暴れ馬と化させるだけです。まずは低い数値を設定しておきましょう。
Val {
Engine(default=0, min=-3500, max=3500, step=2500)
Brake (default=0, min=0, max=80, step=80)
Handle(default=0, min=-30, max=30, step=2)
HBrake(default=0, min=0, max=100, step=100)
}
Keyブロックでは、押されたキーの番号に従って、どの変数にどれくらい数値を与えるのか設定します。例えばクルマの場合、前進、後退、停止、左ハンドル、右ハンドルといった操作が必要になります。操作に必要なキーと変数を結び付けるのが、Keyブロックの役目です。
キーの番号は『RigidChips』のキーコンフィグによって、パソコンのキーと関連付けられます。キーの番号と実際のキーが初期状態でどう対応しているかは、当サイトのページ「『RigidChips』の操作説明」にある項目「Chipsの操作」を参照してください。
キーの番号は、0番から16番まで設定できますが、操作が複雑にならないよう、10番以上は使わないのが一般的です。
Keyブロックにおいて、それぞれの変数に指定できる属性は「step」だけです。
キーの番号に続けて、コロンを記述し、その後に変数の名前、そして括弧の中に属性を記述します。変数の名前と属性ごとにカンマで区切れば、1つのキー入力で複数の力を入力することも出来ます。
キー番号:変数の名前(属性の名前=属性の値)
以下の記述例では、0番で前進、1番で後退、2番で左ハンドル、3番で右ハンドル、7番でブレーキとハンドルブレーキ、8番でハンドルブレーキを掛けるように指定しています。「step」属性の数値を高くすれば、キーを一瞬押しただけで機敏な反応をするChipsを作れます。良い操作感覚を得られるよう、数値を調整しましょう。
Key {
0:Engine(step=-500)
1:Engine(step=500)
2:Handle(step=-0.5)
3:Handle(step=0.5)
7:Brake (step=30), HBrake(step=30)
8:HBrake(step=20)
}
Bodyブロックでは、実際にChipsの構造を設定します。Chipsは、赤い点のついたCoreチップから次々にチップを繋いでいくことで構成します。チップには、以下の種類があります。
使用するチップには、それぞれ以下の属性を設定できます。
では、実際にChipsの組み立てを記述してみましょう。Coreチップの赤い点が付いている方向が「N」、その反対側が「S」、左側が「W」、右側が「E」となります。Coreチップ以外は全て、繋げる方向を指定する必要があります。
ちなみにチップの接続角度が何度であっても、チップを接続する方向は、常にチップに一定です。また、1つのチップの同じ方向に何枚ものチップを接続できます。
繋げる方向に続けてコロン(:)、その次にチップの種類、そしてその後の括弧に属性を記します。そのチップに繋がるチップは、中括弧 { } へ入れ子式に記述していきます。
接続方向:チップの種類(属性の名前=属性の値) { … }
以下の記述例では、Wheelチップのbrake属性に数値ではなく変数「Brake」、power属性に変数「Engine」を指定しています。これにより、キー入力などによって入力値が変化する仕組みを実現しています。つまり、キー入力が挙動に反映されるわけです。
また、E方向にあるWheelに設定したpower属性の値を、変数「Engine」にマイナスをつけた「-Engine」としていることにも注意してみましょう。マイナスをつけて回転方向を逆にしないと、Chipsが前進しないためです。
Body {
Core(){
N:Chip(){
N:Rudder(angle=Handle){
W:Frame(){
W:Wheel(angle=90, brake=Brake){
}
}
E:Frame(){
E:Wheel(angle=90, brake=Brake){
}
}
}
}
S:Chip(){
W:Frame(){
W:Wheel(angle=90, power=Engine, brake=HBrake){
}
}
E:Frame(){
E:Wheel(angle=90, power=-Engine, brake=HBrake){
}
}
}
}
}
以上の記述により、以下のChipsが組み立てられます。『RigidChips』に同梱されている「Basic.txt」と同じです。
割愛。