top of page

Simutrans本体開発入門~環境構築編~

 simu_poppo(@simu__poppo)です。

 昨年よりOTRPatchの開発に参加し、今年からは新バージョンのリリースなども対応しております。Simutransの本体開発は、スクリプト開発やアドオン開発などと比べても格段に難しいと思われていますが、本体開発ができるようになると欲しい機能を試作したり、気になるバグを直せるようになります。ここでは、「本体開発はやってみたいけど、どうやって始めたら良いかわからない」という方に向けて、本体開発の初めの一歩である「環境構築」を中心にお話ししていきます。


§1 本体開発に必要なもの一覧

 Simutransの本体開発については、日本語wikiにも詳しい説明があります(開発/ビルド方法 - Simutrans日本語化・解説)。それによると、なにやらいろいろなパッケージなどをインストールしないといけないようです。

 基本的に必要なものは、以下のものになります

  1. simutransのソースファイルたち

  2. ソースファイルからアプリケーションを作る(ビルド)ためのコンパイラ

  3. 2.において必要な外部の部品たち(ライブラリ)

  4. 1.を管理するためのgitと2.を行うためのmake

これらを全て揃えれば、本体を手元でも作ることができるようになります。


§2 まずは環境を整える

 さて、必要なものがわかったら早速ソースファイルを入手しよう、といきたいところですが、実はその前に用意するものがあります。それは、ソースファイルの管理を行うgitです。

 gitをインストールするついでに、必要になるライブラリ・パッケージ一式をインストールしましょう。


§2-1 linuxの場合

linux では、通常のライブラリ管理でできます。ここではUbuntuの場合の例を書きます。ターミナルで次のコマンドを実行します。

sudo apt update
sudo apt install make gcc gdb git zlib1g-dev libbz2-dev libpng-dev libsdl2-dev libminiupnpc-dev libfreetype6

Ubuntuのライブラリはaptで管理出来ます。必要なgitとmake、コンパイラであるgcc、その他の必要なファイルをインストールします。最初のsudoは管理者権限による実行です。


§2-2 macの場合

macも同様にできます。macの場合はhomebrew( https://brew.sh/index_ja )です。

homebrewをインストールし、ターミナルで次のコマンドを実行します。

brew install sdl2 libpng miniupnpc freetype

§2-3 Windowsの場合

 Windowsの場合はかなり煩雑になります。MSYS2を使うことで実行・ファイル生成できます(詳細は開発/ビルド方法 - Simutrans日本語化・解説)が、個人的にはよりライブラリ管理の楽なlinuxを使用することをおすすめします。

 Windowsでlinuxを使用するには、WSL (Windows Subsystem for Linux)というシステムを使用します。windows11であれば、管理者権限で実行したPowerShellからWSLシステムを有効化できます(PowerShellはスタートメニューの検索バーから検索して起動できます)。

wsl --install

または、「コントロールパネル→Windowsの機能の有効化または無効化」から「Windowsの機能」ウィンドウを開き、以下の2つの項目を有効化します(このウィンドウはスタートメニューの検索バーから検索することでもアクセスできます)。

☑Linux用Windowsサブシステム
☑Virtual Machine Platform(日本語環境の場合:仮想マシン プラットフォーム)

ここまで出来たらWindowsを再起動し、microsoft store等からlinuxのディストリビューション(Ubuntuなど)をインストールし、linuxのユーザーを作成します。

 linuxのユーザー作成まで完了したら、§2-1に従ってgit,gcc,makeなどの必要なライブラリをインストールしてください。

※WSLを使用して作成されたアプリケーションはwindows用ではなくlinux用になります。windows用のアプリケーション(simutrans.exe)を作成する場合はMSYS2を用いた環境構築が必要です。ただし、個人的なsimutransの機能開発とそのテストに限ればWSL上で十分可能です。


§3 ソースのダウンロード

 gitまでインストールが終わったら、ソースファイルをダウンロードします。ソースファイルは多くの人がgithub.comで管理しています。

これらのページにいくと、右上に「<> Code」と書かれた緑色のボタンがあります。ここを押すと、Cloneする方法が出てきます。Cloneすることによって、自分の環境(ローカル)にソースファイルをダウンロードできます。  たとえばOTRPの場合は、作業用のフォルダを作ってそのフォルダに移動した後、ターミナルで次のように入力します。

git clone https://github.com/teamhimeh/simutrans.git

しばらくすると、クローンが終わり、大量のソースファイルが表示されます。


§4 とりあえずビルドしてみる

 ソースファイル一式のダウンロードが終わったことを確認したら、まずはビルドできるかどうかを確認してみましょう。

 ダウンロードしたソースファイルの中から、ビルドの設定事項であるconfig.defaultファイルを作ります。

cp config.template config.default

次に、config.defaultファイルを開きます。次の項目を探して、行頭の#を削除しコメントアウトを解除します。

・macの場合

BACKEND = sdl2
COLOUR_DEPTH = 16
OSTYPE = mac
OPTIMISE = 1
AV_FOUNDATION = 1
MULTI_THREAD = 1

・linux、WSLの場合

BACKEND = sdl2
COLOUR_DEPTH = 16
OSTYPE = linux
OPTIMISE = 1
MULTI_THREAD = 1

設定ファイルの作成が完了したら、ソースコードのあるディレクトリに移動します。

そのディレクトリに移動したら、Makefileというファイルがあることを確認します。Makefileがあり、makeライブラリのインストールが終わっていれば、次のコマンドによってビルド出来ます。

make

並列コンパイルできる環境の場合は、-j 4 (4は論理コア数)を追加して高速でコンパイルできます。

make -j 4

うまくいくと、build/defaultフォルダに「sim」というファイルができます。実行してみましょう。

cd build/default
./sim

simというファイルが生成されていない場合、またはmake実行時にエラー文が表示されていた場合は、エラー文の内容に従い、不足するライブラリなどを追加でインストールしてください。

 正しくsimが生成、実行できれば、本体開発の準備は全て完了です。本体開発生活を満喫しましょう


§5 本体開発ができたら

 本体開発によって新機能の導入やバグの修正ができたら、まず手元で新バージョンを起動して確認(デバッグ)しましょう。問題無く動作していれば、公開して確認や統合を目指しましょう。

 公開方法はいくつかあります。自分でgithubのアカウントを生成し、githubにpushする方法、そしてpatchという差分ファイルを生成する方法です。githubへのpushはここでは割愛しますが、patchの生成は次のように行います。

git diff > new_simutrans.patch

new_simutransは自分の作った機能の名前に変えてください。これで、自分の行った新機能に必要なソースコードの変更内容がpatchファイルに出力されます。

 simutrans forumやsimutrans交流会議などで新機能の概要やスクリーンショットとともにpatchファイルを公開してみましょう。


§5-1 patchファイルの当て方

 他の人が公開しているpatchファイルを使って新機能やバグ修正のなどを試す方法です。

  1. patchファイルをダウンロードする(ここでは「new_simutrans.patch」とする)。

  2. patchファイルを、simutransソースコードのあるディレクトリに移動する。

  3. simutransソースコードのあるディレクトリで、patchをあてる

patch < new_simutrans.patch
  1. makeコマンドでビルドする。


§6 VSCodeについて

 さて、本体開発を始めようと§3または§4まで進めた方は、ソースファイルの多さに驚くかもしれません。これだけのファイルの中から自分の追加したい機能・直したいバグの箇所を特定するのは容易ではなく、そもそもファイルを管理するのも大変です。そこで、VSCodeの使用をおすすめします。

 VSCode(Visual Studio Code)とは、大雑把に言うと「超高機能なテキストエディタ」です。どれくらい高機能かというと

  • ファイルだけでなくフォルダも管理できる

  • テキストだけでなく画像やmarkdown、エクセルファイルなど様々な形式に対応

  • ターミナルを内蔵している

  • VSCode上でgitやssh接続、WSLへのアクセス等ができる

といった感じです。最近はCopilotによるプログラミング支援なども対応しているようです。

 VSCodeはVisual Studio Code - The open source AI code editorまたはmicrosoft store、アプリストア、linuxならsudo apt install codeでも取得できます。

 ここでは、WindowsでWSLを使用して本体開発している場合に、どのようにVSCodeを活用するかを説明します。


§6-1 WindowsにVSCodeを入れる

 上記HPからインストーラーをダウンロードし、インストールします。

§6-2 VSCodeからWSLにアクセスする

 VSCodeを開き、左上のEXTENSIONSから「Remote Development」と「Remote - WSL」という拡張機能をインストールします。

新規ウィンドウを開いたときの画面。Connect to...をクリックするとWSL等に接続できる。
新規ウィンドウを開いたときの画面。Connect to...をクリックするとWSL等に接続できる。

 VSCodeで新しいウィンドウを開き、「Connect to...」をクリックします。すると、「Connect to WSL」という選択肢が表示されるのでクリックします。

WSL表示時のウィンドウの左下。「WSL: Ubuntu」と表示されていればWSLに接続できている。
WSL表示時のウィンドウの左下。「WSL: Ubuntu」と表示されていればWSLに接続できている。

 しばらくすると、同じような画面が表示されるので、左下が「>< WSL:Ubuntu」等となっていることを確認し、「Open Folder...」をクリックしてsimutransのソースフォルダに移動します。

WSLに接続しOpen Folderした状況。このようにソースファイル一覧が左側のEXPLORER欄に表示される。EXPLORERからファイルをクリックすると、そのファイルを表示・編集できる。
WSLに接続しOpen Folderした状況。このようにソースファイル一覧が左側のEXPLORER欄に表示される。EXPLORERからファイルをクリックすると、そのファイルを表示・編集できる。

 すると左側に存在するファイル一覧が表示されます。クリックすることでファイルを開き編集できるようになります。さらに、上にあるTerminalをクリックすると、ターミナルを起動することもできます。VSCodeのターミナル上でgitやmake、さらにはビルドしたsimutransの起動など、linux上のコマンドの処理を全て行うことができます。

 VSCodeは当然WSLだけでなくWindowsやmac内のファイル編集にも使えます(Connect to...を行わず、直接Open Folder...を行ってください)。また、EXTENSIONSから拡張機能を追加すると、gitの管理やソースコードのレビューなど様々な活用ができます。

 また、VSCodeではフォルダ内のファイルの網羅検索を使えるので、ある関数がどのファイルで呼ばれているのか、どのファイル内で定義されているのかなどを探すのにとても役立ちます。


 本体開発に必要な設定、事前に行うべき設定は以上になります。今日ではAIの発展により、うまく環境構築やビルドができない場合でも生成系AIに聞くことで解決策を探すことができるほか、ソースコードの開発もAIの補助を活用することができます。ぜひ新たな機能を試作してみてください。


コメント


bottom of page