simutrans

Simutrans 開発者向けドキュメント(トップ)

概要

このディレクトリは、Simutrans プロジェクトの技術ドキュメント(日本語)をまとめたトップページです。詳細な一覧は全ページ索引に集約しました。カテゴリ別の入口のみを簡潔に掲載します。

対象読者:

目的

基本的な使用方法


クイックリンク


関連ファイル

まとめ

README はカテゴリの入口のみを提供し、詳細は ALL_PAGES.md に集約しました。新しいドキュメントを追加した際は、カテゴリ側 README と索引の両方にリンクを追加してください。

目的別ガイド

環境構築したい

guides/DEVELOPMENT_SETUP.md または guides/DOCKER_BUILD.md

機能追加・改善したい

architecture/FEATURES.md で該当システムを確認

バグ修正したい

architecture/TECHNICAL_ARCHITECTURE.md でコンポーネント構造を理解

サーバー管理したい

systems/NETTOOL.md でサーバー制御を学習

Pakset を作成したい

systems/MAKEOBJ.md で makeobj ツールを学習

シナリオ・ミッションを作成したい

systems/SCENARIO.md でシナリオシステムを理解

Steam Workshop でコンテンツを公開したい

systems/STEAM_WORKSHOP.md で Workshop 統合を学習


🚀 クイックスタート

Docker で始めたい方(最も簡単!)🐋

  1. DOCKER_BUILD.md に従って Docker 環境を構築
  2. すぐにビルド開始:
    docker-compose run --rm simutrans-build docker-build.sh make
    
  3. コードを読む前に TECHNICAL_ARCHITECTURE.md でアーキテクチャを学習

完全な初心者向け

  1. PROJECT_OVERVIEW.md を読んでプロジェクトを理解
  2. DEVELOPMENT_SETUP.md に従って環境を構築
  3. コードを読み始める前に TECHNICAL_ARCHITECTURE.md でアーキテクチャを学習

既に開発経験がある方

  1. DEVELOPMENT_SETUP.md で環境を素早く構築
  2. PROJECT_OVERVIEW.md のディレクトリ構成を確認
  3. TECHNICAL_ARCHITECTURE.md で関心のある部分を参照

依存関係の問題が発生した場合

  1. DEPENDENCIES.md のトラブルシューティングセクションを確認
  2. それでも解決しない場合は フォーラム で質問

🎓 推奨学習パス

# ドキュメントを読む
cd docs
# guides/PROJECT_OVERVIEW.md → guides/DEVELOPMENT_SETUP.md → architecture/TECHNICAL_ARCHITECTURE.md

# 環境を構築
# Windows: Visual Studio を使うか MSYS2 を使う
# Linux/Mac: 通常の make/CMake を使う
# Docker: docker-compose を使う(推奨)

# コードを読む
cd ../src/simutrans

# デバッガでステップ実行しながら理解を深める

学習ステップ

  1. 基礎理解(1〜2 週間)

    • プロジェクト概要とアーキテクチャを学習
    • ビルド環境を整備
    • デバッガの使い方を習得
  2. コア機能の理解(2〜4 週間)

    • シミュレーションループ(simworld.cc
    • 描画システム(display.cc
    • 基本オブジェクト(simobj.cc
  3. 特定システムの深掘り(1〜2 ヶ月)

    • 興味のあるコンポーネント(vehicle/、gui/、dataobj/ など)を選択
    • 小さな変更やバグ修正にトライ
  4. 実践貢献(継続的)

    • パッチの作成と投稿
    • フォーラムでのディスカッション参加

🔍 コードを読む際のヒント

  1. デバッガを活用する Visual Studio、VS Code、GDB などでブレークポイントを設定し、ステップ実行しながら理解を深めましょう。

  2. ディレクトリごとに分割して理解する 一度に全てを理解しようとせず、興味のあるディレクトリ(例:vehicle/)から始めましょう。

  3. データ構造を可視化する simworld.hsimobj.hvehicle.h などの主要ヘッダーファイルでクラス構造を確認しましょう。

  4. ゲームをプレイしながらコードを読む 実際のゲーム内動作と対応するコードを関連付けると理解が深まります。

  5. フォーラムで質問する わからないことがあれば、Simutrans Forum で質問しましょう。


📦 プロジェクト構成(簡易版)

simutrans/
├── src/               # ソースコード(C++)
│   ├── simutrans/     # メインシミュレーションコード
│   ├── makeobj/       # Pak 作成ツール
│   ├── nettool/       # ネットワークツール
│   └── squirrel/      # スクリプトエンジン(Squirrel)
├── simutrans/         # ゲームデータ(テキスト、スクリプト)
├── cmake/             # CMake ビルド設定
├── docs/              # 日本語ドキュメント(このディレクトリ)
└── documentation/     # 英語ドキュメント

詳細は PROJECT_OVERVIEW.md を参照してください。


🛠️ 開発ワークフロー

1. Issue の確認

2. コードの変更

3. ビルドとテスト

# ビルド
make clean && make

# テスト実行
./build/default/simutrans/simutrans

4. パッチの作成

# パッチファイルを作成
git diff > my_changes.patch

5. パッチの投稿

6. 貢献


❓ よくある質問(FAQ)

Q: どこから始めればいい?

A: PROJECT_OVERVIEW.mdを読んで全体像を把握し、DEVELOPMENT_SETUP.mdで環境を構築してください。

Q: コードが大きすぎて圧倒される

A: TECHNICAL_ARCHITECTURE.mdでアーキテクチャを理解し、興味のあるコンポーネント(例:vehicle/、gui/)から始めてください。

Q: ビルドエラーが出る

A: DEPENDENCIES.mdのトラブルシューティングセクションを確認するか、フォーラムで質問してください。

Q: Pull Request を送りたい

A: Simutrans プロジェクトは Pull Request を使用していません。パッチファイル(.patch)を作成して、フォーラムに投稿してください。

Q: ドキュメントに誤りを見つけた

A: GitHub で Issue を作成するか、フォーラムで報告してください。


📞 サポート・コミュニティ


🚀 次のステップ

  1. ✅ この README.md を読む
  2. 📖 PROJECT_OVERVIEW.md でプロジェクトを理解
  3. 🛠️ DEVELOPMENT_SETUP.md で環境を構築
  4. 🏗️ TECHNICAL_ARCHITECTURE.md でアーキテクチャを学習
  5. ⚙️ FEATURES.md で主要機能を深掘り
  6. 💻 コードを読み始める!

Happy Coding! 🚂