Simutrans は、オープンソースの交通シミュレーションゲームです。鉄道、道路、船舶、航空機による旅客・郵便・貨物輸送を通じて、成功した運輸会社の経営を目指します。
このドキュメントは以下の目的で作成されています:
対象読者:
プロジェクトは 3 つのビルドシステムをサポート:
| ライブラリ | バージョン | 用途 |
|---|---|---|
| zlib | - | 基本的な圧縮サポート |
| libpng | - | 画像操作 |
| libfreetype | - | TrueType フォントサポート |
| bzip2 または zstd | - | 代替圧縮(どちらか一方が必須。vcpkg では zstd を使用) |
| SDL2 | 2.x | グラフィックバックエンド(Linux/Mac 必須、Windows 推奨) |
| ライブラリ | 用途 |
|---|---|
| miniupnpc | 簡易サーバー機能 |
| fluidsynth | MIDI 再生(Linux 推奨、Mac 一時的推奨) |
| SDL2_mixer | 代替 MIDI 再生とサウンドシステム |
| fontconfig | フォント自動検出(Linux/Mac) |
simutrans/
├── src/ # ソースコード
│ ├── simutrans/ # メインゲームコード
│ │ ├── builder/ # 建設関連
│ │ ├── dataobj/ # データオブジェクト
│ │ ├── descriptor/ # 記述子
│ │ ├── display/ # 表示システム
│ │ ├── ground/ # 地形
│ │ ├── gui/ # ユーザーインターフェース
│ │ ├── io/ # 入出力
│ │ ├── network/ # ネットワーク機能
│ │ ├── obj/ # ゲームオブジェクト
│ │ ├── player/ # プレイヤー管理
│ │ ├── script/ # スクリプト(AI)
│ │ ├── sound/ # サウンドシステム
│ │ ├── sys/ # システム依存コード
│ │ ├── tool/ # ツール
│ │ ├── tpl/ # テンプレートライブラリ
│ │ ├── utils/ # ユーティリティ
│ │ ├── vehicle/ # 車両システム
│ │ └── world/ # ワールド管理
│ ├── makeobj/ # Pakset作成ツール
│ ├── nettool/ # ネットワークツール
│ ├── squirrel/ # Squirrelスクリプトエンジン
│ ├── android/ # Android固有コード
│ ├── linux/ # Linux固有コード
│ ├── OSX/ # macOS固有コード
│ └── Windows/ # Windows固有コード
├── cmake/ # CMakeビルドスクリプト
├── documentation/ # 開発者向けドキュメント
├── simutrans/ # ゲームデータ(AI、設定、テキストなど)
├── tests/ # テストスクリプト
├── themes.src/ # UIテーマソース
└── tools/ # 開発ツール
Simutrans は階層的なオブジェクト指向設計を採用:
オブジェクトは 3 種類の定期的な呼び出しを持つ:
gui_frame_tから派生# Linux
autoconf
./configure
make -j 4
# macOS
autoreconf -ivf
./configure
make -j 4
make OSX/getversion
# Linux/MinGW/macOS
cmake -B build .
cmake --build build -j 4
# MSVC
cmake.exe .. -G "Visual Studio 16 2019" -A x64 \
-DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake
cmake --build . --config Release
Simutrans.slnを開くtools\install-building-libs-{architecture}.bat
tools/setup-debian.sh
詳細はdocumentation/coding_styles.txtを参照
主要なルール:
get_: 値を返すset_: 値を設定is_: 条件をテストCMakeLists.txt, cmake/Simutrans*.cmakeMakefile, common.mk, uncommon.mkSimutrans.sln, Simutrans-*.vcxprojvcpkg.jsonconfig.default, config.templatedocumentation/documentation/coding_styles.txtREADME.md, readme.txtSimutrans は 25 年以上の歴史を持つ成熟したプロジェクトです:
主な特徴:
このプロジェクト概要を理解したら、次は以下のドキュメントに進みましょう:
Artistic License 1.0(OSI 承認)。詳細はLICENSE.txtを参照。
Pakset(ゲーム実行に必要)は別ライセンス。