ランダムな固有名について

むかしのBeolineliedに、「地球とは全く異質文化であるはずの架空世界における”名前”」という記事があって、そこには誰しも納得させられるもっともなことが書いてある。これを踏まえて、ゲームに出てくるランダム固有名の生成についてちょっと考えてみよう、という話だ。やけに具体的で限定的な話題だが、私の意図としてはこれも広義の「ランダム論」の一端になると考えている。

大きくわけて三通り

ゲーム中に何らかの名前を持つ存在(NPCアーティファクト、ダンジョンなど)が出てくるとしよう。それに名前をつけるやり方としては、ゲーム作者がはじめから固定した名前をつけてしまうか、いくつかある名前候補の中から一つをゲーム実行中にランダムで選び出すか、名前そのものを何らかのアルゴリズムに基づいてランダム生成するか、の大きく分けて三通りがあり得るだろう。変愚蛮怒で言えば、街やダンジョンの名前は固定であり、ランダムアーティファクトの名前は実行時にリストから選択される形式であり、名前が動的に生成されるような局面はない、ということになる。

既存リストからのランダム選択という方略は手堅いが、元のリストがよほど巨大でない限り、ちょっとやり込むとすぐに重複が発生してしまう。そんな時にプレイヤーは、見たくもない楽屋裏を覗いた気がして、わりと萎えてしまうものだ。またこちらの方が重要なのだが、既存リストからの選択方式は、あまりにも自己完結的(静的)な手法であるために、他の世界内要素を支配する様々な法則と、名前を支配する法則との相互干渉を起こしづらいという問題がある。例えば人の社会的地位が上がるにつれて名前の傾向が徐々に変わる、というようなデザインを実現しようとしたとき、そのやり方に悩むことになるだろう。他にも、命名法則に影響するようなゲーム仕様が加わるたびに、名前候補リストにも情報を足すとか名前候補リスト自体を増補するとかしなければならないだろう。(そもそもそんなゲーム仕様は無用、という意見については、最後でちょっと触れる。)

固有名をランダムに生成する

そこで固有名をランダム生成しよう、ということになるわけだが、上のBeolineliedの文からもわかるようにこれはかなりリスキーな道である。舐めてかかると馬鹿げた名前を生成して、それこそ決定的にプレイヤーの興をそぐことになってしまう。

そこで推奨されるのが、まずその固有名が属する言語における妥当な音韻法則を定め、それにしたがって固有名の語幹部分をランダム生成し、そして語幹に(もし名詞曲折のある言語なら)語尾をくっつけ、最後に文化固有のアレンジメントを加える、という方法だ。このそれぞれの段階において、命名対象の性質に応じた調整をおこなう余地がある。

音韻

妥当な音韻法則は、ラテン語やアヴェスター語やヘブライ語のような地球上の言語から取るのでもよいし、クエンヤやシンダリンやアドゥナイクみたいな有名な架空言語から取るのでもよいし、自分のセンスに自身があれば自作するのもよいだろう。
経験上、固有名の生成に必要となる要素はだいたい以下のような感じだ:

  • すべての母音群のリスト(ラテン語だと8、ただし手抜きして母音の長短の概念は無視した結果)
  • 語頭(あるいは音節頭)に立ち得る母音群のリスト(ラテン語だと7、ただし手抜きして母音の長短の概念は無視した結果)
  • 個々の母音群の重さ(ラテン語については、単母音と二重母音の2段階にしてみた)
  • すべての子音群のリスト(ラテン語だと102)
  • 語頭(あるいは音節頭)に立ち得る子音群のリスト(ラテン語だと44)
  • 個々の子音群の重さ(ラテン語については4段階にしてみた)

ここに登場する「重さ」というのは何かというと、「耳に感じられるウザさ」を表すと考えていただければよい。例えばcas-trumもce-naも同じ二音節だが、「str」という子音群は最大級に「重い」ので「重さポイント」を大きく消費することになる。例えば四音節語幹を生成するときなどに、いちど最重量級の子音群が現れたら同じ語の中ではもう最軽量級の子音しか使えない、というようなコントロールに使うわけだ。Rebeccaという名前は良好だが、Rebbeccaは耐え難いし、Rembrectraはもっと嫌だ。(Rembrectraだって、別に子音の連続性に関するラテン語の音韻規則を破っているわけではないのだが。)

ある言語の音韻についてだいたい上記のような基礎データがあれば、

  1. 音節数
  2. 母音の重さ許容指数
  3. 子音の重さ許容指数

を入力とし、

  1. 文字列

を返すgeneratorを実装することができる。(この実装は場合分けなどを多用した力技になりがちである。具体的には、個々の音節について、子音で始まるか否か、子音で終わるか否かを決め、重さ許容指数の範囲内で、その音節の中のそれぞれの箇所を埋める母音群と子音群とを選択し、その音節の始まりと直前の音節の終わりとの連続性が、禁則に引っかかっていないかを調べる。)

文法

このgeneratorが生成してくれた文字列を語幹として、次に(名詞曲折をする言語ならば)語尾をつける。これは音韻の問題ではなく文法の問題だ。対象とする固有名を含む言語には、印欧語の文法性(gender)にあたるような名詞クラスがあるのか、あるとしたらそれぞれの語形の特徴は何なのか、みたいなことを決めればよい。語尾じゃなく語頭が曲折するような言語を作りたいなら、それもご自由に。
この段階に影響するのは、生成しようとしている固有名が人の名前なのか土地の名前なのか物の名前なのか、そしてそれはどの名詞クラス(印欧語で言えば「男性名詞」とか)に属するのか、といった情報である。

文化に由来する名称構造

最後に、文化に依存する名前のアレンジを決める。物の名前ならば、「ロングソード『XXX』」とか「賢者XXXの杖」みたいな穴埋めになることが多いだろうが、土地や人の場合はもっと複雑な構造を実現しないと雰囲気が出ないかもしれない。たとえばミドルアースの自由の民の人名について言えば、Frodo Bagginsみたいな「名前−苗字」方式、Thorin Oakenshieldみたいな「本名-添名」方式、Aragorn, son of Arathornみたいな「父称」方式が、それぞれの文化や時代や人物の名声に応じて使い分けられているわけだ。こういう名前の構造をコントロールする処理を入れるのは、もちろん良い考えだと思う。

たかが名前生成にそんなに凝って何の役に立つの?

名前生成にいくら凝ってもしょせん単なるflavorに過ぎない、他の要素に影響を与えないゲーム要素は存在しないも同然、と言われたら、、、

  • 例えば、伝説の「XXXの宝珠」を探す必要があるが、いったいどこにあるのやら、といったシチュエーションで、少なくともそれがどの国の歴史に関係ありそうなアイテムなのかぐらいは想像できる。結果、北へ行くのか東へ向かうのかを決める手がかりぐらいにはなるかも。
  • 名前を生成するための法則が、世界内の他の要素を律している法則とちゃんと密接に関連しているならば、さしあたっては凝った名前生成が単なるflavorに過ぎないとしても、いずれはきっと、ゲームプレイの上でも他の要素と面白い形で相互作用させる方法が見つかるはず。世界というのはそういうふうにできている。

というような感じで答えたい。

教訓

今回の記事で私がいちばん主張したいのは、ランダム生成の質を大きく作用するのは、実はランダム生成の対象領域についての考察と、それに基づいた調整だ、ということである。固有名をランダムに生成しようとするならば、音韻と文法と命名文化とに情熱を持って取り組まなければならないし、それらの観点から好ましい結果が得られるように、ランダム生成の過程を細かく制御しなければならない。

ダンジョンマップをランダムに生成しようとするならば、要塞や宝物庫の構造とその守備や攻略について様々なことを考えて調整しなければならないし、世界をランダムに生成しようとするならば……潜在的にはすべてをコントロールできなければならないのだろう。

こうやって手間ひまをかければ、ランダム生成という手法は、作者自身も驚くような興味深い結果を生成してくれるものだ。

 世界ジェネレーター、世界シミュレーター、ランダム生成の魅力

今夜も疲れ気味なので、散漫な文章になってしまうだろう。(言い訳ばかりで申し訳ない。)

現在のところ、Dwarf Fortressには二つ(Reclaim Fortressモードを入れれば三つ)のゲームモードがあり、どのモードで遊ぶかをメインメニューから選択してゲームを始める形式になっている(ゲーム開始画面 )。しかし開発者が明言しているところによれば、このゲームモードは今後増えてはるかに多数になる見通しであり、そうなったら、ゲームモードを選ぶやり方もメインメニューの一覧から指定する方式ではなく、もっとより構造化されたやり方に変わるだろうとのことである。これは私の想像だが、いずれは例えばストラテジーゲームのモードでプレイしている最中に、一体のクリーチャーを選択してその場でRPGモードに移行する、といったこともできるようになるのかも知れない。

いずれにせよ、それほど多くのゲームモードが搭載されるとしたら、そしてそれぞれのモードが(ストラテジーゲームとRPGという風に)ジャンルにおいてすら異なっているとしたら、その時にはDwarf Fortressという一つのゲームとしての統一性はどこにあることになるのだろうか? この問いに対する答えは、間違いなく以下のようなものになるだろう:
巨大で豊穣な「世界」を無限に創り出すことと、様々な遊び方でその世界一つ一つから無限の楽しみをくみ出し、その楽しみの痕跡を世界に残すことこそが、Dwaf Fortressというゲームの根幹であり本質である、と。

Dwarf Fortressが最終的に意図されたすべての仕様を搭載した形で完成したならば、それは世界ジェネレーターであり、世界シミュレーターであるはずなのだ。そして「世界シミュレーター」部分の遊び方はおよそどのようなジャンルのゲームでもあり得る。それはRoguelike RPGかもしれないし、アクションRPGかもしれないし、RTSかもしれないし、ターン制の戦略ストラテジーゲームかもしれないし、動物園経営シミュレーションゲームかもしれない。いずれにせよそれらのゲームは、前提となる世界の自然環境とそこに存在する文明とに影響を受け、世界の資源を利用し、何らかの変化を世界に蓄積させることになる。そしてこれらすべての前提となるのは、「世界ジェネレーター」によってランダムに生成される豊かな世界であり、この世界こそが、かのRogueにおいてゲームごとにランダム生成された「運命の大迷宮」の遠い子孫なのである。ゲーム内におけるすべてがその中にあり、その外には何も存在しない、という意味において。

この生成される世界の豊かさ、という点について言えば、私が特に心惹かれるのは、文明、伝説と歴史、名前を持った街、名前を持った洞窟、名前を持ったNPC、名前と来歴とを持ったユニークモンスター、クエスト、歴史的建造物などの要素が大量に生成されることだ。しかもそのランダム性のあり方が、既存のリストから任意の一つを選択する、といったものではなく、明らかに固有の規則に基づいて動的に生成されている点が特に素晴らしい(プレイしていて興ざめにならず、わくわくできる)。この上さらに、名前と来歴とを持ったアイテムまでもが動的に生成され、しかもその来歴が、その他の伝説や歴史や土地やNPCやモンスターにうまくリンクされていれば、より素晴らしいことだろう。これらのランダム生成の詳細な仕様や実装については、主題的に考察する価値が十分にあると思うので、後日この話題を取り上げてみたい。

むろん人によっては、河川、湖沼、山岳、動植物相、気候などの生成や、ゲーム中にシミュレートされる天候の動的な変化に魅力を感じるかもしれない。現状でも、そういった自然環境的な要素はDwarf Fortressのゲームプレイに大きな影響を与えるし、いずれはそういった点に特にフォーカスしたゲームモード(世界シミュレーター)が追加されることもあるのかもしれない。

いずれにせよ、「世界ジェネレーター」と「世界シミュレーター」というような中学生の妄想のようなアイディアを、真面目に仕様や実装を論ずるに足る主題へと変えたことは、Dwarf Fortressの作者Tarn AdamsおよびZach Adamsの偉大な貢献である。ウィザード級の実装家が五年間を費やすならば、これだけのものを実際に作れるのだ。

最後に一つ補足:
Dwarf Fortressで新たな世界を生成するためには、非力なマシンだと数十分もかかってしまう。もっとも、その間には今何をやっているのかが世界の風景付きで次々と説明されるので、それをぼーっと見ているのもなかなか楽しいとは思うが、しかしそんなに待っていられないという人のために、公式サイトで生成済みの世界が公開されているので、それをダウンロードすればすぐに遊ぶことができる。自分のマシンで世界を生成できる人も、ここで公開されているpngファイルの世界地図をダウンロードして眺めてみると、意外に楽しめるものだ。

 このblogで何をやろうとしているのか

832 :名@無@し:2007/04/26(木) 11:21:10
Blogの人は何がしたいのか分からん。
すでに答えに近いものが存在していたのに、何で今まで旧来のゲームを散々貶していたんだろ。
これで作者が日本人だったら自演認定していた所だぞw

このblogでやりたいのは、今まで存在してきた様々なRoguelikeについて、その良い点と悪い点とをほじくり出し、それを元に考えるべきことを考え、より面白いRoguelikeゲームデザインを考案し、それを実装しよう、ということです。要は「温故知新」ということです。

なので前回言及したDwarf Fortressも、これまで多く存在してきたRoguelikeの中の一つとして触れたのであって、そこから良い点と悪い点と教訓とを引き出すべき題材に過ぎません。
ただし、ちょうどRogueとMoriaとの間にはっきりとしたゲーム性の断絶があって、これらをRoguelikeという同種のゲームとして扱ってよいものかどうかためらわれるのと同じように、Dwarf FortressRoguelikeの一時代を画する可能性が高いゲームだと私は思っています。今後作られるRoguelikeゲームは、何らかの形でDwarf Fortressを意識した上で、それとは違う道を歩むか、それを乗り越えるかしなければならないのではないか。すなわち、Dwarf Fortressは21世紀のRoguelikeに対して、一つの基準を設定することになるのではないか。だいたいそのような意味で、私は「新世代Roguelike」という言葉を使っています。これについては、今後より詳しく書きたいと思っています。

その他、溜まり場ではこのblogや私についていろいろなことが言われていて、いささかげんなりさせられる面もあるのですが、しかしそれでも多くの方にこのblogを読んでいただいていることについては、非常にありがたいと思っています。今後ともよろしくお願いします。

今夜はちょっと疲れ気味なので、これ以上記事の更新はありません。明日の夜もどうなることやら……という感じです。

 新世代Roguelike「Dwarf Fortress」入門(2)

(下の記事の続き)

Dwarf Fortressを初めてプレイする際には、まず世界をランダムに生成する必要がある。貴方は今、あっそう、と思って鼻糞でもほじっていることと思うが、ここで生成される世界は、常識外れに巨大で豊穣なものだ。Pentium4 2.4GHz、RAM 1GByteの私のマシンでは、世界を生成するのに丸々10分かかり、生成された世界を保存するのに5分かかる、と言ったらそのすごさが少しは伝わるだろうか。

世界を生成している間、ゲームエンジンは何をしているのかって? それは、土地の隆起と陥没を決定し、気候を定め、河川を流し、湖を形成し、植生、地勢、野生動物の分布を決めて、歴史と伝説を蓄積しているのだ。また、複数の敵対する文明と何十もの都市と何百もの洞窟も作っているのだ。これは与太話ではなく本当のことだ。この画面を見ればわかるだろう。

世界生成中画面(  

こうして生成された世界は、何ゲームにも渡って使い続けることができ、その間に建てられた建造物や生まれた伝説は当然、捨て去られることなく世界の中に蓄積され続ける。また、ドワーフの要塞(Dwarf Fortress)モードで築き上げた基地を、冒険者(Adventurer)モードで訪問したりすることも当然可能だ。

世界を生成したら、まずは「ドワーフの要塞(Dwarf Fortress)モード」か「冒険者(Adventurer)モード」のどちらかでゲームを始めることになる。「捨てられた要塞の再生(Reclaim Fortress)」モードは、少なくとも一度要塞を放棄していないと選択できない。

ドワーフの要塞」モードのスキル選択画面(  ) 採掘や伐採から、石鹸作り、動物調教、料理まで60種類近いスキルがある。

「冒険者」モードのゲーム画面(中央の@がプレイヤーキャラクター。この辺はいかにもRoguelike RPGだ。)

……とここまで書いてきて思ったのだが、こんな調子でやっていたのでは、本当にここがDwarf Fortressの入門サイトになってしまう。なので、興味を持たれた方はぜひDwarf Fortress Wikiなどを参考にして、自分でゲームをプレイしてみていただきたい。すごく面白いから。
現在の段階では、より細かく作りこまれて完成度が高いのは、ストラテジーゲームである「ドワーフの要塞(Dwarf Fortress)モード」なので、ローグライカーもまずはこちらから入門して、しかる後に「冒険者(Adventurer)モード」に進まれることをお奨めする。ちなみに「冒険者(Adventurer)モード」は、様々な街などでクエストを受けたり仲間を募ったりしながら世界各地を探索し、強敵を倒すなどの冒険をして伝説を作るといったゲームで、特定の最終目的は存在しない。

今後の記事では、このDwarf Fortressの幾つかのゲームシステムを取り上げ、それがRoguelikeゲームの歴史にとってどのように位置づけられるかについて考えてみたい。

 新世代Roguelike「Dwarf Fortress」入門(1)

このblogを始めた時の大まかな見通しとしては、*bandについて書きたいことを一通りだらだらと書いた後で、Omega、ADOM、Dwarf Fortressを順に取り上げて、その中で「地上のマップ」、「クエストの多様性」、「ゲームの最終目的」、「新世代Roguelike」などの話題についてつらつら書いてゆくつもりだった。ただこの見通しは、最初のうちはリアルタイムの読者がまったくいない状態でのんびり書くことになる、という前提で立てたものだったので、ちょっと現状にはそぐわなくなっていると思う。この予定通り進めてしまうと、あまりに迂遠すぎるのだ。

というわけで途中を大幅に端折って、ここでいきなり新世代RoguelikeであるDwarf Fortressを取り上げることにしたい。正直なところ、Omegaは今是非プレイする価値があるゲームでもないと思うし、ADOMはまあプレイする価値はあると思う程度で私は*bandほどは好きではないのだが、このDwarf Fortressは、ローグライカーがまさに今プレイするに値するゲームだと思う。しかし日本では、まだこのゲームについて全然知らないという人も多いのではないだろうか。

現在広く遊ばれているPC系のRoguelikeゲームは、十数年やそれ以上の古い歴史を持つものが多いが、Dwarf Fortressは五年ほど前からスクッラチで開発が始まったゲームである。作者はTarn AdamsおよびZach Adamsの兄弟で、「半分素人のようなレベルの他人の相手をしていたのでは、開発が楽しくないから」という理由で、今までずっとソースコードを公開せずに開発をおこなって来ている。初めてアルファ版が公開されたのが昨年の夏で、それ以後もすさまじいハイペースで開発が続いているが、バージョン番号は今でも「v0.23.130.23a」すなわちアルファ版である。アルファ版とは言っても現状で十分に遊べる、というよりヤバいほど面白い。我々は、歴史に残る偉大なゲームの誕生に立ち会っているのかもしれない。

・公式サイト(ダウンロード可能)
http://www.bay12games.com/dwarves/

・Dwarf Fortress Wiki(攻略情報など)
http://dwarf.lendemaindeveille.com/index.php/Main_Page

Dwarf Fortressというゲームを一言で表現するならば、「ランダムに生成される途方もなく巨大で豊穣な世界を、ストラテジーゲームとRoguelike RPGの二つの面から楽しみ尽くすゲーム」だと言えると思う。
ゲームには以下の三つのモードがある。(ゲーム開始画面)

このうち三番目の冒険者モードがいわゆるRoguelikeRPGで、一番目と二番目のモードは、ドワーフの共同体を繁栄へと導くストラテジーゲームである。そう、このDwarf Fortressは単なるRoguelikeRPGではなく、それを丸ごと含んだもっと巨大で恐ろしく野心的なゲームなのだ。
どれほど野心的なゲームであるかについては、次の記事で。

 目的達成のための手段を楽しもう

以下、変愚蛮怒のみを念頭に置いた内容です。

変愚蛮怒のプレイでは、ある関門を前にしてゲームの進行が停滞する(ダレる)、ということが何度かある。典型的なのは、「24Fランダムクエストに挑むために、ガチャピン対策やジャイアン対策の耐性が必要」とか、「クローン地獄に挑むために、なるべく多くの上位耐性と薬が必要」とか、「本格的に深層に挑む前に、加速と攻撃力(強力武器あるいは四冊目魔法書)が必要」とか、そんなところだろう。

そんな時、*勝利*一直線のプレイスタイルを取るならば、いろんな攻略サイトに書いてあったり溜まり場の加速スレで教えてもらえたりするような、効率の良い探索やスカムをしながら、必要なアイテムを入手するのを待つことになる。
でも私の好みとしては、そういう「目的」と「手段」とがはっきり分かれたプレイよりも、目的を達成する過程そのものを楽しめるようなプレイをしたいと思う。例えば、厄介な深層ユニークを一体ずつ苦労して潰してゆくことは、サーペント戦での危険要素を減らすという目的達成のための手段でもあるが、しかしそれ以上に、深層ユニーク狩りという冒険(そしてそのユニークが落とすかもしれないアイテムへの期待)自体が大きな楽しみでもある。少なくとも私にとってはそうだ。

では、最初に書いたような関門を突破するための耐性や加速や攻撃力を獲得するため「手段」として、何かそれ自体を楽しめるような冒険って、今の変愚蛮怒にあるだろうか。せいぜい、実力以上の深い階を無理して探索する、というぐらいしかないのではないか。まあ、これは私が遊び下手なせいで気づいていないだけなのかもしれないが。

こういう「耐性や能力値がそろわなくてダレる」というシチュエーションを打開するために、スリルや興奮を感じながら取り組めるような課題(クエスト)を提示し、プレイヤーをそれへと強力に誘導する、そういう仕組みが私は欲しいし、また作ってみたいと思う。

今夜ももう遅いので、詳しくはまた後日ということで。