データネットワーク
概要
データネットワークは、多数のデバイスの作成、維持、管理を可能にします。データネットワークを管理するツールとしては、ユニバーサルツールやケーブルツールが一般的です。
データネットワークは、発電機やプログラマブルロジックチップなどのデバイスや、ドアやエレベータなどの日常的なデバイスを、設計者や開拓者が作成、変更、保守することを可能にします。
信号の制御には、誰もが利用できるプログラミング言語「YOLOL」を使用している。
用語解説
オブジェクトの内部には、物理的なソケットと仮想的なデバイスフィールドが存在する。
- ソケットは、オブジェクトをケーブルでデータネットワークに接続したり、他のデバイスを介して直接接続したりするために使用される。
- デバイスフィールドは、オブジェクトが同じデータ・ネットワークを共有する際に設定され、アクセスされる。
データネットワークリソース
データネットワークはケーブルで接続されています。
データネットワークでは、機器同士を接続することで、2つの異なるリソースを転送することができます。
- 電気
- 信号
電気:データネットワーク内のすべてのオブジェクトとの電力の供給
- データネットワークに接続された発電機は、複数のデバイスやマシンに電力を供給しようとします。
- そのため、データネットワークに接続されている機器のうち、電力を必要とするものが多い場合は、複数の発電機を用意することが重要です。
信号:データネットワーク内のすべてのオブジェクトとの相互に通信
- ケーブルはお互いに直接接続することができます。
- ソケットは複数の接続が可能で、ケーブルは分岐することもあります。
- データネットワークの数に制限はありません(例:1つの宇宙船内)。
- 分岐したデータ・ネットワークは、戦闘中に簡単には壊れません。
デバイスフィールド
各デバイスは、デバイスフィールドを持つことができます。このフィールドは名前と値で構成されており、両方ともカスタマイズ可能です。
ネットワーク上のどのフィールドにも好きな名前をつけることができ、「競合する」名前も許されています。デバイスのフィールド名を変更しても、デバイスの管理方法は変わりません。
また、同じデバイス内で2つのデバイスフィールドの名前を入れ替えても、実際には2つのフィールドは入れ替わりません。デバイスのフィールドは、名前ではなく位置によって管理されています。
例:ボックススラスタの第1フィールドは名前に関係なく常に制御フィールドで、第2フィールドは常にフィードバックになります。
フィールドの種類
フィールドには入力、出力、IO(入力+出力)の3つのタイプがあります。
- 入力フィールドは純粋にデバイスを制御するためのものです。デバイス自体は入力フィールドの値を変更しませんが、操作方法を変更します。例えばThrusterPowerLevelはスラスタのThrusterPowerLevelフィールドに設定された値に基づいて現在の推力を増減させますが、それだけではフィールドの値を変更することはありません。
- 出力フィールドはその逆です。これらのフィールドに何を書き込んでも、デバイスの動作に影響を与えることはありません。出力フィールドは、デバイスの状態を監視するためだけのものです。デバイスは定期的に出力フィールドに値を書き込み、それまであった値を上書きします。例えばスラスタの "CurrentThrust"フィールドは、このフィールドを使ってスラスタを変更することはできません。また、スラスタがスラストレベルを変更するたびに、このフィールドに新しい値が上書きされます。
- IOフィールドは、入力と出力の両方を兼ね備えたフィールドです。手動で値を書き込むことでデバイスの動作を変更することができますが、一方で、デバイス内のいくつかのイベント(例:レバーを引く)によって、デバイスはフィールドに新しい値を書き込むことになります。
値の伝送
デバイスが自分のフィールドの値を変更すると、その変更はネットワークを通じて伝送されます。他のすべてのデバイスは、同じ名前のフィールドを新しい値に更新します。
ユニバーサルツールでフィールドを更新しても変更の伝送は起こりませんが、手動イベント(例:レバーを引く)では伝搬が起こります。
伝播は、同じネットワーク上のすべてのデバイスの入力フィールドと出力フィールドの両方に影響します。
これは、2つのデバイスを接続するためにYOLOLを必要とせず、1つのデバイスの入力またはIOフィールドを、他のデバイスの出力またはIOフィールドと同じ名前にするだけです。
YOLOLのチップは、グローバル名を設定すると値の伝送を起こしますが(例: :GlobalName = value)、ネットワーク上に名前が存在しない場合は、YOLOLの実行が失敗することに注意してください。
前述のYOLOLコードは、与えられた名前のフィールド(「:」のプレフィックスなし)を持つデバイスが少なくとも1つ存在するか、与えられた名前のエントリーを持つYOLOLメモリーチップが存在する場合に有効です。