The Hand of Doom

2016-12-20

Roguelikeゲームはどこまで煩雑であるべきか?

この記事はRoguelike Advent Calendar 2016の20日目です。

あっというまに4/5が経過しましたAdvent Calendar、なんとか完走できそうですね。最後までよろしくお願いします。


なお、本日はネタを用意できなかったため雑談枠となります。

色々と進捗ダメでした。

小さな作業を積む楽しみ

NetHackをベースに話をします。

古き良きこのゲームには継続的に小さいコストを払い続けることで明確なリターンを得る仕様が多数あります。

例えば満腹度を程々に保つと耐久を鍛えられる。

例えば投擲を多用すると素早さを鍛えられる。

例えばゴミを拾い集めて雑貨屋に積めば小銭が手に入る。

例えば祭壇に死体を捧げ続けると伝説の品が手に入る。

等々。

やらなくても勝てるかもしれないけど、やると明確に有利になるチマチマした作業がたくさんあります。

小さい優位を重ねていく過程は非常に楽しいもので、それだけで何時間も遊んでしまうほど。

必然的に無駄に細かな描写が増え、独特の雰囲気を演出することにも貢献しています。

情報の格差

そういう"小さなアドバンテージの累積"は楽しい体験をもたらすのですが、問題が一つ。

プレイヤー間の情報格差がそのままゲームプレイに直結することです。

殴られたらダメージを受けた、薬を飲んだら回復した等、即座に原因から結果が出る現象と比較すると、

ある一定期間の行動の蓄積が何かに反映されるというシステムはプレイヤーから見えにくくブラックボックス化しやすいです。

ブラックボックスが多ければ多いほど、ブラックボックスの中が見えるプレイヤーの方が有利に動けるのは必至。

"ソースコード読まない奴は損をしろ"スタイルならばそれで良いのですが、"誰でも公平に遊べるゲーム"を目指すなら避けることになります。

ソースコード読んだ奴がスポイラー書くから良いって?

それは"スポイラー読まない奴は損をしろ"になってるだけなので大体同じですよ。

煩雑さと情緒

DCSSの話をしましょう。

DCSSは"誰でも遊べるゲーム"の方向に舵を切っていて、"チマチマと動いて小アドバンテージを得る"動きを積極的に排除しています。

経験値プールをなくし、自在に経験値を割り振るようになりました。迷宮草を殴って体を鍛えるものはいなくなりました。

アイテム重量とアイテム破損を排し、ベースキャンプの重要性が減りました。巻物や薬が消えるストレスから皆が解放されました。

信仰値を稼ぐときの面倒事がなくなりました。祈らず、捧げず、普通に動いているだけで満足する神ばかりになりました。

矢弾の種類が大幅に減り、エゴと修正値がなくなりました。強い矢を選別する必要も温存する必要もなくなりました。

バッドノウハウが淘汰され、新たなプレイヤーが挑みやすいダンジョンに変化しています。

変化の代償として懐古厨が寂しさを覚えるわけですが、致し方のないところでしょう。

結論

めんどくさい単調作業にも風情はあり、消えるとそれはそれで寂しい。

めんどくさいダンジョンにソースコードやスポイラー頼りに潜るのが至高なので、たまにやるNetHackは楽しい。

次回予告

21日目はKataOcean氏で「製作者視点から見たローグライクの魅力」です。

2016-12-13

ZinのRecite解析してみたの巻

この記事はRoguelike Advent Calendar 2016の13日目です。

あっというまに1/2が経過しましたAdvent Calendarですが、まだまだ参加者を募っております。どうぞよろしく。

事の発端

例のDCSS和訳プロジェクトをチマチマと進めておりまして、次の文書にぶつかったわけです。

Preaches to nearby monsters about Zin's laws for a short duration.


The recitation will have different effects depending on the target: the chaotic

and unclean will be affected by powerful and damaging effects, undead and

demons will be affected by weaker rebukes, and any other intelligent creatures

will have confusion sown amongst them, with heretics and priests of gods other

than Zin being punished much more strongly. The effectiveness of the recitation

is increased by Invocations skill.

この文章を見る限りだと、どうやらお経アタックしてばっちいモンスターと異教徒に大ダメージという技らしい。

が、ところどころどう訳したものかと悩んだのでとりあえずゲームの挙動を見ることに。

ソースに潜る

とりあえずability.ccを見てABIL_ZIN_RECITEを処理してるところを見る。

_do_abilityのcase ABIL_ZIN_RECITEを見ると、you.duration[DUR_RECITE]を増加させている。

ここではRECITE時間を開始しているということらしい。

次にyou.duration[DUR_RECITE]で検索するとplayer-reacts.ccで参照されている部分にぶつかる。

ここで毎ターンRECITE時間を減らしつつ、_handle_recitationを実行している。

では_handle_recitationは何をしてるか見てみると、視界内のモンスターにzin_recite_to_single_monsterを投げる処理をしている。

どうやらここが本体であるようだ。

zin_recite_to_single_monster

まずzin_check_recite_to_single_monsterを呼んでeligibilityを決定している。

対象のモンスターのCHAOTIC/IMPURE/UNHOLY/HERETICの4項目それぞれの属性がどれだけ大きいかを決定している。

CHAOTICはモンスターが混沌寄りであれば大きな値となる。

IMPUREはモンスターが不浄であれば大きな値となる。

UNHOLYは実体のないアンデッド or あらゆるデーモンなら1。ゾンビと幽霊ではお経の効き方が違うらしい。

HERETICは知性があれば+1、プリーストなら+1、デミゴッドなら+1、邪悪な神の信者なら+1、善神の信者や戦意のないものなら0。

次にUNHOLY→IMPURE→CHAOTIC→HERETICの順で見て、該当する属性があればprayertypeをそれに決める。

該当が複数なら前者が優先される。

次にパワーを決める。(祈祷スキル+3+信仰値*0.15)/2がpowerとなる。

これを対象のHD+1d6と比較する。

差分が基準値となる。(以下checkとする)

check>0のとき、対象になんらかの効果を与える。ただし50%で不発。

効果表

prayertypecheckeligibilityeffect備考
HERETIC0-41DAZEeligibility==1は異教徒ではない
HERETIC5-91DAZE(50%) CONFUSE(50%)
HERETIC10-141CONFUSE
HERETIC15-1CONFUSE(66%) PARALYSE(33%)
HERETIC0-42-CONFUSE(50%) SMITE(50%)eligibility>=2は異教徒なので効果が凶悪
HERETIC5-92-BLIND(33%) ANTIMAGIC/SILVER_CORONA(66%)アンチマジックが無効の相手には銀オーラになる
HERETIC10-142-BLIND(33%) PARALYSE(33%) MUTE(33%)
HERETIC15-2-MAD(50%) DUMB(50%)
prayertypecheckeffect備考
CHAOTIC0-4ROT(50%) SMITE(50%)腐敗耐性持ちなら必ずSMITE
CHAOTIC5-9SILVER_CORONA(50%) SMITE(50%)
CHAOTIC10-14IGNITE_CHAOS(50%) SILVER_CORONA(50%)
CHAOTIC15-SALTIFY
prayertypecheckeffect備考
IMPURE0-4ROT(50%) SMITE(50%)腐敗耐性持ちなら必ずSMITE
IMPURE5-9SMITE(50%) SILVER_CORONA(50%)
IMPURE10-14HOLY_WORD(50%) SILVER_CORONA(50%)
IMPURE15-SALTIFY
prayertypecheckeffect備考
UNHOLY0-4DAZE(50%) CONFUSE(50%)
UNHOLY5-9CONFUSE(50%) SILVER_CORONA(50%)
UNHOLY10-14HOLY_WORD(50%) SILVER_CORONA(50%)
UNHOLY15-SALTIFY

効果解説

DAZE幻惑する
CONFUSE混乱させる
PARALYSE麻痺させる
SMITESMITEを放つ
BLIND盲目にする
SILVER_CORONA銀のオーラで包み、銀に弱ければ毎ターン2d4-1点の持続ダメージ。さらに照明と同等の効果。
ANTIMAGIC一定期間呪文の成功率を下げる
MUTE永続的に静寂状態にして音の出るアクションを取れなくする
MAD永続的に狂気状態にする。混乱と同等。
DUMB永続的に無能状態にする。麻痺と同等。
IGNITE_CHAOSダメージを与える。よりchaos属性が強い程大きなダメージとなる。
SALTIFYpillar of saltに変化させる。つまり即死。
ROT腐敗させる。混沌や不浄の程度が強い程酷い腐敗となる。
HOLY_WORD聖なる御言葉を放つ

翻訳の結果

ジンの法についての説法を短時間、近くのモンスターに対して行う。


この朗読は対象によって様々な効果を発揮する。

混沌のモンスターと不浄のモンスターは強力で損傷を伴う効果を受ける。

アンデッドとデーモンは少し弱く同様の効果を受ける。

他の知性あるモンスターは混乱するが、異教徒やジン以外の神の司祭はより強力に罰せられる。

朗読の影響力は祈祷スキルにより強化される。

まとめ

ZinのReciteの効果を解析してみました。

起動に1ターンかかりますが3ターン持続で視界内のモンスター全てに効果があり、雑魚にはそれなりに効きそうです。

なお、この解析に時間をかけまくってしまったので翻訳の方は進捗ダメです。

次回

dplusplusさんにバックパス!

2016-12-09

DCSS和訳プロジェクト作業日誌

この記事はRoguelike Advent Calendar 2016の9日目です。

あっというまに1/3が経過しましたAdvent Calendarですが、まだまだ参加者を募っております。どうぞよろしく。

最近のDCSS和訳作業箇所

Transifexとの同期が取れて満足したので、ひとまずそっちは置いといて0.19の和訳をこっそり始めています。

なんやかんやでdat/descriptから手をつけることになりました。

dat/descriptにあるファイルとは

本家DCSSが多言語対応する気がある部分のファイルで、最初からkeyとvalueのペアが与えられています。

「key=value」の形にすればTransifexで使えるので、難しいことはなんにもありません。

これを

f:id:dis-c:20161209164410p:image

こうして

f:id:dis-c:20161209164634p:image

こうじゃ

f:id:dis-c:20161209164959p:image

というわけで、さくっとTransifexで作業できる環境を用意しました。

https://www.transifex.com/dcss/dcss-19ja/dashboard/

興味ある人は覗いてみてください。

さて、あとは和訳するだけです。

圧倒的更新力

0.16時点でdat/descript以下はそこそこ和訳されています。

本家0.16と0.19の間で変更がなかった部分の和訳はそのまま使えるので、とりあえずdiffとってみましょう。

まずability.txtから。

f:id:dis-c:20161209165850p:image

※左側のバーの色付いてるところが変更のあった行

……変更されてない部分の方が少ない。そんなばかな。

もちろん変更の少ないファイルもあるのですが、加筆修正の量が全体的に半端ないです。

既存の訳を使える部分を探すだけで一苦労ですねこれは。

というわけで

進捗ダメです。

一応変更のあまりなかったbackgrounds.txtだけはコンプリートしてみました。

https://www.transifex.com/dcss/dcss-19ja/translate/#ja/backgrounds/102117021

まだまだ未訳の部分、既訳分が反映されてない部分、訳されてるけど怪しい部分など盛り沢山です。

ツッコミ専も可能ですので皆様是非にご参加を。

次回予告

明日は10日目でhdy_wkbys氏の「Crypt of the Necrodancerが楽しかったのでその辺でなんぞ」の予定です。

2016-12-01

TransifexでRoguelike和訳プロジェクトに参加してみよう

この記事はRoguelike Advent Calendar 2016の1日目です。

このアドベントカレンダー企画、記事はなんでもアリのゆるふわな感じでやろうと思いますので、皆様のご参加お待ちしております。

今回のお題

初回いきなりですが、RoguelikeにこじつけてTransifexというWebサービスの紹介をします。

DCSS日本語化プロジェクトをやってるのでその宣伝も兼ねて。

Roguelikeとはそこそこ関係ない内容になりますが、ご了承くださいませ。

Transifexとは

翻訳関連の作業をちょっぴり助けてくれるWebサービスです。

作り込まれたRoguelikeのメッセージ量の膨大さは生半可なものではありません。

調子に乗ってフレーバーテキストやらちょっと凝った説明文が付いていればもうそりゃ凄いことになります。

物量に対抗するには物量が一番……と言いたいところですが、多人数での作業は色々と面倒なことこの上なし。

面倒なところをある程度緩和してくれるサービスは地味に凄く助かります。

作業風景

作業ページはこんな感じです。

f:id:dis-c:20161201004324j:image:w800

左が原文/訳のリスト、中央が作業領域で右に作業履歴等が見れます。

勝手に作業ログが貯まっていくのが実に便利です。

誰かがやった作業へのコメントもできるようですね。

用語集

このTransifexはプロジェクト毎に専用の辞書を登録できて、表記揺れへの対策になります。

現在DCSS和訳プロジェクトの用語集は無印Crawlの原文を完備しています。

迷ったら簡単に原文を参照できます。便利。

右カラムの用語集→用語集を見る で開きます。

f:id:dis-c:20161201010112p:image:w640

登録方法&基本操作

他所のプロジェクトですが、よくまとまったページがあったので貼らせていただきます。

http://www.djangoproject.jp/howtojoin-transifex/

http://www.djangoproject.jp/howtotranslate/

Transifex自体の登録を済ませて、参加申請を飛ばして貰えばDCSS日本語化プロジェクトは自動で承認します。

数は力ということで、参加してくださる方を募集していますよ。どうぞよろしく。

ゲーム用ファイルへの自動変換

この手のサービスの例に漏れず、transifexも専用クライアントを提供しているのでちょっと頑張ると自動で作業済のファイルを拾えます。

http://docs.transifex.com/client/

これで回収したファイルを適当に変換して適当に公開することで、最新のゲーム用リソースファイルを供給できるというわけです。

こんな感じ。

https://github.com/dis-/dcss-transifex/tree/master/txt

まとめ

翻訳サービスの一つ、Transifexっていうのがあるよ。

それなりに便利だよ。

DCSSの日本語化やってるよ。

皆も参加してね!

次回予告

明日はshimiteiさんの「ローグライク実験室がおんぶにだっこしている技術」です。どうぞよろしく。

2014-12-22

脱出dumpから見る人気ルート

この記事は Roguelike Advent Calendar 2014 の22日目の記事です。

この企画もついにラスト一週間まで来ることができました。

どうやら、なんとか完走できそうな雰囲気です。

記事を書いてくださった皆様、読んでくださった皆様ありがとうございます。

完走まで、もう少しだけお付き合いください。

続きを読む