himeshi’s blog

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

2025年のOTRP

この記事は、Simutrans Advent Calendar 2025 22日目の記事です。

adventar.org

本記事では昨年と同じく、OTRPの今年の動きをかんたんに振り返ってみようと思います。

開発状況

今年はv42_1からv48_2まで計28回のリリースが行われました。アップデートの細かなヒストリーはGitHubのReleasesを参照していただければと思います。

github.com

今年からsimupoppoさんに開発を主導していただくようになったので、正直私自身も最近のリリース内容を細かく把握できなくなっています。プレイヤー目線から目立つ追加機能を列挙してみると以下のようになると思います。

  • 市内建築物の所属都市を変更する機能を追加
  • Route cost or 所要時間ベース経路検索 をgoods categoryごとに設定できるように
    • 旅客は所要時間ベース、郵便はRoute costといった遊び方ができるようになりました。
  • 路線に所属する全編成を車庫に即時転送するボタン
  • 振分信号まわりのアップデート
  • 道路に"建物を接道しない"オプションを追加
    • 郊外の高速道路沿線に突然市内建築物が生えるといったことがなくなりました。
  • 駅間最高速度
  • 追い越し車線利用規制

今年は"かゆいところに手が届く"アップデートが多かった印象です。私自身が開発した機能もいくつかありますが、大部分はsimupoppoさんによる貢献によるものです。本当にありがとうございます。

OTRP利用ログ解析

今年は比較的安定して自宅鯖を稼働させられたこともあり、1年を通じてログ収集ができました。まずは、直近11月の日別アクティブユーザ数のグラフです。

ユーザ数はIPv6アドレスを用いた識別によるものです。ユーザ数としては前年同月比1割増といったところでしょうか。

11月時点ですでにほとんどのユーザがv44以降になっており、去年以前の古いバイナリがずっと使われているケースは少なそうです。

つづいて、1年を通じた遷移です。12月は集計日の都合で数が少ないので11月までで見てください。

MAUは2023年比で数字だけみると1.5-2倍程度になっているのですが、これは使用している識別子がv4アドレスからv6アドレスに変わった影響だと考えています。(v6アドレスは同じデバイスでも定期的にアドレスが変わるため。)

傾向をみると、7月以降に活発に遊ばれるようになったようです。新バージョンリリース件数に着目すると、1-6月が3件だったのに対し7-11月で15件のリリースがあったことから、新バージョンのリリースに反応して多くのみなさまに遊んでいただいたと考えられます。

最後に、OTRPユーザにおけるpakセットの勢力分布図です。最近の傾向を見るために、今年7月以降のデータのみにフィルタして集計しています。

去年の傾向とは大きく変わり、再び128jpベースのpakセットが多く使われるようになりました。Simutrans Addon Portalの統計でも最近は128jp用のアドオン投稿が特に活発なようですので、128jpの人気が伺えます。

simutrans128.blog.fc2.com

OTRPを手離れさせるために

2021年に就職を理由として一度OTRPの開発終了を宣言しましたが、比較的プライベートの時間を持ちやすい仕事だったこともあり4年ぐらいはなんだかんだでいろいろやっていました。

ですが、Simutrans以外のことにも時間をさかなければならないことが増えてきたり、私自身が今のOTRPに満足してきてしまっていたり等いろいろありまして、今年に入ってからOTRPの開発にあまり時間を割かなくなっていきました。やっていることが本業の仕事とほぼ同じになってきてあまりプライベートとしてのリフレッシュにもならなくなってきたという事情もありますorz

他方、この一年のsimupoppoさんの貢献量がものすごいものがあり、これまでと同様にひめしが一人で判断・管理する体制では回らなくなってしまいました。

今までは(コミュニティのサポートはあったものの)なんだかんだ一人で開発、運用していたので全ての開発プロセスが属人的なものでもよかったのですが、この状況を機に世の中のオープンソースプロジェクトと呼ばれるものが最低限やっているとされる体制を構築して、人としての単一障害点を排除することにしました。

  • コードのリポジトリへの反映
    • 定型的な軽微な変更を除いてmain branchに直接コミットするのをやめ、pull requestを通じたmergeに統一。
    • Pull requestではDescriptionに変更の背景を書けるため、後から当該箇所の変更の理由を知りたくなった時に役立つ(はず)。
    • Pull requestでは最低限のチェックとしてビルドが通るかのCIテストを導入。これにより、ある日突然main branchがビルドできなくなることを防止。
  • simupoppoさんへのcommit、merge権限の付与
    • Pull request reviewを通じて、ある程度コードベースに慣れてきたことを確認してから付与した。
  • Pull requestのマージルールの変更
    • 当初はひめしのapproveを必須としていたが、軽微な変更だと考えられるもの、およびひめしから1週間以上レスポンスがないものについてはレビューなしでのself mergeを可能とした。
  • リリース用バイナリをGitHub actionsで自動ビルドするようにした。
    • macを持っていない開発者が運用に入ってもmac向けバイナリを配布できるようにした。
    • この過程で、Intel macのサポートを終了。

これらの取り組みの結果、今ではsimupoppoさんに開発からリリースまで全てをお願いできるようになりました。

OTRP関連でまだ残っている属人性といえば、ログ収集基盤ぐらいでしょうか。Simutransの特性上、お金のかかるサービスに依存するとどうしても属人性を排除できないので難しいところです。本家もサーバまわりはIssacさんに依存しており、何か障害が起こるとIssacさんによる対応を待たねばならないということがよくあります。同様の理由で、Apple Developer Programが必須なmac用バイナリのnotarizationも現在のところ対応を予定していません。

コミュニティ活動

今年1月に、「超シムトラ井戸端会議」を開催しました。20名以上の方にご参加いただき、濃密な交流の時間を過ごしていただくことができたのでやってよかったと思います。大人数を集めて丸一日シムトラの話をするオフ会はコロナ期間で一旦途絶えていましたが、去年あたりからまた開催されるようになったのはまた良いことだと思います。

私からは、所要時間ベース経路検索の仕組みを詳細に解説する発表をしました。スライドは下にありますので、まだ見ていない方はぜひ参考にしてください。

speakerdeck.com

そのほかにも、韓国の技術者カンファレンスでSimutransの布教を試みました。ゲーム自体の将来性を考えるとプレイヤー層を拡大することは重要課題なのですが、実際やってみると難しいですね...

おわりに

今年はひめしの単独開発体制から、simupoppoさんとの共同開発体制に移行したという点で大きな転換点となる年だったかなと思います。私自身のSimutransとの関わり方としては、OTRPの開発をするというよりは1プレイヤーとしてまったりNSを楽しんでいた一年でした。参加しているNSについては今年のアドベントカレンダーから記事が出ているので、ぜひお読みいただければと思います。

kanyao1230.hatenablog.com

ひめしの承認なしでOTRP開発のすべてが進むようにすることについては、正直コードの保守性の観点から葛藤がありました。しかし、Simutransはフリーのゲームですから、バグの少なさや将来の保守性よりは今すぐにもっと面白くて革新的なゲームにすることを優先すべきです。OTRPも開発を始めてからしばらくは私も本当にひどいコードをたくさん書いていましたし、それでもコミュニティのみなさまに人柱になっていただきながらひたすらバグ潰しと機能拡充を続けてきたゲームです。もちろんバグを減らすことは大変重要なトピックではあるので、本業やその他のお仕事で得た知見をできる限り還元はしたいと考えていますが、それがOTRPの進化を阻害したりコントリビュータの方を遠ざけてしまうことがないようにだけはしようと考えています。

2024年の記事を読み返すと負債解消をやるぞと書いてありますが、全くやれていないですねorz 来年はOTRPの開発にどれくらい携われるかはよくわかりませんが、もし時間が取れたらマルチスレッド化を含むパフォーマンスチューニングの話をやりたいなぁと考えています。来年もまたOTRPをみなさまに遊んでいただけるとうれしいです。