前回の「ToRaiLの中身 00」では、ToRaiLがどんなところから始まり、現在どんなものを目指して作っているのかをご紹介しました。
今回からは、中身の話に入っていきたいと思います。
ToRaiLを作り始めたとき、最初にやりたかったこと。
それは、とても単純でした。
自分で作った列車を、自分で作った線路の上で走らせること。
今ではいろいろな機能が付いていますが、すべての始まりはここでした。
最初はBlenderで走らせるつもりだった
私はもともとBlenderで鉄道車両を作っていたので、最初はそのままBlenderの中で列車を走らせればいいのではないかと思っていました。
線路をぐるっと一周させて、その上を自分の作った列車が走る。
それだけならBlenderでもできるのではないか。
そこでAIに相談してみたところ、提案されたのが「Godot」というゲームエンジンでした。
Blenderは基本的には3Dモデルなどを制作するためのソフトです。
列車を動かし、操作し、これからいろいろな機能を追加していくのであれば、ゲームを作るためのGodotを使った方がいいのではないか、という提案でした。
問題は、私自身がゲーム制作についてほとんど知らなかったことです。
プログラムのコードを書くこともできません。
「ほとんどAIにお願いすることになるけれど、それでもできるのかな?」
そんなところからのスタートでした。
AIを使った制作そのものについてはnoteの「ToRaiL制作ノート」でいろいろと書いているので、ここでは省略します。
とにかく、やってみることにしました。
まずは線路を一周させる
最初に作ったのは、一周するだけの線路でした。
ToRaiLの線路は、短い線路のパーツを連続して並べることで作っています。
直線なら、そのまままっすぐつないでいく。
カーブなら、短い線路を少しずつ曲げながら連続して配置していく。
そんな方法で一周する線路を作りました。

現在、この線路の作り方については別の方法も考えていて、今後変わる可能性があります。
ただ、最初のToRaiLはこの方法で始まりました。
そして、その線路の上に自分で作った車両を置いて動かしてみる。
けっこうあっさりと走りました笑
今から見れば本当に単純なものなのですが、自分で作った車両が自分で作った線路の上をぐるっと一周した。
最初は、それだけでもかなり嬉しかったのを覚えています。
そして鉄道というものは、基本的には線路の上を走ります。
アクションゲームのようにプレイヤーが自由にあちらこちらへ移動するわけではありません。
線路の上を列車がきちんと進むというのが大切です。
この一番基本的な仕組みができたことで、ToRaiLの土台になる部分は意外と早い段階でできたことになります。
あとは、この土台の上に一つずつ機能を積み重ねていくことになりました。
走った。でも、よく見るとおかしい
最初の列車は確かに一周しました。
ところが、よく見ると問題があります。
カーブです。
実際の鉄道車両には、通常、車体の前後に台車があります。
カーブでは前後の台車がそれぞれ線路に沿って向きを変え、その上に載っている車体がカーブの内側にはみ出すように進んでいきます。
ところが最初は、そうなっていませんでした。
車体の中心を基準にして線路の上を走らせていたため、カーブでは車体の中心だけが線路に沿い、前後の台車が線路から外れてしまいます。

これでは、いくら一周できても列車が脱線しながら走っているように見えてしまいます。
そこで、車体と台車を別々にしました。
車体をそのまま線路に沿わせるのではなく、前後の台車を線路に沿って動かす。
そして、その二つの台車の上に車体が載っているような仕組みに変更しました。

こうすると、カーブでは台車がきちんと線路に沿って向きを変え、その上の車体は自然にカーブの内側を通ります。
当たり前なことなのですが、これで「線路の上を車両の中心が移動している」という状態から、実際の鉄道車両の動きに近いものになりました。

物理演算は使わないことにした
列車をもっとリアルにしようと思えば、さらにいろいろなことができます。
その一つが物理演算です。
簡単にいえば、車両の重さや加速・減速、そこに加わる力などを計算して、物理法則に沿って車両を動かす方法です。
一時期は、こうした仕組みをToRaiLにも取り入れるか考えました。
ただ、最終的には採用しませんでした。
ToRaiLで私が見たいのは、精密な鉄道シミュレーションではありません。
鉄道模型のように、列車が線路の上を自然に走っているように見えれば、まずはそれで十分です。
より複雑な仕組みを入れることよりも、必要なところまで作って、その先へ進むことにしました。
操作もできるだけシンプルに
列車の基本操作も、できるだけ簡単にしています。
キーボードの上下キーで加速と減速。
左右キーで進行方向を切り替える。
加速とブレーキについては3段階に分けてあり、操作によって加速度、減速度を変えられるようにしています。
画面下には左下にはアナログの速度計、右下にはデジタル表記してあるので、現在どのくらいの速度で走っているのかを確認できます。

ToRaiLは、本格的な運転シミュレーターを目指しているわけではありません。
細かな運転操作そのものよりも、自分の好きな列車を好きな風景の中で走らせることを重視しています。
そのため、操作についても複雑にしすぎないようにしています。
自分で運転しない「自動運転」
もう一つ、比較的早い段階で入れたのが自動運転です。
自動運転といっても、現在のところ複雑なものではありません。
設定すると、列車が低速で線路を走り続けます。
ただ、この機能はToRaiLにとって結構重要です。
鉄道模型を楽しむとき、いつも列車を操作しているとは限りません。
列車を走らせて、ただ眺める。
私はこれも鉄道模型の楽しみ方の一つだと思っています。
ToRaiLでも同じように、列車をゆっくり走らせて、その風景を眺めたい。
そのために自動運転を入れました。

そして、自動運転にはもう一つ理由があります。
現在は最初に作った小さなローカルレイアウトだけではなく、もっと大きなレイアウトも制作しています。
レイアウトが大きくなれば、そこを走るすべての列車を自分一人で操作するのは難しくなります。
自分が操作している列車とは別に、ほかの線路では別の列車が走っている。
鉄道博物館などにある大きな鉄道模型レイアウトのように、あちらでもこちらでも列車が動いている。
そんな風景にしたいと思っています。
現在はまだ駅に自動的に停車するところまでは作っていませんが、将来的には自動運転についても、もう少し機能を増やしていきたいと思っています。
自動運転は「撮影」にも必要だった
そして最近では、自動運転にはもう一つ重要な役割ができました。
撮影です。
前回、現在のToRaiLは「鉄道模型」であると同時に、「鉄道の情景を撮影するスタジオ」のような存在になってきたと書きました。
動画を撮影するとき、自分で列車を操作しながらカメラも操作するのはなかなか大変です。
自動運転で列車が走ってくれれば、私はカメラの方に集中できます。
列車を走らせて、いい場所まで来たところをスクリーンショットにする。
カメラを固定して、そこを通過する列車を動画にする。

最初は単に「列車を眺めるため」に付けた自動運転でしたが、ToRaiLが撮影スタジオとして使われるようになったことで、今では撮影を助ける機能にもなっています。
「走る」ができると、次が欲しくなる
こうして、最初はただ一周しただけだった列車が、少しずつ現在の形になっていきました。
前後の台車がきちんと線路を追い、その上に車体が載って走る。
加速して、減速して、止まる。
自分で操作することもできれば、自動で走らせて眺めることもできる。
まずは「列車を走らせる」という、ToRaiLの一番基本になる部分ができました。
ところが、ちゃんと列車が走るようになると、それだけでは物足りなくなってきます。
次にやりたくなったのは、以前から好きだったものです。
方向幕を、ぐるぐる回したい。
次回は、ToRaiLの方向幕やトレインマークについて書いてみたいと思います。