見出し画像

【TRAMCITY HAKODATE】電車でGO!コントローラで函館市電を運転してみた

既存のソフトウェアでもできるけど、特化した変換ソフトウェアを作ったほうがより快適になりそう。


TRAMCITY HAKODATE

TRAMCITY HAKODATEは、函館市内を走る路面電車のパソコン用運転シミュレーションゲームである。
開発途中 (早期アクセス) であり、以下の情報は執筆時点でのものである。

Steamで1,680円で販売されている。
Steam:TRAMCITY HAKODATE
独自のEULAが設定されているが、某JRのやつと違って1台にしかインストールできないという条件や他のソフトウェアと組み合わせてはいけないという条件は無く、特に問題は無いと判断した。

1文字違いのTRANCITYとは関係なさそうだ。

運転前

タイトル画面。バージョンが表示されている。

タイトル画面

STARTボタンをクリックし、「運転」をクリックすると、運転する区間を選択する画面になる。
電車でGO!シリーズでは一方向しか収録されていないことが多い中、このゲームでは両方向を運転することができる。

運転区間選択画面

運転中

運転開始。
最初の電車停留所 (≒駅) に停車しており、乗ろうとする乗客が待機している。
電車はただ走るだけではあまり意味がなく、お客さんを乗せ、目的地まで運ぶことが求められる。
(乗務員の研修など、そうではない場面もあるかもしれないが)
忘れずに中扉を開け、お客さんを乗せてあげよう。
特に最初の停留所では忘れやすいので注意。

運転開始直後の様子

また、このデフォルトの視点では、降りようとしている乗客が居るかどうかが見えず、不便である。
マウスを操作して視点を調整し、降りようとしている乗客が居るかどうかが見える状態にしておくといいだろう。
さらに、視点を調整した後Escキーを押し、「視点保存」をクリックすると、次回の運転では最初から調整後の視点で始められる。

視点を調整した状態

待機していた乗客が乗り終えたら、開けた扉を閉めよう。
そして、ブレーキを解除し、出発時刻にマスコンを入れることで電車を発車させる。
なお、扉が開いている場合はマスコンを入れても動かなかった。

マスコンは、P0 (オフ) ~P7 の8段階がある。
一気に最大まで上げず、1秒ごとに1段上げることが推奨されている。
また、オフにする際は1回の操作で一気にP0まで落ち、中間の状態に戻すことはできない。

ブレーキは無段階で、「込める」「緩める」を適切な時間押し続けることで操作を行う。
電車でGO!などのよくある鉄道シミュレータと違って、込め具合を直接指定したり、急に切り替えたりはできない。

函館どつく前から発車すると、すぐに8km/hの速度制限がかかる。
調子に乗って加速するとオーバーするので、注意しよう。

また、発車したら次の停留所の情報をアナウンスするとよいだろう。
この電車では降りようとする乗客が居る場合はバスのように合図がされるが、アナウンスを怠ると乗客が合図をするタイミングを逃し、迷惑がかかる可能性が考えられる。
ただし、現在のゲーム上ではアナウンスをしなくてもペナルティは無い。

函館どつく前を出発した直後

停留所で停車すると、停車するべき位置と実際に停車した位置との差に応じた加点がある。
降りようとする乗客が居る場合、単に前扉を開けるだけでなく、乗客1人ずつについて降車確認の操作を行わないと降りてくれない。
なお、停留所で停車する直前に(再)加速を行っても、ペナルティは無いようである。

停車し、降車確認操作を待っている乗客が居る状態

この路線上には信号があり、赤信号では停車することが求められる。(無視すると減点される)
実際のフィールドにある信号ではわからないはずだが、ゲームのUIでは信号が変わるまでの残り時間の目安が表示される。(未来予知!)
これにより、「青信号だけどもうすぐ変わるから減速する」などの判断が可能になる。
「変わるかもしれないから」ではなく「変わるから」で減速する (変わるまでの時間が長い場合は減速しない) ことができ、有利である。

さらに、頭上に赤い三角が2個並んだ「セクション」が登場する。
「セクション」を通過するタイミングでは、マスコンをP0 (オフ) にしておくことを求められる。(無視すると減点される)
停車位置の直前に「セクション」があることもあり、「セクション」の手前で停まってしまうと発車しにくくなってしまうので気をつけなければならない。

路線上の信号とセクション

頭上に、白い四角に赤い文字で速度制限が表示されている。
さらに、表示が無くても、分岐器や停留所の付近では速度制限がかかることがある。
特に、分岐器での速度制限は明示された速度制限の直後にあることがあり、速度制限が解除されたと思って油断して加速すると次の制限に引っかかることがある。

明示された速度制限区間の直後の分岐器 (速度制限)

信号の停止位置の前に「トロコン」が設置されている場所がある。
この「トロコン」がある場所では、停止信号が出ているからといって「トロコン」の手前で停車して待っていると、いつまで経っても信号が変わってくれない。
先に進むためには、「トロコン」がある場所を通過した後で信号待ちをすることが求められる。

「トロコン」の手前で停車した状態 (このままでは進めない)

運転後

シナリオの最後まで運転を行い、EXITボタンをクリックすると、今回の運転結果のまとめが表示される。
ハイスコアを更新した場合でも、更新前のハイスコアを確認できて良い。

結果画面

電車でGO!コントローラとの連携

電車でGO!コントローラは、対応するゲームソフトで電車を運転する用のコントローラである。
要はコントローラであり、操作の状態を電気信号で接続されたコンピュータに伝える動作をするので、工夫次第で汎用的に使用できる。

ハードウェア

まずはメインとなる電車でGO!コントローラを用意する。
様々な種類があるが、今回はプレイステーション用ツーハンドル型を用いる。

電車でGO!コントローラ

さらに、この電車でGO!コントローラを含むプレイステーション用コントローラをパソコンに接続するために別の製品を用いる。
これも様々な製品があるが、今回はツナイデント3PROを用いる。
これはプレイステーションのコントローラをPS3に接続するための製品として発売されているが、パソコンに接続して使用することもできる。
後述の入力変換を行うソフトウェアで動作確認を行ったとされるハードウェアの一つであり、ごまかし (変換ソフトウェアの「PSFake」機能) をしなくても操作の情報を正しくパソコンに伝えることができる。

ツナイデント3PRO

今回用いる電車でGO!コントローラではボタンの数が足りず、TRAMCITY HAKODATE の一部の操作は行えない。
たとえば、(今回の設定では) 警笛を鳴らすことができない。
とはいえ、ゲーム上は警笛を鳴らすことを要求される場面は無く、問題にはならない。
気になる場合は、キーボードや他のコントロールデバイスを併用するといいだろう。
たとえば、キーボードのキー操作を割り当てることができるフットスイッチなどが使えるかもしれない。(未確認)

フットスイッチ (参考、今回は使用していない)

ソフトウェア

電車でGO!コントローラの入力をゲーム操作用のキーボード入力に変換するためのソフトウェアとして、電車でGo!コントローラー変換器を用いる。

この変換器で TRAMCITY HAKODATE を操作するための設定を行う。

まずは、メイン画面で入力の読み取り方法と、変換結果の一部の設定を行う。
今回はツナイデント3PROを使用するので、メニューの「プリセットコンバーター」から「PS/GameTech/ツナイデント3PRO」を選択する。
これにより基本的な部分の設定が行われるので、続いてSELECTボタン、STARTボタン、ABCボタンに割り当てる操作 (押すキー) の設定を行う。
今回は、以下のように設定を行った。

  • SELECTボタン:前扉を閉める (1)

  • STARTボタン:前扉を開ける (Q)

  • Aボタン:中扉を閉める (2)

  • Cボタン:中扉を開ける (W)

  • Bボタン:アナウンス/降車確認 (SPACE)

以下の画像では「制御するソフト」が「キーボード出力(自家用)」になっているが、後述の理由によりまだこれを選択してはいけない。

電車でGo!コントローラー変換器の設定 (メイン画面)

続いて、メニューの「Setting → Keyboard Setting」を開き、運転操作の変換設定を行う。
まず、開いた画面のメニュー「プリセット(Preset) → BVE-2Handle」を選択する。
これにより行われる設定から、以下の部分を変更する。

  • 「マスコンオフ」を「A(65)」に設定する

    • TRAMCITY HAKODATE ではマスコンを弱める操作一発でP0まで落ちるので、この仕様に合わせる

  • 「マスコン弱」を「C(67)」に設定する

    • TRAMCITY HAKODATE での操作に割り当てられていないキーならなんでもいい

    • TRAMCITY HAKODATE ではマスコンを1段だけ弱めることができないので、無視する

    • 「空欄」という選択肢もあるが、これを選ぶと他のキーが勝手に割り当てられるので、使えない

  • 「ハンドル種別」を「Air Brake」に設定する

    • ブレーキの込め・緩めを連続的に行う TRAMCITY HAKODATE の仕様に合った操作が行える

  • 「ノッチ補正」の左側 (加速) を「7」に設定する

    • TRAMCITY HAKODATE のマスコンはP0~P7であるのに対し、電車でGO!コントローラのマスコンはP0~P5までしかないので、この差を埋める

設定を終えたら、「Save」ボタンを押し、確認ダイアログで「はい」を押す。
メイン画面の「制御するソフト」が「キーボード出力(自家用)」になっていると、ここで「Save」ボタンを押しても反応せず、設定を保存・反映できなくなる。

電車でGo!コントローラー変換器の設定 (運転操作)

この設定後、メイン画面の「制御するソフト」を「キーボード出力(自家用)」に設定すると、すぐに変換結果の出力 (キーボード操作) が開始される。
入力のコントローラの状態 (コントローラが接続されていない状態を含む) によっては実際にキーが押された状態になるので、注意すること。

運転してみた

これらのハードウェアとソフトウェア・設定を用いて、実際に電車でGO!コントローラを用いて TRAMCITY HAKODATE で運転を行ってみた。
すると、いくつかの点に気がついた。

まず、今の仕様ではマスコンの状態の不整合が発生しやすい。
電車でGO!コントローラのマスコンはP0~P5を自由に選択できるが、TRAMCITY HAKODATE のマスコンを弱める操作は一発でP0 (オフ) にする操作しかできず、1段だけ弱めることができない。
その結果、たとえば P3 → P2 → P3 のようにコントローラのマスコンを一旦弱めてからまた強めると、この弱める操作は TRAMCITY HAKODATE に反映されないため、「強める」操作が本来の想定を超えた回数行われ、ゲーム上のマスコンがコントローラ上のマスコンより強い設定になってしまう。
コントローラの「マスコンオフ」時のかわりに「マスコンを弱める」操作時に TRAMCITY HAKODATE の「マスコンを切る」操作を行うようにしても、今度は「強める」操作が足りず、ゲーム上のマスコンがコントローラ上のマスコンより弱い設定になってしまう。
このような操作は意図して行うだけでなく、操作のブレによって意図せず発生することもあるため、問題になりやすい。

さらに、ノッチ補正により複数段を一気に上げる場面では、TRAMCITY HAKODATE で推奨される「1秒ごとに1段上げる」を行わず、すぐに上げる量に対応する操作が行われる。
現在は「1秒ごとに1段上げる」を行わなくてもペナルティは無いが、将来ペナルティが導入された際にこのことが問題になる可能性がある。

ブレーキについては、B4以下に入れると「緩め」、非常 (B8超) に入れると「込め」の操作が行われる。
それ以外は操作を行わない「保ち」である。
不都合ではないが、ブレーキの操作を行うために要求されるレバーの動きが大きいため、操作しにくい印象があった。

以下が、実際の運転結果の例である。
「ブレーキを変えよう」と思ってから実際に変更が反映され始めるまでの時間がキーボードでの操作よりハンドルでの操作のほうが長くなりがちであるためか、全体的に停車位置の精度が悪くなった。

電車でGO!コントローラを用いた運転の結果例

今後の課題

「電車でGo!コントローラー変換器」は、コントローラの入力をキーボード操作に変換するだけでなく、読み取ったマスコンとブレーキの情報を対象アプリケーションのメモリの特定のアドレスに書き込む処理にも対応している。
この機能を用いてマスコンとブレーキの入力情報を受け取り、TRAMCITY HAKODATE 用の運転操作に変換するソフトウェアを自作することで、既存のソフトウェアを用いてコントローラからの入力処理を簡略化しつつ、より TRAMCITY HAKODATE の仕様に合った運転操作を出力できると考えられる。

具体的には、マスコンを強める操作を以下のように出力することで、「電車でGo!コントローラー変換器」を直接用いるより不整合を起こしにくくなることが期待できる。

  • 入力されるマスコンの状態とは別に、「ゲーム上でこうなっているはずのマスコンの状態」を用意する

  • 入力されるマスコンの状態が「ゲーム上でこうなっているはずのマスコンの状態」より強い場合は、マスコンを強める操作を出力する

  • 入力されるマスコンの状態がP5で、「ゲーム上でこうなっているはずのマスコンの状態」がP5以上の場合は、前回の操作から1秒あけてマスコンを強める操作を繰り返し出力する

    • これにより、ゲーム上のマスコンをP7まで強めることができる

    • ゲーム上のマスコンを強めたくないときは、マスコンの入力をP4にすればよい (オフ以外の弱める操作はゲームに反映しないので)

  • 入力されるマスコンの状態がP0 (オフ) で、「ゲーム上でこうなっているはずのマスコンの状態」がP1以上の場合は、マスコンを切る (弱める) 操作を出力する

  • マスコンの操作を出力したときは、それに沿って「ゲーム上でこうなっているはずのマスコンの状態」も更新する

さらに、ブレーキについても、たとえばB7以下であれば「緩め」の操作を出力するようにすることで、操作性を改善できる可能性がある。
とはいえ、あえて操作性を悪くする (要求するハンドルを動かす幅を大きくする) という選択肢もあるだろう。
これを設定可能にする価値はあるかもしれない。

この記事が気に入ったらサポートをしてみませんか?