2013年6月26日水曜日

Simutransにアドオンを後から追加する。

至って普通の話ですが、Linux上で動かしてる例の鯖ではそうもいかず、困ってました。セグフォするんですよね。
Windows上では普通に追加できるので、一旦セーブデータをWindowsのSimutransに読み込ませてセーブしてまたそれを鯖に送って走らせると動く!!11やった!!1

2013年6月20日木曜日

Simutransサーバを運用してみてわかったこと。

どうもsiba018です。
先日、無事に稼働させることが出来たSimutrans鯖ですが、pakとかで色々問題が出たのでメモしておきます。

・鯖側
  ・前の記事でホームディレクトリになんか出来たっての
   →寝ぼけてSingleUserをONにしてた疑惑がある

  ・ロード中にセグフォ(Segmentation Fault)する
   →アドオン多すぎ?Windowsだと大丈夫だったんだけどなあ・・・。マップは広くても狭くてもセグフォするし、裏で動いてるMinecraft鯖を止めてもセグフォするので、ロードしたデータのメモリ配置の仕方がマズいんだと思う。
  ・解決方法?
    ・セーブデータとアドオンが違うとたまにコケる.
    ・アドオンを減らしてもコケる時があるので,気合.
    ・そもそもアドオン多い
    ・コケるアドオンをリネームして、読み込み順位を下げると起動した!

  ・サーバとクライアントのpakファイルが違うと言われる。
   →pak名が重複してる(notファイル名)。重複しているのを消すか、バイナリエディタか何かでユニークな名前を与えれば大丈夫。重複しているのを調べるには、debugオプションをつけてWarningでgrepするとわかる。というかWindowsとLinuxだとファイルの読み込み順が違うのね?

  ・ログファイルがデカい
   → -log 1する時はデバッグレベル下げようね。tail -f "ログファイル"で監視できそう。
          というかdebug 2だと情報量多いし、debug 1だと少なすぎやしませんかね。

・他の問題
  ・人間関係がめんどくさい!
   →NetSimutransとかBattleSimutransの文化を持ってくる人がいますが、ウチはウチ、よそはよその精神でやらないとグダグダになる。

  ・鯖管が遊べない
   →諦めましょう。

そう言えば最近NetSimutransWikiが出来たらしいですね。なんか良い情報あるかなあ。あ、あと運用してるサーバにZabbixでも入れて監視しようかな。なんて。人の借りた鯖だけど半私物である。おわり。

2013年6月16日日曜日

さくらVPSでSimutransを動かせた (完結編)

/* この記事は読みにくいので今度書き直します */
新しい記事はこちら→CentOSにSimutrans120.0をビルド&インストール

友人がさくらVPSを借り、Simutransを動かせと言われたのでメモ。動くかはわからん!

Simutransのバージョンは112.3。OSのバージョンはCentOS6の32bit。メモリは1GBだし、Simutransは32bit推奨っぽい?のでそれで行く。

まず適当にユーザとディレクトリを作った所にsvnでソースを落としてくる。
"svn co -r 6520 svn://tron.homeunix.org/simutrans"
ユーザとか入れろって出てくるので入れる。ユーザ名はanonでパスワードは無し。

次に落としてきたソースのtrunkに入っているconfig.templateをconfig.defaultにリネームするかコピーし、適当なエディタで開き、以下のコメントアウトを解除する。

BACKEND = posix
COLOUR_DEPTH = 0
OSTYPE = linux
DEBUG = 3(一応)
OPTMISE = 1
WITH_RIVISION = 1
で、保存。頼みながらmakeする・・・が、エラーが出る。
”besch/reader/image_reader.cc:14:18: warning: zlib.h: No such file or directory”
zlib.hがないらしい。
yum whatprovides */zlib.hで検索する。沢山出た。
zlib-devel-1.2.3-29.el6.i686で良さそうなので入れる。
"yum install zlib-devel-1.2.3-29.el6.i686"
再度makeする。またエラーを吐いた。
"dataobj/loadsave.cc:19:19: warning: bzlib.h: No such file or directory"
bzlibとは・・・zlibとは違うのか。
再度検索し、bzip2-devel-1.0.5-7.el6_0.i686 をインストールした。
またmakeをしていく。頼む~~~!
祈ってたらビルド通りました。勝利。
予めpakとか色々入れたフォルダをSCPなりなんなりで転送しておきます。そこに ./build/defaultに入ってる 先ほどビルドした実行ファイルを入れます。
出来たら実行します。動くかな・・・
$./sim -server 13353 -lang ja -nosound -nomidi -objects pak -log 1 -debug 3 -load ./save/save.sve

・・・駄目だったというアレです。動くには動くんですが何が悪いんだろう?
ERROR: modal_dialogue(): called without a display driver => nothing will be shown!
For help with this error or to file a bug report please see the Simutrans forum:
http://forum.simutrans.com
なんかグラフィック回り探してる感ありますよねえ・・・
simuconfがないから?色々試してみなくてはいけないですね・・・

-log 1をつけたおかげでエラーログが出てました。grep ERRORしてみる。

ERROR: obj_reader_t::read_file(): reading 'skin/ground.Outside.pak' failed!

えっ。スキンいるの・・・?要らないと思っていたので入れてみる。が。動かない。
そもそもground.Outside.pakはskinに入っていなかった。pakフォルダに入っていた。試しにskinにコピーして動かしてみた。
上のエラーは消えた。が、
ERROR: modal_dialogue(): called without a display driver => nothing will be shown!にやられる。うーん・・・ググってもロクな解決方法が出ず、軽く詰んでいる。


/*

と思った矢先、ホームディレクトリ見たらなんかsimutransとかいうディレクトリが出来ていました。そこにmapsとかsaveとか出来ててもしや・・・?と思いセーブデータを入れ、起動してみた所、動きました。
うごきました。ちくしょう。大勝利です。おわり。

後日わかったんですが、-load save.sveする時、./simが入ってるディレクトリ/save/save.sveじゃないとダメっぽい。一体何の為に生成されたんだホームディレクトリのヤツ・・・・。

*/

これはただの妄言でした.次の記事で一応解決書いてあります.