🎉

フリーゲーム:Simutransの開発環境を整える(Standard版)

2022/11/17に公開

はじめに

フリーゲームの Simutrans の開発環境を構築してみましたので、今回はその手順を記事にしてみました。
Windows10 での環境構築となります。

  • Windows 10
  • Visual Studio Community 2022
  • vcpkg
  • C++

Simutrans について

Simutrans とは、オープンソースで開発・公開がされている経営シュミレーションゲームです。
1 企業となり鉄道・自動車・船舶・航空機をなどを使い、乗客と貨物を目的地へ運び利益を出しながら都市を発展させていく内容となっています。

新機能の追加やバグ修正などは、有志のプログラマーが公式フォーラムを通じて開発を行っています。
今回は、その Simutrans の開発環境を構築していきましょう。

必要ツールを揃える

Microsoft Visual Studio

https://visualstudio.microsoft.com/ja/

公式よりVisual Studioを入手するために、Microsoft の公式よりダウンロードをします。
Simutrans はC++で作られており、また公式が推奨してる開発環境もVisual Studioなため。
CommunityProfessionalEnterpriseの 3 つがありますが、後者 2 つは有料版なのでCommunityをダウンロードします。
インストール時には、C++によるデスクトップ開発のみを選択します。

VisualStudioのインストール時にC++のみを選択する

インストール場所などは、各自の任意の場所へ。

Git

https://git-scm.com/
ライブラリやソースコードを入手するために、github にあるのをクローンで入手する必要があるため、
Git を導入するため公式よりダウンロードをします。
公式サイトの Download for Windows より実行ファイルをダウンロードして、インストールを行ってください。

vcpkg(※要 Git)

https://github.com/microsoft/vcpkg

以前ですと、ライブラリを入手するために別途 DL してビルドしていましたが、最近のは Microsoft が提供してる
クロスプラットフォームパッケージより入手します。

Code の部分より直接ダウンロードをし任意のフォルダに解凍するか、git の clone で入手するかの 2 つの手段があります。
今回は、git の clone を使ってやってみましょう。

まずはコマンドプロンプトを起動します。
次にパッケージを保存したいフォルダの位置へ、cdのコマンドを使い階層を移動します。

Simutransフォルダへ階層を移動する

今回は、simutrans のフォルダ階層内にbuildという開発ファイルを格納するフォルダを作り、そこへダウンロードを行います。
なので、mkdirコマンドを使い、フォルダを作成します。

mkdir simutrans
mkdir build

そして、cd コマンドを使い作成した build フォルダへ移動します。

cd build
<USER_DRIVE>:<USER_PATH>/simutrans/build

ドライブより下のパスがこのようになっていたら準備は完了です。

次にgit cloneコマンドでダウンロードを行いますので、github のcodeウィンドウにある、
https...から始まる URL をコピーし、以下のコマンドを入力します。

git clone https://github.com/microsoft/vcpkg.git

git のインストールがうまくいっていれば、パッケージのクローニングが始まります。

GitCloning

Simutrans の Pak とソースコード を入手

Simutrans は実行ファイルなどだけではプレイすることができず、モデルやゲーム内容などの数値が設定されているPakが必要となります。

開発やデバッグにもゲームをプレイするためにPakが必要なため、Pakを入手する必要があります。

今回は Wa 氏が作成されている、日本風景感のPakである、pak.nipponを導入しましょう。
https://github.com/wa-st/pak-nippon/releases/tag/v0.6.1

ダウンロードしたファイルを解凍し、中のpak.nipponフォルダ毎任意の場所に保存しておきましょう。
後ほど使います。

次に、Simutrans のソースコードを入手します。

https://github.com/simutrans/simutrans

Git Fork

Git Clone でソースコードをローカルフォルダにダウンロードをし、そのソースコードに変更をかけコミットをしようとした場合、
元の Simutrans 本体のソースコードを管理しているリポジトリへ編集内容の更新をかけてしまうため、それだとよろしくないため、
フォークをすることにより親元から派生したリポジトリを自環境に作るようにします。

https://github.com/aburch/simutrans

Simutrans Standard のリポジトリより Fork を行います。
リポジトリ画面の右上にある、Forkと書かれたボタンをクリックすると新しいフォークを作成する画面へ移動します。

SimutransリポジトリのGitFork

そこで、自分のリポジトリへ作成する時のリポジトリ名を決めます。

Copy the master branch onlyは、親元のリポジトリにあるmaster(もしくはmain)ブランチのみコピーするかどうかの問です。
他の開発中ブランチへ貢献したい場合はここのチェックボックスを外す必要があります。
Create forkボタンを押すと自分のアカウントに対してリポジトリが作られますので、これで fork は完了です。

最後に fork して作成したリポジトリの Git clone を行い、ローカル環境にダウンロードをします。
clone 先は、一個前の項目である vcpkg で作成したbuild内にします。

build フォルダ内に、simutransのフォルダが新しく作られ、中にGDISDIとかsrcと書かれた拡張子のファイルやフォルダがあるなら成功です。

構築を始める

必要なアプリやライブラリなどを用意できたので、これらを設定していき開発及びデバッグを行えるようにします。

vcpkg から必要ライブラリをインストール

vcpkg から必要なライブラリをインストールするために、bat ファイルからライブラリのインストール処理を行います。
用意したソースコード内のtoolsフォルダ内にある、install-building-libs-<PROCESS>.batを、vcpkgのフォルダへコピペします。

コピペが完了したら、次はコマンドプロンプトでまずはvcpkg同梱の bat ファイルを起動します。

<PATH>/bootstrap-vcpkg.bat

vcpkg Install

この同梱の bat ファイルの処理が終わったら、次は Simutrans の bat ファイルを起動します。
先に vcpkg のバッチファイルを処理していないと、この後の処理ができないので、必ずやっておきましょう。

<PATH>/install-building-libs-x64.bat

今回は 64 ビット版を導入するので x64 の方を使用します。
すると、長い処理が始まるまで終わるまで待機します。
最後に、続行するには何かキーを押してください . . .が表示されたら処理が完了です。
これで、必要なライブラリを導入することができました。

Visual Studio でソースコードを確認する

git Clone しておいたソースコードを VisualStudio で展開します。
VisualStudio を起動したらこのようなウィンドウが表示されるはずなので、今回はローカルフォルダーを開くを選択します。
なお、一番上のリポジトリのクローンを選ぶと、git clone と同じ事をやってくれます。
便利ー!

VisualStudioの開始画面

選択するフォルダはSimutrans.slnのソリューション拡張子のファイルがあるフォルダを選択します。
すると、VisualStudio の画面が画像のようになります。

ファイル一覧

この状態でも、srcフォルダの中に simutrans 本体のソースコードがあるので、コーディングを行うことができますが、デバッグをするには今のフォルダのパス配下から、Simutrans.slnパス配下へ移る必要があります。
それには、Simutrans.slnをダブルクリックすることで移動することができます。

移動すると画像のようなツリーが表示されます。

Simutrans.sln内のソリューション一覧

この状態で、Simutrans-Mainを展開すると、ソースコードの一覧が表示されます。
試しにvehicle.ccというファイルをクリックし、ソースコードを確認してみましょう。
このファイルが主にゲーム中に乗り物がどのような動作をするかのコードが書かれているファイルになります。
645 行目へジャンプをしてみるとmake_smokeという関数がありますが、これがゲーム中で車両が出す排煙をどのように描画するかの処理が書かれた関数です。

デバッグしてみよう

次は実際にデバッグで、Simutrans のゲームを確認してみましょう。
Simutrans-GDI を右クリックし、デバッグを選ぶとデバッグモードへ移行しますが、その前にソリューションプラットフォームで構成を設定しておきます。
x64x86の 2 つが設定されていますが、これをvcpkgのインストールで使用した bat ファイルと同じ構成を設定します。
ここで違うの方の設定を選ぶと、構成が合わずにビルドが成功しませんので注意な点です。

ソリューション構成

ローカルWindowsデバッガーをクリックするとデバッグのためのビルドが始まります。
ただし、このデバックはこのような警告画面が表示され失敗になります。
これは設定などが間違えているというよりかは、ゲームを起動させるために必要なファイルが存在しないためエラーが発生するため表示されるものです。
なので、ゲームに必要なファイルなどを用意していきましょう。

Simutrans.slnが存在するフォルダに、simutransフォルダが存在しその中に最新のゲームの基本設定ファイルが存在します。
ai,config,font,music,script,text,themes などを、buildフォルダのGDIフォルダ内へコピペします。

基本ファイル郡

それらのフォルダをコピペできたら、次はゲームの車両モデルなどが入っているpakを同じGDIフォルダへコピペします。
今回は、前にダウンロードしたpak.nipponの Pak をコピペします。
これでデバッグの用意が完了しました。

ローカルWindowsデバッガーを再度クリックし、ゲームが起動するか確認しましょう。

起動成功
テレー

お疲れ様でした!

Discussion