DCSSトッププレイヤーの設定ファイル拝見
この記事は Roguelike Advent Calendar 2016 の14日目の記事です。
前回、前々回の記事で設定ファイル周りをひとくさり書いてみました。
設定ファイルを自分で育てていくのもよいことですが、他人のを見てインスピレーションの助けとするのもいい経験です。
ここでは、先日行われたDCSS 0.19 Tournamentのベスト10プレイヤーの設定ファイルを拝見することにしましょう。
設定ファイルは公開されており*1、誰でも見ることが可能です。
- Crawl 0.19 Tournament Leaderboard
http://dobrazupa.org/tournament/0.19/overview.html
■Yermak氏
0.18トーナメントに引き続き連覇のYermak氏です。各神・各種族・各職業(・Nemelex choice)でのクリアで獲得した得点が大部分を占めており、オールラウンドプレイヤーと言えるでしょう。
{ local need_skills_opened = true function ready() if you.turns() == 0 and need_skills_opened then need_skills_opened = false crawl.sendkeys("m") end end }
ゲーム開始直後に'm'コマンドでスキル割り振り画面を開く機能ですね。毎回要る割に微妙に忘れがちなので便利です。
この例ではready()関数に直で書いていますが、別の関数も呼びたい場合は関数に切り分けるとよいでしょう。
[追記]:この関数は公式配布物のadvanced_optioneering.txtに含まれていたもののようです。
■UltraViolent4氏
message_colorへの設定が異様に多いです。
重要度別に色分けされており、並々ならぬ注力具合が感じられます。
■Dynast氏
デフォルト設定のみ。これで15連続勝利達成というのは驚きです。
■cosmonaut氏
spell slot設定が多い。後半はHilariousDeathArtist.rc(後述)から拝借しているようです。
■ParticlePhysics氏
force_more_message(--more--を強制するメッセージ)で強敵との出会い頭を警告する記述が主です。
runrest_ignore_messageへの追加で、自動探索中に生肉が腐っても無視して動くような動作になっています。
■hyperimplojin氏
force_more_message、flash_screen_message(画面をフラッシュさせるメッセージ)、auto_exclude(特定の敵を自動移動禁止エリアに指定)への追加に気合いが入っています。
■Manman氏
autoinscribe(アイテムに特定の銘を打つ)の記述が目立ちます。
コメントアウトされていますがhugedmg.rcは多分以下のようなやつですね。ダメージ警告関数の別実装。
include文で同鯖の別アカウントの*.rcファイルをincludeできるのは微妙な気もします。
■shummie氏
後述のHilariousDeathArtist.rcとgammafunk.rcの盛り合わせのようですね。
独自に定義された?skillto()関数は、特定のスキルを指定した数量まで上げるのを監視してくれるようです。
バックラー用に盾スキルをちょっとだけ上げたいとか、そういう時に便利でしょう。さらに低スキルレベル縛りプレイにも。
■その他の設定ファイル
あと、トーナメント上位者ではありませんがReddit等で設定例のおすすめに挙げられていたものを挙げます。
■HilariousDeathArtist.rc
各所で使われている人気のライブラリのようです。
前回の記事で書いた"You take 10 damage, and have 213/223 hp!"等表示するスクリプトもこれ由来だったようです。(HDamage.txtで定義)
■gammafunk.rc
開発チームの一人gammafunk氏のrcfileです。
様々なオプションについて詳細にお役立ち設定が記述され、Luaスクリプトも色々載っています。
そのまま使うもよし、オプションやLuaスクリプトの使い方のサンプルとして使うもよし。
■gretell.rc
プレイヤーの周辺にいる敵のスポイラーを出してくれる関数を提供する設定ファイルのようですが、中身を見ただけでヤバいですね。
qw.rcは200KB足らずでしたが、これは圧巻の600KB超えです。
ただ、現状メンテナンスされておらず0.19-stableではそのままでは動作しない模様。ベタ書きされているデータも古くなっているでしょう。
公式フォーラムでの当時のトピックはこちら。→ https://crawl.develz.org/tavern/viewtopic.php?f=17&t=12011
■終わりに
DCSSの設定ファイルは奥深く、それだけで記事が何本も書けてしまいそうです。
まあ設定ファイルを育てるのもいいけどダンジョンにもちゃんと潜ろうね!(白目)
次の記事はkudzu_naokiさんの「1-Bit Rogueのご紹介」です!
*1:そうでないとトーナメント運営がクラン設定を読めませんからね
DCSS client luaを触る
この記事は Roguelike Advent Calendar 2016 の12日目の記事です。
前回の記事ではLuaスクリプトのお化けのような自動探索botを紹介しましたが、そこまでやりすぎ感を出さなくてもスクリプトを普段のプレイングに役立てていくことは十分に可能です。
とはいえ、Luaの解説をやっていたら本題が進まないため、Luaの文法に関しては以下のサイトを参照してください。
オンラインでLuaスクリプトの動作を確かめられるサイトもあります。
- http://ideone.com/ (左下の「Java」となっているボタンを押して「Lua」に切り替えてください)
■DCSSにおけるLua
Dungeon Crawl Stone Soup(以下DCSS)の本体はC++で書かれていますが、マップ定義などの編集のしやすさといった利点から、Luaというスクリプト言語も利用されています。
だいたいソースリポジトリツリーのdat/以下にあります。
オンライン版ではLuaファイルを直接いじることはできないため、設定ファイルを介して色々やっていくことになります。
■一行Luaの使い方
設定ファイルの行先頭に : を打つことで、一行Luaスクリプトを使うことができます。
以下のように条件分岐するのが主な使い方です。
: if you.race() == "Ogre" or you.race() == "Troll" then # オーガとトロルは大岩を拾う autopickup_exceptions ^= <large rock : end
you.race()は自種族を示す文字列を返してくれる組み込みAPIです。
■複数行Luaで関数を定義する
もうちょっと複雑な処理をしたい場合、Luaで関数を書いて適宜呼び出しする必要があります。
自分の名前を呼んでくれる関数を組んでみましょう。複数行スクリプトの場合はスクリプト部分を中括弧で囲む必要*1があります。
{ function hello() crawl.mpr("Hello, " .. you.name() .. "!") end }
crawl.mpr()は文字列を渡すとゲーム中にメッセージとして表示してくれる組み込みAPIです。
you.name()は自分のキャラクター名を返してくれる組み込みAPIです。
実際にゲーム中で呼び出すにはいくつか方法があります。
デフォルトで呼び出される関数を自分で書く
if (!clua.callfn("ready", 0, 0) && !clua.error.empty()) mprf(MSGCH_ERROR, "Lua error: %s", clua.error.c_str());
main.cc 1437行目ですが、コマンド入力ごとに"ready"というLua関数を呼び出すようになっています。つまり、ここを自分で書けばゲーム中でもよろしく呼んでくれるわけです。
{ -- (中略) function ready() hello() end }
こんな感じ。
ゲーム中での動作は以下のような感じになります。
まあ、このような毎回表示を行うような関数は実用上は不向きではあります。
前回記事のqw botもready()関数を独自定義することによって「何かボタンを押したら行動」という動作を実現させています。
デフォルトで呼び出される関数を乗っ取る
ゲーム中にTabを押すと最寄りの敵を殴るようになっていますが、これはdat/clua/autofight.luaのhit_closest()関数で定義されており、設定ファイルで上書きが可能です。
{ -- (中略) -- hit_closest関数上書き function hit_closest() crawl.mpr("Tab pressed!") hello() end }
■もうちょっと実用的な例
さすがにハローワールドでは実用性に乏しいので、もう少しゲームに使えそうなのを考えてみます。
ダメージ量警告
DCSSスレの過去ログを眺めていたらこのような投稿がありました。
Dungeon Crawl Stone Soupスレ part8 >>168 より
168 :名@無@し:2014/07/25(金) 22:06:04 ID:??? webtiles見てたら You take 10 damage, and have 213/223 hp! という風に受けたダメージ量をメッセージ欄に表示させてた人が居たのですが こういうのはinit.txtとかを弄ればローカルの環境でも出せるんでしょうか
今になって考えるとたぶんLuaスクリプトでなんかやってたんでしょうね。組んでみましょう。
どうせなのでついでに、10〜19ダメージなら黄文字、20ダメージ以上で赤文字で出すことにします。
{ local old_hp = -1 local old_mhp = -1 function turn_hp_warning() if old_hp < 0 then old_hp, old_mhp = you.hp() end local hp, mhp = you.hp() local msg = "You take " .. old_hp - hp .." damage, and have " .. hp .. "/" .. mhp .. " hp!" if old_hp - hp >= 20 then crawl.formatted_mpr(msg, "danger"); elseif old_hp - hp >= 10 then crawl.formatted_mpr(msg, "warn"); end old_hp, old_mhp = hp, mhp end function ready() turn_hp_warning() end }
WebtileにおけるCtrl-W代替コマンド
ブラウザのアップデートのせいか、最近FirefoxでCtrl+Wをフックしてくれず、「タブを閉じる」が発動してしまうようになりました。
まあゲーム中ならブラウザ側が警告してくれるのでよいのですが、中継地点の設置ができないのは困りものです。
普通のキーマクロだとCtrl+○系のコマンドは直接記述できないようなので、Luaスクリプトで関数を書きましょう。
- [追記]: マクロでCtrl+○系を使う方法はありました。"\{^W}"を記述するといいです。
{ function set_waypoint() crawl.process_keys(control('w')) end function control(c) return string.char(string.byte(c) - string.byte('a') + 1) end }
あとは適当なキーに'===set_waypoint'を登録すればOK。
Repel Missiles自動張り直し
直近のメッセージでRepel Missilesの効果が終了した場合、(失敗率が10%以下なら)自動で張り直します。
もちろんターンは消費するので微妙かもしれません。
{ function recast_rmsl() spell = "Repel Missiles" if crawl.messages(5):find("You feel your spell is no longer protecting you from missiles.") or crawl.messages(5):find("You feel less protected from missiles.") then rmsl = spells.letter(spell) if rmsl and spells.fail(spell) <= 10 then crawl.process_keys("z" .. rmsl .. ".") end end end -- ready()からの呼び出し略 }
■組み込みAPI
Lua側に公開されたDCSS本体のAPIはsource/l_○○.ccで定義されています。
先程使ったyou.name()、you.hp()はl_you.ccに、crawl.mpr()、crawl.formatted_mpr()、crawl.messages()はl_crawl.ccに、spells.letter、spells.fail()はl_spells.ccに、といった感じです。
長くなりすぎるのでこの記事では詳細を省きます。気力が湧いたらなんか書きます(フラグ)
*1:< 〜 >で囲んでもいいです
DCSS qw botの中身を探る
この記事は Roguelike Advent Calendar 2016 の8日目の記事です。
■設定ファイル、使っていますか?
DCSSの設定ファイルには様々なオプションが設定でき、知っておくとゲームを円滑に進める助けになります。
配布版ならsettings/init.txtを編集するなり、Webtileなら(edit rc)のリンクを押して編集画面を出すなりしましょう。
よく使うところでは
# 余分な --more-- をスキップ show_more = false # スキル割り振りをマニュアルモードで開始 default_manual_training = true # HPが30%以下になると警告(デフォルトは10%) hp_warning = 30
でしょうか。
設定ファイル中ではLua言語によるスクリプトも使うことができ、
: if you.race() == "Ogre" or you.race() == "Troll" then # オーガとトロルは大岩を拾う autopickup_exceptions ^= <large rock : end
のように場合分けで設定をすることもできます。便利!
■DCSS qw bot
本題です。
DCSS開発チームの一人elliptic氏が、DCSSを自動的にプレイしてくれるbotを公開していました。
(やや古いバージョンがDCSS本体のリポジトリツリーにも含まれています。*1 )
はて、いったいどういう仕組みで動くものか? とりあえず中身を見てみました。
すると仰天、qw botの本体は7700行にも及ぶ設定ファイルqw.rcだったのです。
■動かしてみよう
botのお手並み拝見ということでローカルで動かしてみます。READMEにはオンラインサーバでの動かし方も書かれていますがあまり推奨しません(特にトーナメント中は)。
https://github.com/elliptic/qw/ のページの"Clone or download"を押すと"Download ZIP"というボタンが出てくるので、ボタンを押してqw-master.zipをダウンロードします。
zipを展開するとその中にqw.rcというファイルがあるので、それをDCSSのsettingsディレクトリにコピーします。
settings/init.txtを編集し、末尾に
include = qw.rc
と追記します。
qw.rcの先頭には各種設定がありますが、以下の項目でキャラクターの初期組み合わせを指定します。
# 闇ドワーフ戦士斧、ガーゴイル狂戦士斧、ミノタウロス狂戦士斧のどれかでスタート combo = DDFi.waraxe, GrBe.handaxe, MiBe.handaxe
ゲームを開始すると自動的にqwというキャラ名でゲームがスタートしています。Tabを押してbot運行モードに切り替えると、あとはSpaceやその他のキーを押しっぱなしでゲームが進みます。'%'キーでいつもの通りステータスや装備が確認できます(反応しない場合は何度か押してください)。手動操作に戻したい場合は再度Tabを押します。
■どんな感じ?
良い点
けっこう賢いです。敵の群れを狭い通路まで釣ったり、階段昇降して敵を分散させたり、適切に武器防具を交換したりをこなしているようです。店が出たら買い物もします。
(トログ信仰の場合)ここぞというところでバーサークして相手を殲滅したり、トログの御手でMR上昇&回復したり、仲間を召喚したりで適切に進んでくれます。まあ、トログ信仰(とそれを最初から得ている狂戦士)が強いってのもありますが。
デフォルトの組み合わせ(闇ドワーフ戦士斧、ガーゴイル狂戦士斧、ミノタウロス狂戦士斧)での序盤性能は高く、ルーンを拾う所まで進むこともしばしばです。というか私より強いんじゃね?
悪い点
悪手というか機能の限界というか、以下のような動きが見られます。
- 魔法は使えない。暗殺ビルドもできない様子(短剣スタートでも斧に持ち替えたり)
- エルフの大広間/Elven Hall、地下墓地/Cryptには寄らない。
- ポータルへ寄らない(下水道/Sewerの入口を選択するが行かないような動きをする)と思いきや、納骨堂/Ossuaryに入ったことはあった。
- 指定された神の祭壇があっても入信しないことが多々ある。
- アビスに飛ばされた際、出口が見つかっても直行しない。
- オーブを拾った後もZot:5の未探索領域をうろうろする。階段に直行しない。
- (バーサークが切れた状態でまだ囲まれているなど)危機に陥った際にテレポ巻で逃げる傾向がある。
- 運が良ければいいが、敵のまっただなかに突っ込んでしまうことがあるため普通は悪手。
- 沼の特殊マップでルーンの上にflame cloudが湧いている場合、その場でうろうろを続ける。
- それを避けるようなコードが書かれている形跡はあるが、うまく働いていない様子。
- まあ、一旦手動に戻せばいいのだけど。
- アーティファクト片手斧が下賜された/自然生成された時でも無視することがある。
■どんな仕組み?
最近流行りの人工知能……というわけでもなく、基本は「列挙された行動リストの中にある行動を適宜条件判定して実行」という形ですね。
6983行目から行動リストの定義が乗っています。以下抜粋です。
plan_pre_explore = cascade { {plan_fly, "fly"}, {plan_ancestor_life, "ancestor_life"}, {plan_sacrifice, "sacrifice"}, {plan_upgrade_weapon, "upgrade_weapon"}, {plan_maybe_upgrade_armour, "maybe_upgrade_armour"}, {plan_use_good_consumables, "use_good_consumables"}, } -- hack -- (中略) plan_emergency = cascade { {plan_cure_starving, "cure_starving"}, {plan_cure_confusion, "cure_confusion"}, {plan_coward_step, "coward_step"}, {plan_remove_terrible_jewellery, "remove_terrible_jewellery"}, {plan_teleport, "teleport"}, {plan_dd_recharge_teleport, "dd_recharge_teleport"}, {plan_cure_bad_poison, "cure_bad_poison"}, {plan_drain_life, "drain_life"}, {plan_heal_wounds, "heal_wounds"}, {plan_cloud_step, "cloud_step"}, {plan_hand, "hand"}, {plan_resistance, "resistance"}, {plan_heroism, "heroism"}, {plan_bia, "bia"}, -- 注: Brother in Arms {plan_sgd, "sgd"}, -- 注: Summon Greater Demon {plan_divine_warrior, "divine_warrior"}, {plan_apocalypse, "try_apocalypse"}, {plan_slouch, "try_slouch"}, {plan_hydra_destruction, "try_hydra_destruction"}, {plan_grand_finale, "grand_finale"}, {plan_dd_recharge_heal_wounds, "dd_recharge_heal_wounds"}, {plan_wield_weapon, "wield_weapon"}, {plan_swap_weapon, "swap_weapon"}, {plan_water_step, "water_step"}, {plan_finesse, "finesse"}, {plan_drac_dig, "try_drac_dig"}, {plan_berserk, "berserk"}, {plan_other_step, "other_step"}, } -- hack
ある意味愚直ともいえるのですが、それでもこの方式でいい感じに動き、あまつさえクリア直前まで進行可能というのは驚きです。
Tabを押すとbot運行モードがオンオフされるのは、元々Luaスクリプト(dat/clua/autofight.lua)で組まれていたhit_closest関数(Tabを押したら最寄りの敵を殴る機能)を乗っ取る形で実装されているからですね。なるほど。
DCSS 0.16-ja 開発こぼれ話
この記事は Roguelike Advent Calendar 2016 の3日目の記事です。
昨年からちまちまと作っていたDCSS 0.16日本語版がだいたい形になってきたので、その開発の途中に起きた出来事などを話してみようと思います。
他のゲームの日本語化事情はよくわかりませんが、DCSSについてはメッセージがリソースファイルに分離されておりそれを差し替えれば万事OK……みたいな事はありません。
表示されるメッセージ文字列の多くが動的に組み立てられ、英語に特有の処理をされます。もちろん、日本語に配慮されるわけもなく、そこらへんは自分で追加する必要があります。
試行錯誤しながらなんとかやっていったわけなのですが、その途中でも珍妙な現象が起きたりしていました。以下ではそれらを紹介していきます。
■いきなり全角文字列の扱いにつまずく
日本語訳を始めるにあたって、
「とりあえず最初の画面を日本語化してみよう!」
選択メニューがガタガタに文字ズレしていますね。これで遊べないわけではないのですが、見た目としては散々です。一体どうしてこうなってしまうのか?
選択メニューの表示の一環として、ざっくり言うと「全部で○文字になるまで半角空白を詰める」という処理があります。「全部で○文字」というのが曲者です、言うまでもなく全角文字は半角文字の倍の文字幅*1だからです。
本家英語版はもちろん全角文字を考慮しなくてよかったのですが、日本語化するとなるとそうもいきません。
ということで、「文字幅が△になるまで半角空白を詰める」という処理に直すため「全角文字で余計に幅が増えた分だけその後に詰めるべき半角空白の数を減らす」という処理を追加することになります。
差分だけ見れば簡単な修正*2でしたね。めでたしめでたし。
■今度は半角空白の扱いにつまずく
めでたしめでたしと言いましたが、その処理を実装したことで別の画面で弊害が出てきました。
r - ★冷たき死のダガー(+9){freeze,rPoisrF-rC++MR+}
なんだかアーティファクトの銘が詰まって表示されていますね。想定された本来の表示はこれです。
r - ★冷たき死のダガー (+9) {freeze, rPois rF- rC++ MR+}
先程の処理―「全角文字の分だけその後の半角空白の数を減らす」―がこちらにも適用されてしまったせいで、全角文字の後の半角空白が消えてしまっていますね。
かといって、先程の処理をやめるわけにもいきません。そこで苦肉の策として、
「半角空白を、半角空白のように見えるけど半角空白じゃない文字に置換して表示」
という結果になりました。
U+00A0(No-break space)は見た目が半角空白と区別しにくいですが、別の文字です。詳しくは以下のページを参考に。
HTMLの心得がある人で、 という文字参照でスペースが入れられるということを知っている人も多いでしょうが、ここで使われるのが通常の半角空白ではなくNo-break spaceです。
今度こそ本当にめでたし。
■「記憶力を1消費して刺したの呪文を記憶しますか? (残り記憶力: 6)」
原文は"Memorise Sting, consuming 1 spell level and leaving 6?"です。"毒針/Sting"(の呪文)が通常攻撃の"刺した/sting"と重複していますね。
melee_attack.ccの"sting"の文字列を直接ソース上で書き換えるという手もあるのですが、とりあえず呪文の方は
%%%% [spell]Sting 毒針 %%%%
の様に、一律[spell]というprefixを付けて辞書ファイルに記述することになりました。
■「フライ級の発動」?
STR型ビルドでUnarmed Combatを最大まで上げると称号が"〜 the ○○weight Champion"となるため、辞書ファイルに以下のように記述していました。
%%%% Heavy ヘビー級 %%%% (中略) %%%% Fly フライ級 %%%%
ところで、天狗とかガーゴイルの種族で特定のレベルに達すると自分の翼で飛べるようになります。
はい、"Fly"がかぶってしまいましたね。飛行の指輪とかの方は"Evoke flight"なので油断しました。
これもまた[title]Flyとすることで回避しました。
■おわりに
2016年も12月に入り、DCSS 0.16-jaもソースをいじる部分はだいたい終わってきました。
来年はいよいよDCSS 0.19-jaに手を付けて英語版最新に少しでも追いつこうかと思います。まあ成果物を流用できるので来年中に出せるんじゃないかな……気長にご期待ください。
次は、deskullさんの「変愚蛮怒の今後のマイルストーン@2016末」です。
私家版・DCSS日本語版翻訳のガイドライン
4月から公開したDCSS 0.16日本語版ですが、そこそこ遊ばれているようで嬉しい限りです。
さて、溜まり場DCSSスレでのitem description翻訳の流れで
304 名前:名@無@し[sage] 投稿日:2016/11/21(月) 02:32:08 id:Sec/uRig [3/3] ところで肝心のD++氏が翻訳の何を求めてるか分からないと意味が無いけどそこは大丈夫?
という投稿があり、この際なのでDCSS日本語版の翻訳スタンスをまとめておきます。
以下は原則としての方針であり、例外もあるということにご注意ください。
- 用語は無印DC準拠
- これは間違いだろうというのは変えています。一例として「〜〜召換」は「〜〜召喚」に変更しました。
- 用語追加分は既存用語の雰囲気を踏襲
- カタカナ語は控えめに(武器種など普通に使ってよい場合も)
- 文章もDC無印と原文が同じなら不都合のない限りそれに合わせていく
- 英文で同じ文・単語は同じ日本語文・単語に、違う文・単語は違う日本語文・単語にする
- 要するに英文で区別可能なメッセージは日本語でも区別できるようにします。
- 加速終了時、減速時は共に"You feel yourself slow down."ですが、これは例外として双方の日本語訳を別々にしています。(DC無印でもそうなっています)
- プレイヤー称号とモンスター名で同一な英語文字列となる例が散見されますが、これについてはそれほど同一日本語に訳すのにこだわらない方向で行きます。
- 語の重複はなるべく避ける
- 二重否定はなるべく避ける
- 全角英数字、全角記号(丸括弧等)は使わない。
- 単一の疑問符、感嘆符は全角にする。連続する感嘆符(大ダメージ時など)は半角。
- 疑問符・感嘆符の有無は文章の自然さを失わない範囲で原文を踏襲する。
- 漢字は適切にひらがなに開く(徹底しなくてもよい)
- コンソール版も一応サポートしていることもあり、折り返しの目安は半角80文字(大きな表示の崩れなどがなければ無視することも)
以下は翻訳作業に協力してみたいという人向けのガイドラインです。
- 提出形式はあまりこだわりませんが下記の様式だとこちらが便利です
- Github上でプルリクエストを投げる。パッチ用のブランチを切ってください。
- メールもしくはアップローダ経由でパッチを投げる。匿名・連絡先不明だとコミットログに残せないため捨てハンドルネーム・捨てメールアドレスでもいいので付記してもらえると助かります。
- 「ここがおかしい」などの単品指摘はDCSS日本語版 未訳メッセージ報告所がアカウントを作る手間もかからず便利でしょう。
- (当日本語版においては)日本語訳は英語原文の直訳に近い訳にすることを旨とします。日本語でよっぽど不自然な文になる場合は一部ニュアンスを削ることはあります。逆に、原文にないニュアンスを日本語訳で付与することは推奨されません。
- 言い回しを変えることはあっても、意味を変えることはダメです。
- メッセージの文脈を確認すること
- 文脈を把握していないとよくわからない文を生成してしまいがちです。Crawl wiki、wizard modeなどで実際の動きを知ることは翻訳の大きなヒントになります。
- 文章全体の機械翻訳の直接利用は避ける
- 最近Google翻訳などが賢くなってきたようですが、ダンジョンRPGというニッチなジャンルに適用するにはまだ荷が重いようです。あくまで参考程度に。
- オンライン辞書の利用自体はどんどんするとよいと思います。私は主にWeblio英和辞典、まれにUrban dictionaryとかその辺を使っています。
- 煽り厳禁。
さてそろそろDCSS 0.19-jaの作業にも取りかかって行こうと思います。これからも石鍋試験鯖、およびDCSS日本語版をよろしくお願いします。
DCSS 0.16日本語版αリリース
このたび、石鍋試験鯖ではShotaX氏らのDCSS 0.13日本語化の成果をもとに作成したDCSS 0.16日本語版をαリリースします。
訳は原則としてDungeon Crawl無印日本語版(xppm氏らによる)に準拠していますが、そうなっていない場合はご指摘いただけるとありがたいです。
想定問答集
■0.16ですか? 0.17やtrunkは?
日本語化の作業を始めたころに出ていた安定バージョンが0.16だったためそうなっています。
作業が一段落し次第0.17に取りかかりますが、まだしばらくかかりそうです。
trunkについては、開発チームの開発速度が活発なのもあり、0.17の日本語化が終わっても対応するかどうかは微妙です。
[追記]4/26に0.18ブランチが切られましたが、同じ理由でしばらく手を出せません。やるとしたら面倒が無いので0.17と同時進行すると思います。0.16jaをやってる間に0.19が出たので0.19jaのみの進行にします。さよならPakellas。
■どこで遊べますか?
石鍋試験鯖にアクセスすることで、ブラウザ上で遊べます。以下のリンクからどうぞ。
遊ぶにはユーザ登録(無料)が必要ですが、観戦するだけなら登録はいりません。
「Register」をクリックしてID/pass/メールアドレス(任意)を入力して登録したら、ログインして「DCSS 0.16-ja」をクリックしてスタートです。
DCSS自体初めて、という方は「Tutorial 0.16-ja」からやってみるのもよいでしょう。簡易版コマンド一覧は'?'キー二回押しで参照できます。
■英語部分が残っていますが、未完成なのですか?
はい。
現状、大抵の動作の和訳が終わっていますが、モンスターのセリフ、各種解説文、文学作品の引用等々ゲームに直接関係しないわりにやけに量が膨大なものについては後回しにしています。
また、細々とした未訳箇所でテストプレイが行き届いていないものも多数あります。
完全に終わってからとなるといつになるやら分からないため、4/1ネタとして一旦公開することにしました。
■今まで英語版をプレイしていましたが、モンスター名や魔法名が日本語になると対応がよく分かりません
アイテム、モンスター、魔法、地形などはコマンドで解説文を出すと左上に日本語表記、右上に原語表記が表示されるようになっています。
■既知のバグについて
- Webtile版において、'i'コマンドでアイテム一覧を出し、アイテムを選択した後'i'を押すことによって銘を付けることができますが、日本語版だと入力のためキーを押した際の画面反映がおかしくなります。原因は今のところ不明です。
- 対処法: '{'コマンドから銘を付けるようにしてください。
その他、直すのに手間取りそうなのはGithub Issueに載せています。
おわりに
それでは、どうぞゲームをお楽しみください。これをきっかけにDCSSを遊ぶ人が増えると幸いです。