前回鯖にSimutransを入れて、試しに遊ぶかと思い、いつも使ってるpakファイルを送信して実行してみました。すると
デデドン(絶望)
思いつく原因は何個かありまして、
- クライアント側が車庫フィルタパッチを当てたr7373改
- 実はpak128のどっかがおかしい
- 文字コードがすっ飛んでて変なファイル読んでる
- 鯖版をマルチスレッドでビルドした
まあ結論から言うと、公式からr7373(120.0)を落としてきてクライアントとして実行してみたら普通に出来ました。チーン。
で、debug -3にしてデバッグしてみたら、こんな事になってました。
//窓蔵 Cement -> sha1 = 35A0B10DFA7B045B83D0370E580B1CFA2C0ACB21
//鯖 Cement -> sha1 = DFB35A2CABC05A305B539D5094E9B7FCC96C502D
見事にハッシュ値が違う。
原因として思いついたのが、zlibとかbzlibのバージョンが古いのではないか。ということです。
現状クライアントのビルドに使ってるbz2のライブラリとかは
開発/ビルド方法 - Simutrans日本語化・解説
ここに載ってる
How to compile Simutrans (&Makeobj) on Windows with MSVC
に上がってるやつを使ってます。これ、確実に2009年にビルドされたものですね・・・。
ちなみに、鯖に入ってるbzip2とzlibのバージョンは、
zlib.x86_64 1.2.3-29.el6
bzip2.x86_64 1.0.5-7.el6_0
でした。(yum list installedで確認)
ということは、これと同等、若しくはそれ以上のバージョンでビルドした方が良さそうですね。
How to~に載ってるbzlibは1.0.5、zlibは
Zlib for Windows
最新は1.2.3、最終更新日は2007年。あれっ。
さて困りました。細かいバージョン等もあるとは思うんですが、cygwin辺りでいい感じにビルドする必要があるんですかね?
公式のビルド環境が知りたさすぎる・・・。mingwでビルドしてみたりしてみると良いんですかね。ウーン。
(2014/12/31 20:39 追記)
MinGWで頑張ってビルドしてるんですが、うまく行かなくて真顔。
(2014/12/31 22:48追記)
r7373→r7442にしたら大丈夫だった。大晦日になにやってんだろう・・・