更新履歴
svnサーバー変更 2016/11/20
OpenTTDについて追記 2016/03/26
120.0向けにビルド方法を変更 2014/06/19
svnサーバー変更 2014/04/24
サーバー用の設定を追加 2011/08/20

[編集]ソースコードのビルド方法

詳しい方がおられましたら、どんどん補足、修正をお願いします。

[編集]ソースコードを入手する

リリース版のソースはSourceForgeにある。
開発中のソースは個人のSVNサーバーで管理されているので、そこから入手可能。

svnサーバーsvn://servers.simutrans.org/simutrans
ユーザー名anon
パスワード(空白)

開発トランクはGitHubでもミラーされている。http://github.com/aburch/simutransからも入手可能。

[編集]MinGWでのGDI版のビルド方法(Windows)

http://japanese.simutrans.com/bbs/test/read.cgi/tokusetu/1270203794/46さんの解説を使用しました。感謝。

  1. MinGWとMSYSをインストール。
  2. http://sourceforge.net/project/showfiles.php?group_id=2435 からbzip2-1.0.5-2-mingw32-dev.tar.gzとlibz-1.2.3-1-mingw32-dev.tar.gzをダウンロードする。
    ←(補足)リンク先から「MinGW」,「Extension」,「zlibもしくはbzip2」の順にフォルダを開けていけばたどり着ける。
  3. ダウンロードしたファイルをTGZ形式を解凍できるツールで解凍して、中のincludeとlibをMinGWのインストール先(デフォルトではC:\MinGW")に上書きコピーする。
  4. http://libunicows.sourceforge.net/ からlibunicows-1.1.1-mingw32.zipをダウンロードして、 libunicows.aをMinGWのインストール先のlib内にコピー。
  5. ソース内のconfig.templateをコピーしてconfig.defaultを作成する。
  6. config.defaultを適当なテキストエディタで開く(改行がLFなのでメモ帳は不可)。
  7. 以下の行の先頭の#を削除。
    BACKEND = gdi
    COLOUR_DEPTH = 16
    OSTYPE = mingw
    OPTIMISE = 1
  8. FLAGS = -DSTEPS16 を FLAGS = -DSTEPS16 -static-libgcc に変更。
    フラグ-DSTEPS16はすでに使用されていないため、開発トランクではこの行はありません。
    FLAGS = -static-libgcc 行を新規にを付け加えてください
  9. スタートメニューから「MinGW」→「MSYS」→「MSYS」でMSYSのコンソールを開く。
  10. ソースのあるディレクトリに移動する。c:\src\simutrans-src-102-2-2にソースがある場合は cd /c/src/simutrans-src-102-2-2 と入力してEnter。
  11. make CC="gcc" LDFLAGS="-static" と入力してEnter。
  12. うまくいけばsim.exeができる。

[編集]コマンドプロンプトを開かない方法

50 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/04/29(木) 22:14:13 ID:kaTXIpwM
>>46
この方法でコンパイルした実行ファイルを実行すると
コマンドプロンプトも一緒に開いちゃうんだけど、これってどこいじれば消せる?
ソース?それともconfig.default?

51 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2010/04/30(金) 01:36:06 ID:xZ3djKPE
>>50
LDFLAGSに-mwindows付ければ消えるよ

[編集]SDL版のビルド

[編集]サーバー専用にする

config.defaultで、「BACKEND = posix」、「COLOUR_DEPTH = 0」に設定します。
起動時には、pakセット、言語などをコマンドラインから指定する必要があります。
(例)「-objects pak -lang ja」

[編集]nettoolのビルド

Makefileで「 -lwsock32」が不足しているようです。STD_LIBSに追加したら成功しました。

[編集]makeobjのビルド

  • makeobjディレクトリにある
  • pngライブラリが必要→どこから入手?
    • 必要なソースはOpenTTD用のライブラリに含まれているのでこちらを流用する。libpngのライブラリからでは、必要なソースを確保するためにlibpng自体のビルドが必要(また、これだけでは確保できないソースが存在する)。
  • リリース版では、simutransのビルドと競合するので、/utils/log.dと/utils/log.oとを削除しておく。(開発トランクでは競合しないように修正されているので必要なし)

開発トランクのmakeobjソースコードは仕様が確定していないため、これで作成したpakは将来使用できなくなる可能性があります

[編集]MSVC++ Express/Community Editionでのビルド方法(Windows)

  1. まずソースコードを入手しますが、SourceForgeからダウンロードした安定板のソースコードだとVC++用プロジェクトファイルが付いてこないので、SVNかGitHubからダウンロードします。
    リビジョンが合っていればsourceforgeからダウンロードしたものにsvnやgitからダウンロードしたプロジェクトファイルを組み合わせても大丈夫です。必要なファイルはSimutrans.sln,Simutrans.vcxproj,rivision.jse,simres.rcです。
  2. libbz2.libとbzlib.hを用意します。
    • (MSVC++2013まで)英語フォーラム:16608からlibbz2.libとbzlib.h(bzlib.msvc.7zというファイルに圧縮されています)がダウンロードできるので、適当なフォルダに保存します。
    • (MSVC++2015以降)bzip2のWebサイトからbzip2のソースコードをダウンロード・展開します。ダウンロードしたbzip2のソースをMSVC++でビルドすることにより、libbz2.libが生成されます。bzlib.hは、bzip2のソースに添付されているものを使用します。
      • 上述英語フォーラム:16608からダウンロードできるlibbz2.libだと、Simutransのビルドの時点で「外部シンボル "__imp____iob_func" は未解決です。」というエラーが発生し、ビルドが失敗します。VC++2015以降でstdin、stdout、stderrの定義が変わっているのが原因と思われます。
  3. OpenTTD用のライブラリをダウンロードします。ダウンロードするファイルは、最新バージョンのディレクトリを選び、その中の末尾が"-win.zip"のファイルです。sourceやsumではありません。こちらも適当な場所に展開します。
  4. pthreadsのライブラリをftpからダウンロードします。dll-latestの下のinclude,lib,dll内のファイルをすべて保存します。
  5. ソースフォルダ内のソリューションファイル(Simutrans.sln)かプロジェクトファイル(Simutrans.vcxproj)を開きます。
  6. ソリューションエクスプローラからプロジェクトのプロパティを開き、構成プロパティのVC++ディレクトリを選択します。
  7. インクルードディレクトリに保存しておいたhファイルの入ったディレクトリを追加します。OpenTTD用ライブラリの物は"展開したフォルダ\shared\include"にあります。
  8. ライブラリディレクトリに保存しておいたlibファイル,aファイル,dllファイルの入ったディレクトリを指定します。OpenTTD用ライブラリの物は"展開したフォルダ\win32\library"にあります。
  9. 構成プロパティのC/C++→プリプロセッサを選択し、プリプロセッサの定義にZLIB_WINAPIを追記します。
  10. (120.1.1以降)プロジェクトのプロパティを開き、リンカー→入力の中の追加の依存ファイルを選択しimm32.libを追記します。
  11. (120.1.1以降)マニフェストツール→入出力で埋め込みマニフェストをいいえにします。
  12. プロジェクトをビルドします。上手くいけばソースフォルダ内のDebugフォルダにSimutrans.exeが出来ています。
    Debug版だとデバッグ用の表示が追加されているので、Release版に変更してビルドすると無くなります。Debug版とは別にもう一度構成プロパティの変更が必要なので注意。
  • revision.hが存在しないと言われてビルドが失敗する場合があります。これは本家のSVNを用いてソースコードをダウンロードしなかった場合(SourceforgeやTurtoiseSVN)に起こるエラーです。revision.hを自分で作るか、プリプロセッサでリビジョンを定義してやる必要があります。

    プリプロセッサに定義する場合は、プロジェクトの構成プロパティでC/C++→プリプロセッサを開きます。プリプロセッサの定義の末尾に、「REVISION=(リビジョン番号)」を付けたして下さい。

    revision.hを自作する場合は、次のように書いてrevision.hとして保存してください。もちろん保存後はプロジェクトにヘッダファイルとして追加する必要があります。

    #ifndef _revision_h
    #define _revision_h
    
    #define REVISION (リビジョン番号)
    
    #endif

なお、MSVC++を用いてビルドした場合、動作にpthreadのVisual C++用の動的リンクライブラリ(dll)が必要になります。本体を動作させるフォルダに、Simutransのデフォルトで付いてくるpthreadGC2.dllの代わりに、準備でダウンロードしたpthreadVC2.dllを置いてやります。

参考リンク:

[編集]パッチの当て方

simutrans本体の改変版は、実行ファイル形式で配布することも多いですが、ソースコードの差分を記述したパッチという形式で配布される場合が多々あります(拡張子は.patchか.diff)。小規模な変更の場合はパッチファイルのみ配布されることが多いです。
パッチファイルはあくまでもソースコードの差分を記述したファイルなので、ソースコードにパッチを当ててからビルドし実行ファイルを作ることでパッチの機能が付与されたsimutrans本体が出来上がります。

パッチファイルを当てる方法は大きく分けて2種類あり、1つはコマンドライン上からpatchというコマンドを実行する方法です。
Windowsのコマンドプロンプトにはpatchコマンドが付いてこないので、MinGWやCygwinを用いるかWindows移植版のpatch.exeをダウンロードしpathを通します。
基本的にはsimutransのソースコードが入っているディレクトリで「patch -p0 <パッチファイル名」と行えば大丈夫です。詳しい使い方はMANを参照

もう1つはGUIの付いたアプリケーションを使って当てる方法です。筆者はTurtoiseSVNというアプリケーションを用いています。(SVNからソースコードを入手したりするのにも便利)
インストール方法は省略。simutransのソースコードの入ったフォルダを右クリックし、「パッチを適用」を選択しパッチファイルを開くとパッチ処理が行われます。

[編集]double height対応pak128の導入方法

nightly版のsimutransではdouble height(従来の1/2の高さのタイル)が導入されました。
ビルド済みのdouble height対応pak128は、2013/8/19現在調べた限り存在しないので、ソースから作る必要があります。
なお、「対応している」と言っても一部の地面パーツなどに限られるので、例えば1/2スロープに鉄道を敷いても従来のスロープ軌道が表示されるので、あくまでも一応動くよ、という程度です。軌道類はここのWikiを参考に自分でアドオンとして用意する必要があります。

また、double heightに対応するsimutrans本体(nightlyビルド版など)を用意する必要があります。

[編集]必要なツール

  • svn
  • python 3.x
  • お好きなテキストエディタ

[編集]手順

ここではコマンドプロンプトでの作業を例にしていますが、もちろんTortoiseSVNやexplorerで操作してもかまいません。

  1. http://sourceforge.net/projects/simutrans/ のリポジトリをチェックアウト(チェックアウト先ディレクトリをsimutrans-codeとする)
     svn checkout svn://svn.code.sf.net/p/simutrans/code/ simutrans-code
  2. http://forum.simutrans.com/index.php?topic=12021.0 からdouble heightに対応したmakeobjをダウンロードしてパスの通っているところに置く(普段使ってるmakeobjと別の名前にしておくと使いわけやすいのでオススメ。ここではmakeobj-dhとする)
  3. simutrans-code\pak128.newlandscapeに移動する
     cd simutrans-code\pak128.newlandscape
  4. _pakmak.tab の cmd makeobj QUIET と書かれているところをテキストエディタで cmd makeobj-dh QUIET に変更
  5. pakmak.pyを実行する
     python pakmak.py
  6. 実行が終わったらsimutrans\pak128にできあがってるので、これをnightly simutransのディレクトリにコピー。
    コピーの際にpak128.newlandscapeみたいにフォルダ名を変更しておくと従来のpak128と区別しやすくなるので後々便利です。
    pak128用のアドオンはdouble heightに関係あるものを除いて、対応するアドオンフォルダを作れば全てそのまま使えます。
    double heightが関係してくるアドオンは、画像とdatを修正しないと見た目がおかしくなります(が、おそらく動作はするでしょう)。

 
Last-modified: 2017-05-20 (土) 10:19:48