himeshi’s blog

Simutrans本体改造まわりのお話をつらつらと

std版OTRPの方針について

ひめしです。本日OTRP v14_5をリリースしました。

 OTRPはもともと本家standardへの統合を目指して開発していましたが、いろいろあって本家統合を放棄したのが昨年の11月末のことでした。その後は専用配布ページをオープンし(といってもgithubリポジトリmarkdownを置いただけですが)、ほそぼそと修正アップデートを重ね、さらにsimutrans extendedへの移植を行い、今年6月にextendedへの統合を果たしました。

extendedへの統合を果たしたからといって全てが終わったわけではありません。OTRPには依然として不完全な箇所が多く存在しており、これからもそれが顕在化するごとに一つ一つ対処していくことになります。extendedに統合をしていただいたからこそ、私には保守を続ける責任があります。

 

ところで、最近のOTRPは純粋な「二車線パッチ」の機能以外にも様々な機能を搭載するようになりました。height制限を64に拡張したり、交差点一時停止(結局コレは失敗作に終わりましたが)を実装してみたり、道路信号の方向制御を実装したりといった具合です。現在の(standard版)OTRPはこのように独自機能を拡大しています。

するとOTRPは私、ひめしが運営する本家simutransの拡張版ということになるのですが、コレだけ聞くとjamespetts氏のsimutrans-extendedと同じことをやってるように聞こえます。本体改造にとって配布チャンネルはまとまっていればまとまっているほど良いので、私がやっているOTRPプロジェクトは全てextendedに一本化すれば良いという話になります。

しかし、私はそうはせず、今後も独自に「simutransひめしエディション」の開発・配布を続けていくつもりです。というのも、extendedはもはやstandardとは別ゲーであり、セーブデータの互換性もほぼなく、standardが好き・慣れている人々にとって到底受け入れられるものではないからです。

そこで「simutransひめしエディション」では以下を開発の原則にしています。

  • アップデート時は常にsimutrans standard nightlyに追従する。あくまでもstandardの拡張版であり、本家でされた改良、バグ修正の恩恵をプレイヤーが確実に受け取れるようにする。アップデートで必ずnightlyに追従することで本家の変更をmergeすることが困難になるのを防ぐ。
  • 独自アドオンを要求する機能は搭載しない。standard用のアドオンがあればそれで完結する設計にする。ただでさえ64, 128, extended用のpakとフィールドが分かれているsimutransのアドオン界隈において、OTRP独自の規格を設けてもうまくいくはずがないからである。
  • セーブデータの互換性を確保する。いつ何時も、standardのセーブデータは必ずOTRPで読み込めるようにする。standardのセーブデータを読み込んだときは、OTRPで開いたときにはstandardと全く同じ挙動をするようにする。(つまりOTRPはただのstandardとしても使える。)OTRPのセーブデータもOTRP独自の機能まわりを犠牲にすればstandardで読み込む手段を提供する。(v14_5で実装済み)
  • UIの互換性に配慮する。standardからOTRPに乗り換えてきた人にとって、OTRPの機能について何も知らなくてもstandardとして遊ぶ分には困らないようにする。プレイヤーはOTRPの機能について少しずつ探求することができる。(extendedは始める前にある程度extended独自のゲームシステムについての知識がないと不自由する傾向にある。)

すなはち、「便利になったsimutrans standard」を目指すという話です。standardで遊ぶならOTRPで遊んだほうがよい、そう皆さまに思っていただけるようなプロジェクトにしたいと思っています。

あくまでOTRPはstandardの拡張であり続けるつもりなので、OTRPで追加した機能は必要に応じてextendedにpull requestしていきます。extendedにはextendedの設計思想があるので、これに合致すると判断した機能のみextendedに持っていくことになります。(例えば交差点一時停止は今のアルゴリズムではダメ。)

ちなみにバージョン番号の付け方ですが、v12以降はセーブデータの構造が変わったときにmajor number(v14_5の14の部分)を上げることにしています。データの構造が変わらないアップデートのときはminor numberが上がります。セーブデータに記録されているのは実はmajor numberだけです。

 

OTRPは常に皆さまのためのsimutransでありたいと思っています。どんな些細なことでもtwitter#OTRPatch のタグをつけて投げていただければ可能な限り対応いたします。OTRPのコード自体の信頼性がどうしても本家standardより大きく劣るので皆さまにご迷惑をおかけすることも多いと思いますが、できる限りサポートさせていただいて信頼していただけるプロジェクトにしていく所存です。

今年の夏はいろいろと忙しいので細々とやっていくことになりそうですが、今後ともよろしくおねがいします。