DCSS/インストールガイドshortened URL: http://lazy-life.ddo.jp/wiki/?4426d2330b |
|
DCSS > インストールガイド 試験公開鯖運用のためのメモ。試行錯誤中につき無保証。 環境Ubuntu Linux server 12.04 or later 準備依存ツール・ライブラリの導入# apt-get install git build-essential flex bison libsdl-dev libsdl-image1.2-dev libncursesw5-dev ↓必須ではないが何度もビルドする際にビルドが速くなるらしい # apt-get install ccache binutils-gold pyenvでpython 2.7.6~をインストールした後、 % pip install tornado==3.2.2 を行う。 (※tornado 4.x系だとタイルが表示されない症状があったため3.x系最新を入れる) 最近はビルドの際にpyyamlが必要なのでこちらもインストールしておく。 % pip install pyyaml 現在anyenv + python 2.7.12で運用中。 GCCのバージョン最新trunkではg++ 4.8以上を要求されるようです。g++ --version して4.6とかだったら以下のサイトを参考にインストール。(再ログイン必要かも) add-apt-repositoryがない場合はpython-software-propertiesパッケージで導入。 GCC4.8系を追加で入れたのにビルドエラーが出る以下のようにしてシンボリックリンクを4.8系に更新する。 % sudo su - # cd /usr/bin # ARCH=$(cc -dumpmachine) # ln -fs gcc-4.8 $ARCH-gcc # ln -fs g++-4.8 $ARCH-g++ ソースコードリポジトリを持ってくる% git clone --recursive https://github.com/crawl/crawl.git デフォルトではディレクトリ名がcrawlになるので変えたい場合は % git clone --recursive https://github.com/crawl/crawl.git (目的のディレクトリ名) gitoriousのリポジトリはもはや更新されていません。既存のリポジトリがある場合は移行しましょう。 (Git管理下のディレクトリに入ってから) % git remote set-url origin https://github.com/crawl/crawl.git Webtile版編集source/AppHdr.hのDGAMELAUNCH定義を有効化 // #define DGAMELAUNCH ↓ #define DGAMELAUNCH 同じくDGL_MACRO_ABSOLUTE_PATH定義をコメントアウト #define DGL_MACRO_ABSOLUTE_PATH ↓ // #define DGL_MACRO_ABSOLUTE_PATH webserver/config.pyを編集してプレイ状況表示用のファイルmilestonesのパスを変更 milestone_file = "./saves/milestones" crawl-ref/source以下にrcsディレクトリを置く。別の場所からシンボリックリンクを張ってもよい。 mkdir /path/to/crawl/crawl-ref/source/rcs コンパイル% cd crawl-ref/source % make WEBTILES=y SAVEDIR=saves マルチコアなPCの場合-jオプションで並列コンパイルによる高速化を期待できる。 再ビルド時にはmake cleanしてからのビルドを推奨する。タイル周りの変更があった場合、タイルが化けるおそれがある。 本体を何かしらいじってデバッグする際には make debugが役立つ。→DCSS/デバッグガイド ゲームサーバーの起動% python webserver/server.py
トラブルシュート(備忘録)DCSS 0.16未満をチェックアウトしようとしたときにサブモジュールが取得できない古いバージョンではサブモジュールのURL指定がgitoriousのままになっています。 % git submodule update --init でサブモジュールを取得しましょう。 Ubuntu 18.04でDCSS0.18未満をコンパイルしようとしたときにmi-enum.hの生成に失敗するPerl 5.26に上がっている影響でcrawl-ref/source/util/gen-mi-enumの実行の際にエラーが出ます。 - s/^enum monster_info_flags\n{\n//m && s/^\s*NUM_MB_FLAGS.*//ms + s/^enum monster_info_flags\n\{\n//m && s/^\s*NUM_MB_FLAGS.*//ms 過去のバージョンがG++7系でコンパイルできないgcc-5、g++-5をインストールして(gcc-5は不要かも) % sudo apt install gcc-5 g++-5 コンパイラのバージョンを指定します。 % make WEBTILES=y SAVEDIR=saves GCC_VER=5 各種独自設定試験鯖独自拡張分のコードはgithubに公開してるので適宜見てください 手動dump出力の際にチャットに出るURLの設定webserver/config.pyのmorgue_url設定を書き換える。 ("dcss-web-trunk", dict( name = "DCSS trunk", (中略) morgue_url = "http://lazy-life.ddo.jp:8080/morgue/%n/", #デフォルトはNone(出力しない), %nにはプレイヤー名が挿入される ログ出力webserver/config.pyのlogging_config['filename']をコメント解除し、必要なら適宜ファイルパスを変更します。 logging_config = { # "filename": "webtiles.log", ↓ "filename": "webtiles.log", ログは自動的にログローテーションされ、デフォルトでは10メガバイト×5ファイルです。 ローテーションでの最大ファイル数は以下のように設定を追加することで変更できます。 logging_config = { "filename": "webtile.log", "level": logging.INFO, "backup_count": 100, # ←ここを追加 "format": "%(asctime)s %(levelname)s: %(message)s" } scores/logfiles過去のスコアはビルド時に指定されたセーブデータディレクトリにscores*2という名前で各種情報が保存され、ランキング表示等のタイミングで適宜参照されます。 v=0.15-a0:vlong=0.15-a0-1379-g772b624:lv=0.1:tiles=1:name=dplusplus:race=Demons pawn:cls=Fire Elementalist:char=DsFE:xl=27:sk=Stealth:sklev=23:title=Impercepti ble:place=D::$:br=D:lvl=0:absdepth=1:hp=203:mhp=203:mmhp=223:str=17:int=21:dex= 17:ac=41:ev=23:sh=9:god=Ashenzari:start=20140515150443S:dur=52909:turn=120614:a ut=1170730:urune=4:nrune=4:kills=3750:fifteenskills=Fighting,Short Blades,Dodgi ng,Stealth,Spellcasting,Fire Magic:status=deflect missiles:gold=1640:goldfound= 12050:goldspent=10410:sc=1848548:ktyp=winning:dam=-9999:sdam=0:tdam=0:piety=156 :end=20140520154553S:map=ncdulo_wetmaze:tmsg=escaped with the Orb:vmsg=escaped with the Orb and 4 runes! scores*の方はランキング画面などを実装する際に有用ですが、最大SCORE_FILE_ENTRIES*3件までしか保存しないため注意です。 また、endで指定してあるdump日付は月の項がなぜか1-12でなく0-11になっているのでそのままではdumpのファイル名に使用できません(dumpのファイル名の月部分は1-12)。注意すること。 ttyrecswebserver/config.pyで指定したディレクトリにゲーム中のコマンド記録が保存されます。 games = OrderedDict([ ("dcss-git", dict( (中略) ttyrec_path = "./rcs/ttyrecs/%n", 生成される*.ttyrecファイルはけっこうなファイルサイズがあり、プレイ回数に応じてどんどん増えていくため、レンタルサーバなどディスク容量が潤沢でない環境だとなんらかの対策を打つ必要があります。
関連リンク
|