Simutransを自鯖で構築してみる
こんばんは。
お久しぶりです。全く脈絡がないですがとりあえず更新です。
今日はSimutrans鯖を自分の鯖で構築してみます。
まずSimutransってなに
Simutrans(シムトランス)はフリーでオープンソースのシミュレーションゲーム。Windows、BeOS、Linux用に開発されている、各種交通機関を運営し安定した経営を目指すことを目標とする経営シミュレーションゲームである。
というわけで、よくあるシムシティの交通寄りみたいな感じのゲームです。
公式サイトはこちら。
まず
とりあえず鯖の現状は、HP ProLiant ML110 G7を買った時のまま使っている感じ。
Simutransの要求スペックよくわからんけどとりあえずメモリ2GBあるし大丈夫だろ()と安易に考えてたりするが大丈夫なのだろうか…。
OSは Debian GNU/Linux 6.0(squeeze) です。おいそこwheezyじゃないとかいうな。い、いつか移行するんだからっ
とりあえずこの方を参考にしながらやっていきます。
コードの用意
まず適当にユーザを作ってディレクトリを作っておく。
# adduser simutrans # su sumutrans $ mkdir NetSimutrans $ cd NetSimutrans
手順としてはソースコード引っ張ってきてビルドすればいい、との話だったのでとりあえず引っ張ってきましょう。
svnで、との話でsvnだけかと思ったらgitにもミラーがあったのでgitから。(慣れてるので
Simutrans, gitのミラーはこちらです。
$ git clone https://github.com/aburch/simutrans Cloning into simutrans... remote: Counting objects: 53764, done. remote: Compressing objects: 100% (13093/13093), done. remote: Total 53764 (delta 44494), reused 49546 (delta 40549) Receiving objects: 100% (53764/53764), 15.80 MiB | 1.39 MiB/s, done. Resolving deltas: 100% (44494/44494), done.
とりあえずcloneしちゃってますが開発するわけじゃないし別にいいよね…。
これでコードの準備はできました(なにもしてない)。
みんなだいすきビルド
開発/ビルド方法 - Simutrans日本語化・解説
Simutrans wikiのほうにやりかたがまとめられているのでこれを読んでやっていきましょう。
config.defaultを適当なテキストエディタで開く(改行がLFなのでメモ帳は不可)。
との事なので作成していきましょう。
することというと
BACKEND = posix COLOUR_DEPTH = 0 OSTYPE = linux DEBUG = 1 OPTIMISE = 1
の各項のコメントアウトを外すことでしょうか。
$ cp config.template config.default $ vim config.default
というわけで適当にテキストエディタで編集し、保存。
土下座しながらmake…したらg++がねぇよ!的なことを言われたので
$ aptitude install g++
してg++を入れていざmake…と思ったら今度は
besch/reader/image_reader.cc:14:18: warning: zlib.h: そのようなファイルやディレクトリはありません
だそうです。
これに関しては先ほどのgitのreadme.txtをみると
To compile you will need the following libraries:
libz (http://www.zlib.net/)
libpng (http://www.libpng.org/pub/png/) for makeobj
libbz2.lib (compile from source from http://www.bzip.org/downloads.html)
とのことなのでまずzlib.hとやらをなんとかしましょう。
くっついてるURLに飛んで、適当にtar.gzをwgetして、解凍。
解凍したフォルダで
# ./configure ~何らかの処理~ # make ~何らかの処理~ # make install ~何らかの処理~
してあげるとzlib.hがinclude出来るようになってる…はず…。
というわけでもう一度simutransフォルダにもどり、make…がまたエラー。
dataobj/loadsave.cc:19:19: warning: bzlib.h: そのようなファイルやディレクトリはありません
ん…?さっきzlib.h入れなかったか…?と思いよく見直すとbzlib.hですねこれ…。
紛らわしい…。
めんどくさいのでさっきのlibpngっていうのとlibbz2.libってのを両方ぶちこんでおきましょう。
これも同じく適当にwgetして解凍して./configureしてmakeしてmake installして…と。
終わらせまして3度目の正直というわけでmake…と、とおりました…!!!!
warningとかちらほらみえたけどなかったことにして先に進みましょう(((
起動
とりあえずpakをインストールしましょう。pak128で。
get_pak.shとかいうスプリクトが置いてあるのでそいつでpakをダウンロードしておきます。普通のpak128は6なので6と入力します。
そしてiを入力し、最後にインストールするかどうかのyを入力しておわり。
$ ./get_pak.sh -- Choose at least one of these paks -- 1) pak64-112-3 2) pak-german64-110-0c 3) pak64.japan-112-0 4) pakHAJO_0-102-2-2 5) pak96.comic-0.4.10-plus 6) pak128-2.3.0--112.2 7) PAK128.german_0.6_112.x 8) pak192comic-0.3-112-3up 9) pak32.comic_102-0 10) pak64.Contrast_910 11) PakHD_v04B_100-0 12) pak128.Britain.1.14-112-0 13) pak128.japan-110.0.1-version16-08-2011 14) pak64.scifi_112.x_v0.2 15) pak48-excentrique_v018 Which paks to install? (enter number or (i) to install or (x) to exit)6 adding pak128-2.3.0--112.2 Which paks to install? (enter number or (i) to install or (x) to exit)i You will install now 6) pak128-2.3.0--112.2 Is this correct? (y/n)y
ダウンロードが始まり、あとはまつだけ。
さて、これでpakがダウンロードできまして、実行ファイルらへんに移しておきましょう。
$ mkdir build/default/pak $ cp -r pak128 build/default/pak/
ようやく起動できます。
先ほどビルドしたものは ./build/default に入ってます。
起動のオプションってどうすれバインダー…ということで
./sim -helpして確認。
--------------------------------------- Simutrans 112.4 Nightly released Oct 30 2013 developed by the Simutrans team. Send feedback and questions to: <markus@pristovsek.de> Based on Simutrans 0.84.21.2 by Hansj・g Malthaner et. al. --------------------------------------- command line parameters available: -addons loads also addons (with -objects) -async asynchronous images, only for SDL -use_hw hardware double buffering, only for SDL -debug NUM enables debugging (1..5) -freeplay play with endless money -fullscreen starts simutrans in fullscreen mode -fps COUNT framerate (from 5 to 100) -h | -help | --help displays this help -lang CODE starts with specified language -load FILE[.sve] loads game in file 'save/FILE.sve' -log enables logging to file 'simu.log' -noaddons does not load any addon (default) -nomidi turns off background music -nosound turns off ambient sounds -objects DIR_NAME/ load the pakset in specified directory -pause starts game with paused after loading -res N starts in specified resolution: 1=640x480, 2=800x600, 3=1024x768, 4=1280x1024 -screensize WxH set screensize to width W and height H -server [PORT] starts program as server (for network game) without port specified uses 13353 -announce Enable server announcements -server_dns FQDN/IP FQDN or IP address of server for announcements -server_name NAME Name of server for announcements -server_admin_pw PW password for server administration -singleuser Save everything in program directory (portable version) -sizes Show current size of some structures -startyear N start in year N -theme N user directory containing theme files -timeline enables timeline -times does some simple profiling -until MONTH quits when MONTH = (month*12+year-1) starts -use_workdir use current dir as basedir
とりあえず、サーバで起動してみましょう。
$ ./sim -server 13353 -server_name ejoSvr -lang ja -log -debug 3 -nomidi -nosound -objects pak/pak128/
…と実行したら言語ファイルがねぇぞ!ってことで怒られました。
そういえばさっきmakeしたsimutransフォルダに get_lang_files.sh とかあったな…って思って実行して。
それでまた上のように起動しようとしたらまただめ…
んでよく見るとmakeしたsimutransフォルダ内にまたsimutransフォルダができている。そこの中身を確認すると、言語ファイルの入ってるtextフォルダが。
とりあえずめんどくさいのでcp -r * ../build/default/ とかしてそのフォルダの中身を全部移しました(いけないことかなω・
というわけでもういちど…おおおっきどうしt……ってエラー……
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 Message: karte_t::destroy(): destroying world Message: karte_t::destroy(): label clear Message: karte_t::destroy(): convois destroyed Message: karte_t::destroy(): stops destroyed Message: karte_t::rem_stadt(): 森島 Message: karte_t::rem_stadt(): delete Message: karte_t::destroy(): towns destroyed Message: karte_t::destroy(): sync list cleared Message: karte_t::destroy(): planquadrat destroyed Message: karte_t::destroy(): player destroyed Message: karte_t::destroy(): factories destroyed Message: karte_t::destroy(): attraction list destroyed Message: karte_t::destroy(): world destroyed World destroyed.
ああ…このエラーは先で参考にしていたsiba018氏と同じエラーですかね…。森島ってなんだよ…。
現状ここで起動出来ない状態で詰みました。どうしましょうか、うーん…。
ここまでやってきてアレですがnoguiモード的なのはないのかしら…ω・
エラーを見る限りディスプレイに映し出そうとしちゃってそこでエラーハイてからdestroyしまくってるし辛い。
とりあえず今日はこのへんで。