NetSimutransのアドオン追加をソシャゲみたいにしてみた話

皆さんこんにちは、初めましての方は初めまして。

またお会いできた方はお久しぶりです。

「AhozuraNS」の運営者・M_Kasumiでございます。

以前、極力安く・極力楽にNS運営してみた!という記事で、NetSimutrans(NS)運営上のノウハウを紹介しました。

あの記事から約1年、AhozuraNSの運営をさらに楽にするため、ある試みを行ったのでご紹介します。

あの記事以降のAhozuraNS

前回記事時点で3期目だったAhozuraNSですが、現在4期目が開催されています。4期の開始にあたって新たな参加者を迎えたのですが、初心者だったはずのその人がいきなり景観プレイガチ勢と化していて恐ろしいです。

NSのシステム自体は、前回記事で紹介した方法で問題なく安定的に稼働を続けています。自動セーブのおかげで大きなデータ欠損もなく、参加者によるアドオン追加申請もbotによってスムーズに行われ続けています。

そして、本体は僕の友人が開発している金沢大版OTRPになりました。「会社間で車両を譲渡できる」「架線下DCの最高速度が架線に依存しない」「公共事業と自社を行き来するツールがある」「サーバにINする際の会社と座標を指定できる」……などなど、様々な「痒い所に手が届く」便利機能が追加されています。

その他は基本的には前回記事のまま稼働し続けているのですが、人間は一つ便利になってもその先の不便が気になってしまうものです。本記事ではそこの改善について紹介したいと思います。

アドオン追加って面倒じゃね?

NetSimutransでは、参加者の全員がサーバ側と同じアドオンを過不足なく入れている必要があります。そのため、新しいアドオンを追加する際は、サーバ管理者がアドオンを取りまとめ、サーバにアドオンを追加するタイミングで参加者全員が一斉に追加作業を行います。

前回記事では、アドオンの取りまとめを行うbotを稼働させることでサーバ管理者(私)の省力化を達成したわけですが……

サーバ側でアドオンの更新を行った場合、私からの告知を受けた参加者が次回Simutransを起動する際、所定のリンクからアドオンセットをzipでダウンロードし、それを解凍してpakフォルダ内に配置する、という作業が必要になっていました。

このように、アドオン追加は参加者側で面倒な作業を伴うため、頻繁には行っていませんでした。しかしアドオン作者としては、アドオンを作ったらすぐ使いたいこともあるものです。

そこで考えたのは、NSを「ソシャゲ」にすることです。

少しでもソシャゲに触れたことがある方ならご存知のことと思いますが、ソシャゲでは頻繁にデータのダウンロードが発生します。しかし当然、「所定のリンクへのアクセス」「zipの解凍」「正しいディレクトリへの配置」といった作業を手動で行う必要はありません。

ソシャゲのデータ更新においてプレイヤーのすべきことは「普段通りにソシャゲを起動して待っている」ことだけで、データのダウンロードが終わればいつも通りゲームが起動します。

NSのアドオン追加でもこれができたら便利ではないでしょうか?

実装

そうと決まれば、さっそくこれを実現するプログラムを組んでいきましょう。

プログラムの流れは単純明快。

  1. サーバ側のアドオンセットのバージョンを確認
  2. アップデートがあれば更新データをダウンロード(アップデートがなければ4に飛ぶ)
  3. zipを解凍してpakフォルダ内に配置
  4. Simutrans本体を起動

実装はC#で行いました。C#を選んだ理由は特にありません。こんな単純な動作しかないプログラムなので、多分他の言語でも全然問題ないでしょう。

稼働

思い付きで適当にVisual Studioをいじっていたら秒で完成しました。

PakUpdateChecker.exeが今回作ったプログラム

上記3ファイルをSimutrans本体と同じディレクトリに配置すれば準備完了です。今後、サーバに入る際はSimutrans本体ではなくPakUpdateChecker.exeを起動するようにします。

アドオンの更新がなければ、そのまま同じディレクトリに存在するSimutransが起動されます。しかし、サーバ側に更新データがあった場合は……

このような表示になり、zipのダウンロード・解凍が実施され、その後にSimutransが起動されます。

ちなみに表示されている「20220104」といった数字はアドオンセットを管理しているGitHubで付けたタグ名であり、便宜上日付で命名していますが、他の名前にもできます。

運用してみて

多分、アドオン追加時の面倒事がかなり少なくなったのではないでしょうかね。

ということで、最近は参加者全員にこのプログラムを使ってもらい、数日に一回はアドオンの追加を行っています。

おわりに

いかがでしたか?

万が一こちらのプログラムを自分のNSに導入したいという方がいらっしゃいましたら、私のTwitterなどにご連絡ください。なんとか対応します。(但し、通信やダウンロードに失敗した場合の処理などを実装していないため、配布するほどのクオリティーではないことは申し添えておきます。)

コメント

タイトルとURLをコピーしました