株式会社 銀連製作所株式会社銀連製作所

アイキャッチ

GTC - Ginren Traffic Control

RTM非依存の独立バージョンの作成について

長らく当ModはRTMありきの拡張Modとして製作してきましたが、制御処理上の限界が見え始めてきたのと、結局押ボタン箱とかその辺は全部独自のものであるということから、RTM対応版(0.x)とは別に独立版(1.x)の開発を行っています。まだプロジェクトの草案段階なのでここには記しませんが、0.xの新機能追加は今後行いません。ソースコードはどこかに置いておきますので、もし追加したければ勝手に追加してください。不具合修正などは対応します。

どんなMod?

GTCとは、交通信号機に付随する機器類を追加するModです。RealTrainModのモデルパックで交通信号機を作ることができるので、それと連携して信号機を簡単に動かせるようにとのことから自己満足で開発しているものを掲載しています。

前提Modは?

当Modを使用するためには、2つのModを事前に導入する必要があります。そのModがない場合は、起動の段階で「ダウンロードして」と言われてしまうので、Modを必ずダウンロードし、有効化してください。

RealTrainMod

交通信号機の出力コネクタを使用して電気信号を送信するため、RealTrainModが必要です。本体をダウンロードして有効化してください。(RTMで必要なNGTLibもダウンロードしなくてはならない気がします。RTMの導入方法については範疇外なので割愛します)

GingaCore

拙作の前提Modとしてダウンロードする必要があります。このMod自体は特に何も機能はありませんが、この内部にあるメソッドを使用することがあります(というか、します。)。ダウンロードリンクは、対応するGTCのセクションに合わせて記載しておくので、そのバージョンにあったものをダウンロードしてください。バージョンが違うと起動できません。

詳しい機能の紹介

簡単にですが、このModで使用できる機能を紹介します。

交通信号制御機

今まで焼き滅ぼしたくなるほどクソ広い面積を占有していたRS回路で信号機の制御を行ってきていたと思いますが、その制御をシンプルに1ブロックで行うことができるようになったものとなります。おまけとして、神奈川県の印字方式を採用した制御機番号を振ることができるようになっています。特に管理番号に関しては、のちに連携(系統制御)を実現するために必要になると思うので、つけておくことをお勧めします(つけないと印字がされない制御機になるだけで機能は変化しません)。

この制御機では、基本プリセットとして「定周期」「押ボタン式」を内蔵しています。そのほかにも、自身で作成した制御を任せることも可能となります(まだ開発版では対応していませんが、JavaScriptを使用したもののほかに、単純なサイクルだけならばもっと簡単な書式で表現できるような計画もしていますVer 0.4βで暫定対応しました! JavaScriptのみ対応中です)。一応感知式もプリセットで同梱してはいますが、まだ何も設定していないため無点灯になります。Ver0.5β以降、削除予定です。

制御機は、複数のパラメータを持ちます。設定できる項目は、「色」「それぞれの色の表示時間」「番号」などです。表示時間については、「主道」の時間を指定します。「従道」に関しては、主道の時間から自動的に推測されます(プリセットの場合)。カスタム制御の場合はどのようにするかその製作者さんの意向になりますが、設定できるのは「主道」だけです。一応カスタム用にその他のパラメータも入れてあるので足りなくなったらそこをお使いください(ただし、整数しか入れることができません!)。

制御機には向きがあり、印字により識別することができます。ステンシル印字(線が途切れているやつ)がある向きが自分のほうを向くように設置されるはずです。そして、その向きを基準として、奥(別のフォントの印字がある)は主道歩灯手前は主道車灯右側面は従道車灯となり、左側面は従道歩灯となります。その4面にはRTMの出力コネクターをつけることができます。コネクターを付けたら、いつもの通りにワイヤーで信号機と結び付けてあげれば勝手に動作を開始します。

夜間点滅に対応しています(常時点滅にもできますがサイクルが無視されます)。点滅中は指定したサイクルを全無視し、一定周期で主道黄点滅、従道赤点滅、歩灯が消灯します。現在、初期化設定をしていないため、夜間点滅は即座に切り替わり即座に終了(点滅したままサイクルスタート)してしまいますが、おいおい修正予定です。繰り返しますが、点滅中はサイクルが完全に無視されます。押ボタンとか押しても反応しないのでお気をつけあれ。現在バグもとい仕様で、点滅終了後に押ボタンは勝手に切り替わります。

押ボタン箱(Ver0.2β~)

よくある「Ⅱ形」の押ボタン箱を追加しました。この押ボタン箱は、設置された位置を中心とした半径32マスの球体内部に位置する最も近い制御機を自動で見つけ、押ボタンを右クリックすることでその制御機に信号を送信することができます。出力コネクタ、ワイヤーなどは必要ありません。無線で稼働します(笑)

さすがにこれをMinecraft内のレンダーメソッドだけで直感で書いていくには無理があったので、制御機とは異なりMQOファイルで製作しています。近いうちに制御機もより現実に近くなるようにMQO化しようと考えています。押すとちゃんと「ピピピピ」と音が鳴るようになっています。押ボタンの音まともに録音したことなかったので電子音っぽく波形いじって再現してみましたがこんな感じでしたっけ?

表示時間について

表示時間の指定パラメータについてです。すべて単位は秒となりますが、Tickで計算しているため、ゲーム時間を変更するModを導入している場合はその速さ分加減速するのでご注意ください。

青・黄・赤

主道のそれぞれの色が点灯している時間を指します。通常、黄色は3~4秒が好ましいとされています。というか実際の制御機は2か3の組み合わせで黄色時間を調整しています(2,3,2+2=4,2+3=5…)。また、赤の時間は長めにとっておかないと、側道がいつまでたっても青になりません。側道の黄色時間+赤時間を考慮した長さにしないといけません。

全赤

全赤時間とは、その名の通り、「あらゆる灯器が赤を指し示す時間」を指します。通常は2秒程度にしておいたほうがいいですが、交通量の多い交差点や右左折車両が多い交差点だと3秒以上のところもありますね。なおカスタムではこの値を無視できる可能性もあるのですが、基本指定しておいてください。0にするとバグります。

青点滅

歩灯の点滅時間を入力してください。黄色時間とは異なります。なお、歩灯制御でここを使う場合、前述した「赤」の時間はこれも考慮する必要があります。

カスタム(その他)

この中には、カスタムスクリプトで使用するための追加パラメーターを入力します。カスタムを導入していて、スクリプト製作者から指示があった場合に使用してください。パラメーターはカンマ区切りで複数入力することができます。

正直わかんない!

主道と側道の時間調整は以下のような図で表されます。これをもとに計算し、時間を入れてください。大体多めにやっておけばどうにかなります

このように、パラメーターは主道を基準として決定するので、従道は共通部分である「黄色時間」「点滅時間」「全赤時間」を除いて計算で求める必要があります。全赤時間は必ずどちらも同じ回数を同じタイミングでとるので考えなくて結構です。暇なときにGIFでも載せておきます。いつになるかわかりませんが。

カスタムスクリプトについて

ドキュメントをご覧ください。ドキュメントは、下記ダウンロードのセクションからダウンロードできます。

利用規約っぽいもの

基本的にGRPと同じライセンス形式なので今はあちらをお読みください。あそこでダメって言っているものはダメです。それ以外で困ったら管理人へご連絡ください。いずれ作ります。

Modのダウンロード

お待たせいたしました。Modのダウンロードリンクを掲載しておきます。「β」とついているものは開発版となります。開発版は、本番環境のワールドには使用しないことを地球の重力よりも強く推奨しています。というのも、若干仕様が変わったりすることがちょくちょくあるためです。また、なるべく最新版を入れてください。安定版(無印のやつ)はバージョンアップするたびにサポートを打ち切ります。バグが発生したりしてどうしようもない場合のみ古いバージョンはお使いくださいね。


GTC ドキュメント

ドキュメントのダウンロードはこちらから行うことができます。最新版が常に公開されています。定期的に確認してみては?

※そのままだとPDFビューアが開く場合は右クリックから保存してください。

Ver 0.5.2 - 2021.4.17

GUIが使えないとの報告があったのでそこだけ修正しました。スピーカーのバグは直しようがない(代替案がない)ので放置中です。

  • <修正>GUIのスケーリングに半対応しました。位置は結構ズレますが一応画面内にGUIが表示されるはずです。

GingaCoreには特に変更を加えていないので、そのままのバージョンで問題ないと思われます。なんかあったら教えてください。

ダウンロードリンク

Ver 0.5.1 - 2021.4.4

基本的につじつまが合わなかった部分の修正にとどまっているので、バグの修正は行っていません。また、検証も行っていません。

  • <修正>GingaCoreのメソッドで代替できるものを変更しました。
  • <修正>制御機の検索を少し最適化してみました。

スピーカーは使わない方がいいです。無理くり音を鳴らしているため、ワールドがメモリ解放されてしまうとサウンドを消す処理を行う際にサウンドが鳴っているのか鳴っていないのかが判別できなくなり、NullPointerExceptionで落ちることが多いです。追加したい気持ちは山々なので、正式版の開発ではきちんとどうにかして追加したいと考えています。

GingaCore2.2.2(2.2.1は欠番)と一緒に入れて見て下さい

ダウンロードリンク

Ver 0.5 - 2020.12.23

正式版(RTM非依存版)制作に伴い、これ以上の新機能追加は見込まれないことから、最後の新機能追加を行いベータを外して正式版としました。今後はバグをたまに潰す程度になると思われます。

  • <追加>音響スピーカーを追加しました。
  • <追加>音響装置を追加しました。
  • <問題点-007>スピーカーを配置したまま制御機を消すとNullPointerExceptionで落ちます。次回ロード時にも高確率で壊れるみたいです。

スピーカー関連の機能は試験的な実装な上、僕自身もよく理解していないまま適当にメソッド組み込んでいるので動作不安定です。使ってなんかあっても知りません。

※GingaCore2.2を必要としていますが多分2.1でも動きます動きません。2.2にアップデートしてみてください。

ダウンロードリンク

Ver 0.4β - 2020.9.16

ついにカスタムスクリプトの機能を導入しました。詳しい使い方は上記参照。

  • <追加>カスタムスクリプトを使用できるようになりました。JavaScriptを使用して、自由に制御をコントロールすることができます。
  • <追加>カスタムスクリプトの整合性チェックを行うようになりました。未指定や存在しないファイルを指定するとOKをクリックできません。
  • <廃止予定>車両感知を行うことができる「Detect_car」を組み込んでいましたが、押ボタンで代用できるため廃止する予定です。

※カスタムスクリプトは多分何もソースとか見ないで作れるものではないので現時点で開発環境で動作確認できているスクリプトを一緒に配布しておきます。いずれドキュメントを作成します。

※たびたび申し訳ありませんがGingaCoreを2.1にアップデートする必要があります。

自動アップデート機能使ってみてください(などと)

ダウンロードリンク

Ver 0.3β - 2020.9.7

Minecraft内での動作というよりは、Modとしての外部連携に強きを置いたアップデートです。そろそろβ取れるかもしれません。

  • <追加>直接GTCのjarファイルをダブルクリックして起動した場合、アップデートの確認と前提Mod(GingaCoreのみ)の自動ダウンロードができるようになりました。
  • <追加>GingaCoreのメソッドを大幅に差し替えました。また、自由に使えるヘルパーメソッドをまとめたクラスを作成しています(技術者向け)。
  • <追加>直接起動してクラッシュした場合、クラッシュレポートを生成するようになりました。
  • <修正-002>GUIの空白文字は自動的に「0」と認識するようになりました。
  • <修正-003>押ボタン箱の連打をできないように修正しました(ただし極端に早いスピードだとチャタリングで連打できてしまう可能性があります)。
  • <修正-???>システムログの名前を変更しました(「GTC」)。
  • <修正-???>GingaCore2.0アップデートに伴いメソッドを変更しました。また、起動時に更新を確認するようになりました。
  • <問題点-006>OpenJDK8~9を導入している場合、通信時にSSLExceptionが出てクラッシュする。
  • <問題点-X01>押ボタン箱のサウンドが鳴らないバグが発生している模様…?(再現できないため不明)

※自動アップデートはまだ不具合がかなり多いです。上記に示した問題点があることをご理解ください。

ダウンロードリンク

Ver 0.2.1β - 2020.9.6

バグ修正が主なアプデ内容です。

  • <修正-004>起動時に「NoSuchMethodError」が出る問題を修正。GingaCoreを1.1.1にアップデートする必要があります。
  • <修正-005>新規ワールドを作成する際に「NullPointerException」が出る問題を修正。
  • <修正-???>押ボタン箱が壁にめり込む問題を修正。

ダウンロードリンク

Ver 0.2β - 2020.9.2

このバージョンはまともにプレイできないバグが発生しています!!

  • <追加>押ボタン箱を追加しました。押ボタンを押すと切り替わるようになります。ただし大量に設置しても同期がとれません。
  • <追加>押ボタン制御の継続検知を有効化しました。多分特にエンドユーザーにとっての恩恵はないでしょう。
  • <追加>(RTMに頼らずに)MQOファイルを読み込める機能を追加しました(GingaCore)。
  • <修正-???>点滅周期が遅くなるバグを修正しました。以前は特定の環境でTickが乱れていました。
  • <修正-???>押ボタン制御のアルゴリズム変更。即時切替えになりました。ただし、青時間に0より大きい数字を入れると、その時間分はボタンを押しても待つ感じになります。
  • <修正-???>ソースコード内部で使用しているヘルパー関数をGingaCoreへ移動させました。GingaCoreのアップデートが必要です。
  • <廃止>レッドストーン入力による押ボタン検出は、押ボタン箱が暫定ながら追加できたため無効化しました。
  • <問題点-001>依然として点滅の終了・開始は途中であっても切り替わります。
  • <問題点-002>GUI内の値チェックはまだ入れていないため引き続き「0」を入力してください。
  • <問題点-003>押ボタン箱を連打すると永遠に切り替わらない、押ボタンが浮くなどの現象がありますが、中央に座標を設定しているためにおこる現象で、半ば仕様です。
  • <問題点-004>Modを入れた状態で起動すると「NoSuchMethodError」が出てクラッシュします。(情報提供感謝)
  • <問題点-005>強引に起動し新規ワールドを作成すると「NullPointerException」が出てクラッシュします。(情報提供感謝)

ダウンロードリンク

現時点でこのバージョンにおいては、上記に掲げた致命的な問題点があるため導入してもクラッシュしますが、大幅な改変を行っているため予備というか今後のためというかで一応残しておきます。ダウンロードしても意味がありません。

Ver 0.1β - 2020.8.11

開発版初期公開です。いくつか注意事項があります。

  • 現在、夜間点滅や昼間点滅のスイッチをオンにした場合に、サイクルの途中であっても問答無用で点滅が始まります。また、夜が明けた瞬間そのままの現示で通常サイクルに入ります(正常にサイクルは動きます)。
  • 押ボタン箱を追加していないため、現状は制御機にレッドストーン回路をつなぎ、そこに信号を送ると押ボタン式の制御は切り替わるようになっています。
  • GUIにて、値を設定しない場合は「0」を入力してください。空文字列にしてしまうと落ちます(値をチェックしていないため整数に変換できずエラーが発生します)
  • 計算結果、サイクルが負になる場合の動作は保証していません。万が一いつまでたっても切り替わらなくなった場合は、お手数ですが一度制御機を壊し、改めて設置してください。
  • カスタムスクリプト機能はまだ対応していないため、何を入れても無視されます。
  • 1.12.2以外のバージョンでは使用できない関数を使用していたりする可能性が高いため、同バージョン以外での動作は保証できません。というかたぶんできません。
  • コネクタを刺す際には拙作GRP - Ginren RTM Packを合わせて導入し、見えないコネクタでつなぐことをお勧めします(そうしないと制御機にコネクタがぶっ刺さった気持ち悪いものになります)。

ダウンロードリンク

0.2β配布開始に伴い、旧バージョンの配布は混乱を招くため終了させていただきます。

その他ダウンロード

Modを使用する際におまけで製作したものや、ソースコード自体を配布しています。なお、ソースコードに関しては必ずご自身の研究目的・当Modの拡張Modを作成する場合のみでご利用ください。それ以外の利用はお断りいたします。(というか拙いコードなので見てもわけわかんないと思います)

GTC Ver0.2β ソースコードセットJarファイル

0.2βをビルドする際に暗号化を全く施していない、生のソースコードをダウンロードできます。めちゃくちゃ蛇足コードが書いてあったり、コメントがものすごい適当になっていたりします。あくまで参考程度にご利用ください。なお、JarファイルなのでEclipseなりで開けば読み込めますし、最悪の場合は拡張子を「.zip」に変えれば普通に中身を覗くことができます。

ちなみにサウンドファイルとかモデルファイルもassetsのなかに入っています。好きに改造したり使ったりしちゃってください(ただ名前だけ変えて再配布とかは…恥ずかしいからやめてください)

Eclipseなどで読み込んで使用する場合、GingaCore1.1とRTM1.12.2対応版が必要となります。難読化されたものでも構わないので、ご自身でダウンロードしてください。GingaCoreにおいては下記リンクからダウンロードできます。

ダウンロードリンク

ダウンロードはこちらからできます(130KB程度)。

GingaCore Ver1.1 ソースコードセットJarファイル

GTC0.2βに対応したヘルパー関数などをメソッドとしてまとめているだけの簡易的な前提Modです。GTCが動作するために必要なメソッドも入っています。GTC 0.1βは1.0でも1.1でも動きますが、0.2βは1.1以上でないと動かないのでご注意ください。なお、今後予定されているメジャーアップデートでは下位互換性が損なわれる大幅な変更をすると思うので、依存はしないようにしてください。なお、このソースコードに関しては、Mod開発者がAPIを利用することを許可しています。ただし、名称を変更してはいけません。パッケージ名はそのままに、内部のメソッドにアクセスすることはOKとします。その際、Modのメタ情報に必要Modとして入れておくことをお勧めします。機能追加したら見せてくれれば採用するかも?

ダウンロードリンク

ダウンロードはこちらからできます(130KB程度)。

直近の更新ページ

2021年4月17日

GTC - Ginren Traffic Control

2020年12月5日

銀連製作所について

銀連製作所の社員紹介

GRP(Ginren RTM's Pack)

各種アドオン一覧

管理人のボヤキ一覧

ソフトウェア・システムツール

数字ルーレット

システム大改修予定

だいぶ閲覧数が増えてきてスクリプトが重くなってきたので、もう会社設立後何回やっているかわからないリニューアルを致します。2020年12月5日より少しずつ始めてまいります。一時的に表記が崩れたりしますがお気になさらずに。また、一時的にメンテナンスモードになる可能性もあります。ご了承ください。