中学生の頃、本に載っている N88-BASIC のサンプルプログラムを改造したりしてよく遊んでいました。(1995)
列車運転ゲームを作るためにプログラミングを始めたのではなく、ただ単に画面の絵が自分の思い通りに動くのが楽しくてプログラムに興味を持ちました。
私は小さい頃から電車が好きだったようで、電車を運転するゲームが作れるのではないかと思いました。
当時は、"電車でGO!" や音楽館の "Train Simulator" などのゲームはなかったので、特に完成イメージなど持たずに、そのときの思いつきで作っていました。
初めは、架線柱に見立てた四角い枠が後ろに流れるだけでした。(1996)
キーボードで景色の流れるスピードを調整できるようにして、速度計を付けました。
一定間隔でプラットホームが出てくるようにして、"列車を停止位置に上手く停める" ゲームになりました。
運転台の計器を少しずつ再現していきました。
この頃の私は、鉄道車両の仕組みなど全くわかりませんでした。
そのため、高校からの帰宅時によく運転台にかぶりついて計器の動きを観察していました。
私は、当時斬新な 209 系が好きだったので、209 系の運転を再現したかったのですが、通学時にいつも見ていた
113 系の運転台を真似したので、おかしなものができました。
それまで運転台などあまり見たことがなかったので、どの車両も同じようなものだと思っていたのです。

209 系に乗って初めて運転台を見たとき、すっきりとした計器類に驚いた記憶があります。
"車両によって運転台がなぜこんなに違うのか" という疑問が、車両の仕組みに興味を持った理由かもしれません。
一方、路線にはなぜか興味がわきませんでした。
路線は、特にモデルを決めることなく、草原にひたすら直線線路でした。
この傾向は、現在の BVE まで継承しているような気がします。
この頃に、Quick BASIC に移行しました。
EXE 形式にコンパイルすることで処理速度が速くなるので、細かく描写する余裕ができました。
さらに、色数が 8 色から 16 色に増えることが大きな変化でした。
ついにカーブに挑戦しました。
当時の数学レベルで、座標を計算するのに苦労したような気がします。
カーブを作ったのですが、速度制限は付けませんでした。
まだ "停止位置に停める" だけのゲームだったのです。
ATC 信号が出るようにしました。
しかし、知識が全くなかったので、0 から 120 まですべての信号が出たり、間違いだらけでした。
ATS-S も作りました。
通学時によく見ていたので動作は間違いなかったのですが、MS-DOS なのでビープ音しか鳴らすことができず、かなり間抜けでした。
駅に駅名と時刻を決めるようにしました。
路線は、時刻表の営業キロを見て駅間を合わせただけ、カーブはランダムで出現するというものでした。
まだ線形を再現するまでには至りませんでした。
しかし、これでようやく "定時に運転する" という要素が増えました。
また、駅名と駅間、ダイヤをファイルに記述するようにして、"路線の選択" ができるようになりました。
運転終了時に総合得点を付けて、ランキングを作る機能も付けました。

この頃、音楽館の Train Simulator を知って、購入しました。
当時の Train Simulator は、運転画面が小さくコマも粗かったので、速度と残り距離の数字とのにらめっこで、自分がイメージしていたものと違いました。
しかし、DirectSound のリアルな音が出るのに憧れました。
私は、Windows アプリケーションが作りたいと思い Visual Basic を購入しました。
Windows の登場によって、DOS/V 機に切り替わって、PC-98 シリーズが消滅していく時代でした。
私は、このゲームを Windows 上で動かしたいと思って何度か Visual Basic への移行を試みましたが、動作が遅くて断念しました。
Pentium 120 MHz の鈍さに不満を感じでいたので、お金を貯めて Celeron 300 MHz の PC を組み立てました。
もう一度、Visual Basic への移行を試しましたが、ゲームができるほど速くなりませんでした。
調べた結果、BASIC 互換の一部の処理が重いことがわかって、WinAPI に置き換えたところスムーズに動くようになり、Windows への移植に成功しました。(1999)
線路を 50m 間隔の点で表現することを考えました。
これによって線路の配置が自由にできるようになり、勾配も実現しました。
つまり、ようやく線形が再現できるようになったのです。
これで初めて島式ホームが可能になりました。
さらに、信号機や速度制限、地上子などの定義も加えました。
これをテキストファイルで定義するようにして、これが現在の "路線データ" の原型になりました。
ATS-P も再現して、ここで BVE の基盤ができました。

Windows アプリケーションのため、WAVE ファイルを簡単に鳴らすことができるので、発車ベルを再現しました。
しかし、走行音を鳴らすにはピッチを変えなければならないので、DirectSound が必要でした。
Visual Basic から DirectSound を利用する方法を調べて、導入することができました。
私は、VVVF インバータの独特な制御音が好きだったので、それを再現したいと思いました。
初めは、一生懸命 MIDI で作っていました。
奇妙な音で、とてもインバータの音に聞こえませんでした。
録音した実際の音を何とか使えないかと思い、波形編集して音源を作ることを考えました。
MIDI の音と差し替えてみたところ予想以上にそっくりな音が出て、非常に感動的でした。
この頃に、タイトーの "電車でGO!" を知りました。
CG による運転画面なので、ビデオ映像特有のカクカクがないと思い、興味を持っていました。
プレイステーション版の "電車でGO!" が発売されてしばらくしてから、購入して遊んでみました。
ところが、プレイすればするほど非現実的なところが見えてきて、とても満足できませんでした。
しかしながら、きれいなグラフィクスにはやはり憧れました。
Visual Basic から Direct3D を利用する方法を見つけました。
しかし、当時まだオブジェクト指向すら理解していなかった私には、 非常に難易度の高いものでした。
ヘルプを見ても、難しい用語がずらずら並んでいて、理解するのに大変苦労しました。

Direct3D によって、テクスチャのついたきれいな運転画面ができあがりました。(1999)
"電車でGO!" に影響してか、減点方式の採点機能と忠告メッセージを加えました。
ようやく人に見せられるレベルになったと思い、ホームページを開設して公開しました。(2000)
|