設計思想、コンセプト

ブロック主体ではない→空虚にもnode基準点を生成できるように

鉄道はmoorestechのブロックシステムと大きくことなる。ブロックのよう1.0刻みの座標で扱えないし曲線レールなどもでてくる。そのレールをたどってつながっているか等の判定を行うため、ブロックが主体ではない。

そのためほぼブロックに依存しないシステムとして(全く違うゲームを作るかのように)実装することとした。ユーザーが鉄道システムにアクセスするために現在 レールブロックを設置=RailNode新規生成 となっているが、必ずしもレールブロックを設置しなければ鉄道システムを動かせないわけではなく、RailNode単体だけ生成しても鉄道を動かせるようなシステムにした。

ゲームにありがちな車庫やマップ外につながるトンネルのように、表示されているけどさわれない中途半端な存在を容易に再現できるように。

再現性確保

これは実装者の趣味だが、決定論的な再現性確保をしたいと思いTick概念導入、浮動小数点数誤差を完全排除する固定小数点数距離の導入をした。(決定論的な再現性はシミュレーションの”同期”に非常に有用だと思う)

用語定義

Satisfactoryのこの赤丸と同じ役割を果たす

image.png

図A:raincomponent1のFrontからraincomponent2のFrontに接続するレール(青)

image.png

図B:raincomponent1のFrontからraincomponent2のBackに接続するレール(青)

image2.png