Skip to content

Instantly share code, notes, and snippets.

@nona-takahara
Last active June 19, 2022 02:24
Show Gist options
  • Save nona-takahara/a60d906f67e4218afb775030b84aeb9f to your computer and use it in GitHub Desktop.
Save nona-takahara/a60d906f67e4218afb775030b84aeb9f to your computer and use it in GitHub Desktop.
Stormworks: Build and Rescue向け日本式鉄道通信システム 送信規格案

Niner Supply - Train Transmitter (DRAFT)

Stormworks向け。鉄道用トランスポンダのうち、送信部を構築するための共通システムを目指す。

もし、希望の機能があれば、このGistに対してコメントするか、高原個人宛でTwitterやDiscordへ要望を投げると対応可能。

無線周波数は19998を指定。送信にあたっては必ず小アンテナを用いる。

送信内容

チャンネル 用途 備考
N 1 GPS X座標
N 2 GPS Y座標
N 3 コンパスセンサー 運転台の前向きに矢印を向けて設置。進行方向は後に示す公式を用いて判定
N 4 速度[m/s] 速度の絶対値(m/s)を送信
N 5 列車番号
N 6 種別等の情報 この部分の共通化は将来の課題
N 11 保安装置の送信周波数 現時点ではSASARACOSが該当
N 12 保安装置の受信周波数 現時点ではSASARACOSが該当
B 1 運転台起動中 R-BUSの制御権に連動させるとよい
B 2 次駅停車 停車のときON
B 3 戸開情報 開いているときON

地点判定公式

lenという便利関数が入っているので、ビークルのGPSの値と列車のGPSの値を、xとyそれぞれ差を取って、カンマで区切ってlenに投げ込めばよい。

判定範囲は1メートルくらいで十分。進行方向判定と組み合わせるとトラブルもない。

進行方向判定公式

判定地点にコンパスセンサーを含むビークルを置くとき、そのコンパスセンサーの矢印の向きを判定したい向きに合わせてxとする。 また、列車から送られたコンパスセンサー情報をyとする。

このとき、cos((x-y)*pi2)の値が1付近(しきい値は適当に決定する)のとき、同じ向きであると判定できる。また、-1付近のとき、逆向きと判定できる。しきい値は0.5から0.7くらいにしておくのが無難。

種別の提案

高原が参加しているマルチプレイにおいて登場する種別と、その上下関係からして、次のような設定があるとちょうどいいように思われる

  • 各駅停車(普通)
  • 快速
  • 準急
  • 急行
  • 特急(無料)
  • 特急(有料)
  • 回送

未指定・回送を0に割り当て、そこから順にとるならトラブルが少なそうに思われる。

快速を急行より上位に取る通例の方式にするか、準急より下位に取る方式にするか、あるいは修飾語として独立させるかなどが悩ましい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment