今回の記事は、SAO (ソードアート・オンライン) シリーズにあるコンバート機能が、思わぬところでブロックチェーンと関連しているという話だ。
結論めいたものがあるわけではなく、疑問を提示するだけだ。
問いとしては、非常にシンプルだ。
スライム1匹を倒しただけでレベル1000になるゲームのサーバーを自分で勝手に立ち上げたら、そのゲーム内で上げた「レベル」はどうなるのか?
ということだ。
もともとはSAOにまつわる小ネタとして、こういう矛盾があるよね、というだけの話をTwitterにでもチラっと書いておく予定だった。
でも今年 (2019年) の8月になってから、矛盾があるというよりも矛盾が起こらないようにできるとしたら、と逆に考えてみて、これがまさにビザンチン将軍問題であることに気づいた。
またこれは、作中の「カーディナル・システム」は何を備えている必要があるのか、という話にもなるわけだ。
SAOシリーズはそもそも整合性など気にしていると楽しめないという指摘もある。
2期OP『IGNITE』の歌詞は自虐なのかもしれない。
また、原作まで含めて考えるとかなり事態は錯綜している。まず原作の小説にはWEB版と文庫版 (書籍版) の2つのバージョンがある。これ自体は最近のラノベ原作のアニメではよくあることだ。そしてSAOではさらに、アインクラッド編 (アニメでは1期前半) が大幅にリライトされたロングバージョンが刊行中で、アニメ版とも食い違いがかなり出てきているらしい。
それでもアニメ版では設定の面においてかなり整えられている、という話もあるので、小説版等は考慮せずにアニメ版だけを考慮することにする。劇場版アニメも考慮しない。あくまでもTVアニメだ。
ところで、SAOはキャラの名前で検索するだけでネタバレする場合がある。
検索結果のページが「目に飛び込んでくる」だけでネタバレで、文字の情報を完全にスルーできたとしてもだめだ。
要するに画像検索の結果の一部が通常の検索結果に表示されるようになったことによるネタバレで、これはGoogleのユーザー体験としては基本的には「良いこと」なのだが、ネタバレという点ではそれなりに深刻な影響をもたらす時がある。
この10月はアリシゼーション編 (3期) の続きが始まるし、「ちょうどSAO最初から観ようと思ってたのに」という人もいるかもしれないので、このキャラ名検索によるネタバレ、およびこの記事にも多少のネタバレがあることは警告しておく。
この記事で提示する問題を理解するためには、オンラインゲームやRPGというものがどういうものかさえ知っていれば、SAOを観ている必要はない。
ただ、詳細に立ち入る際にはSAOを観ていないと分かりくいところがあり、また、詳細に立ち入る際にはどうしても少しはネタバレする。
シリーズ全部を観ている時間はないという人も多いだろうし、そもそも俺もアリシゼーション編 (3期) は11話あたりまでしか観ておらず、劇場版 (『オーディナル・スケール』) も観ていない。
というわけで、この記事を読む前に、ある程度は本編を観ておきたいという人のためのガイドを提示しておく。
●コース1: 1期の前半+αだけ観とく
アインクラッド編は1期の1話「剣の世界」から14話「世界の終焉」まで。
ゲームエンジンの「ザ・シード」がどのように始まったのかを理解するにはやはりアインクラッド編は観ておいたほうがいい。
というわけで、観ておくべき1期の前半+αは以下の3箇所。
・1期1話「剣の世界」から1期16話「妖精たちの国」の16:30あたりまで (キリトがALO内で動き回るようになる直前まで)
・1期24話「鍍金の勇者」の18:10 - 20:45 (「ザ・シード」を託されるシーンとユイとのやり取り)
・1期25話「世界の種子」の 15:35 - 17:25 (「ザ・シード」のその後)
こうするとアインクラッド編 (1期の前半) 以外は「あとで観る」でありつつ、「ザ・シード」に関連するシーンは抑えておける。
●コース2: 1期すべて+αを観とく
この場合は、1期の25話全部と、2期1話「銃の世界」から2期4話「GGO」の08:50あたりまで。
なお、この記事には、2期の重要なネタバレはない。
基本的にこの記事で語ってるのは、アニメの2期のころのコンバート機能について、ということになる。
まだ映像化されてない新章 (アリシゼーション編の次のシリーズ) では、それぞれのゲーム世界が1つのゲーム世界に統合され、アイテムなども強制的にコンバートされるらしい。
しかしこれは2期のころのコンバートについてウヤムヤにしようとする壮大な陰謀の可能性があるので、やはりここできちんと疑問を提示しておきたい。
コンバートという概念が初めて提示されたのは、1期の終盤だった。
以下は、1期25話「世界の種子」の16:08あたりから。
「その結果、世界の種子は『ザ・シード』という茅場の開発したフルダイブ型バーチャルMMO環境を動かすプログラム・パッケージだと分かった。
要は、そこそこ回線の太いサーバーを用意して、『ザ・シード』をダウンロードすれば,誰でもネット上に異世界を作れるのだ。
俺はエギルに依頼し、誰もが『ザ・シード』を使えるよう世界中のサーバーにアップロードしてもらった。
これによって、死に絶えるはずだったバーチャルMMOは、再び蘇った。
アルヴヘイム・オンラインも、新しい運営会社にデータが完全に引き継がれ、運営されている。
新しく誕生した世界は、アルヴヘイムだけではなかった。
中小企業や個人まで数百にのぼる運営者が名乗りを挙げ、次々とバーチャルゲームサーバーが稼働したのだ。それらは相互に接続されるようになり、今では一つのバーチャルゲームで作ったキャラクターを他のゲーム世界へとコンバートできる仕組みすら整いつつある」
既存のプログラムを使って、誰でも立ち上げられる。この時点で、なんだかブロックチェーンに似ている。
ブロックチェーンの場合は、既存のチェーンを支えるノードの1つを立ち上げるという話なのか、それとも既存のプログラムは使うものの、そのプログラムで新しいチェーン (新しいネットワーク) を立ち上げるという話なのか、というのはまったく違う話だ。
通常、「マイニングに参加する」といえば既存のチェーンを支えるノードの1つとして自分のマシンを接続するということになる。
以下は、1期25話「世界の種子」の17:10あたりのキャプチャ。
「ザ・シード」のネットワークは上の画像ではなんとなく非中央集権的なイメージもあるが、ビットコインやイーサリアムのように本当に非中央集権的なネットワークなのかはよく分からない。
ところで、「ザ・シード」の場合は、それぞれのゲーム内の細かいルールは違うにも関わらず、「コンバート」が可能であるという。これをどう考えればいいか。
以下は、2期3話「鮮血の記憶」 14:05あたりから。(ALO内でのキリトとアスナの会話)
「え、ええっ?キ、キリト君、ALOやめちゃうの?」
「ち、違う違う。ほんの数日だよ。すぐ再コンバートするよ」
「ホントに?」
「じ、実は……ちょっと、ワケありで。他のバーチャルMMOの様子見をしなきゃいけなくなって」
「様子見?それなら今までも新規アカウントで何度もやってるじゃない。コンバートすると、アイテムもリセットされちゃうんでしょ。何でそこまでしなきゃならないの?」
ほほう。コンバートするとアイテムはリセットされる。
以下は、2期4話「GGO」 05:50あたりから。(GGO内でのキリトとシノンの会話)
「ところで、総督府へは、何しに行くの?」
「あの、バレット・オブ・バレッツっていうイベントのエントリーに」
「BoBに?あ、えと、今日、ゲームを始めたんだよね?」
「はい」
「あーえっ……と、その。ちょっと、ステータスが足りないかも」
「ああ、コンバートなんで。他のゲームから能力を引き継いでいるんですよ」
「へえ……そうなんだ」
ふむふむ。「能力を引き継」ぐことはできると。
前提を整理しよう。「ザ・シード」を使えば、自分でゲームのサーバーを勝手に立ち上げられる。そしてキャラをコンバートできる。そしてコンバートしたら能力は引き継ぐことができる。
ここで浮かんでくる基本的な疑問点というのは、以下のとおりだ。
まず、スライム1匹を倒しただけでレベル1000になるようなゲームのサーバーを自分で勝手に立ち上げる。そしてそのゲームに自分のキャラをコンバートし、そのゲーム内でレベルを上げる。さて、そのゲーム内で「レベル」を上げたキャラのレベルはどうなるのか?またあらためて元のゲームにそのキャラをコンバートしたらどうなるのか?
その「元のゲーム」が「レベル制」を採用しているかどうか、また敵がスライムであるかどうか、というのはひとまずどうでもいい。
あるゲーム世界では苦労しないと上昇しないパラメータがあったとして、他のゲーム世界ではそのパラメータが簡単に上昇するとしたら、パラメータを苦労して上昇させる意味がなくなってしまう、ということだ。
多くのRPGの前提では、強い敵を倒せば、より多くのパラメータ上昇が見込める。
アインクラッド編 (1期の前半) では、強い敵に挑むということは命の危険 (肉体的な死亡の危険) があるわけで、だからこそ効率よくレベルを上げようとすること自体が命がけであるという前提があった。
今回提示する問題は、あるゲーム世界においてある強い敵がいて、別のゲーム世界にも同じ敵が登場していてやはり強いことは強いんだけれども、その別のゲーム世界では何かいとも簡単に倒せるような方法が存在していたら、というふうに考えてみてもいい。
さて、コンバートについて考える前に、ちょっと作中における時間をさかのぼってみたい。
キリトが「ザ・シード」を託されたのは1期の終盤 (1期24話) で、コンバートという概念が登場するのはそれ以降の話だ。
この前にまずSAOからALO (アルヴヘイム・オンライン) への移行がある。
この時に何が起こっていたのか見ていくことにする。
以下は、1期16話「妖精たちの国」の13:40あたりのユイのセリフ。
「ちょっと、パパのデータを、覗かせてくださいね。
……間違いないですね。これは、SAOでパパが使用していたキャラクターデータそのものです。
セーブデータのフォーマットがほぼ同じなので、2つのゲームに共通するスキルの熟練度は上書きされたのでしょう」
ええと、これ、ローカルにあるセーブデータによって重要なパラメータが上書きされてしまったということなのだろうか。
だとしたらいくら何でも、という感じはある。
簡単にチートできるけどモラルの問題、などと考えてしまうと、この記事で考えようとしていること自体に意味がなくなってしまう。
その後のGGOでは賞金稼ぎ (?) がたくさんいるわけだし、ゲーム内のパラメータは現実の利害関係が絡んでいるはずなわけで、キリトがALOを始めたころのALOはいろいろザルだったけどその後キリトが「ザ・シード」を託されてからはこういった問題は修正されているのだ、と解釈しておきたい。
以下は1期16話「妖精たちの国」の上記のセリフの直後、14:00あたりのキャプチャ。
右側の数字が「スキルの熟練度」ということなのだろうか。
「そういや、二刀流は無くなってたな」
というキリトのセリフがあるので、この「???????」となっている部分が、SAOにはあったけどALOにはない「二刀流」スキルということのようだ。
確かに数値で「スキル」が表されている。しかも「セーブデータ」によって、この数値が上書きされた、と。
1期12話「ユイの心」では、自動的にゲームのバランスを調整するカーディナル・システムとユイの正体について初めて語られる。
以下は、1期12話「ユイの心」13:55あたりから。
「キリトさん。アスナさん。ソードアート・オンラインという名のこの世界は、1つの巨大なシステムによって支配されています。
システムの名前はカーディナル。人間のメンテナンスを必要としない存在として設計されたこのシステムがSAOのバランスを自らの判断に基づいて制御しているのです。
モンスターやNPCのAI、アイテムや通貨の出現バランス、何もかもが、カーディナル指揮下のプログラム群に操作されています。
プレイヤーの、メンタル的なケアすらも。
メンタルヘルス・カウンセリング・プログラム試作1号。コードネーム、ユイ。それが、私です」
以下は、1期12話「ユイの心」20:37あたりから。
「これは?」
「ユイが起動した管理者権限が切れる前に、ユイのプログラム本体を切り離して、オブジェクト化したんだ」
「じゃあ、これは」
「ユイの、心だよ」
以下は、1期12話「ユイの心」21:05あたりから。
「ねえ、キリト君」
「ん?」
「もし、ゲームがクリアされて、この世界が無くなったら、ユイちゃんはどうなるの」
「ユイのデータは、俺のナーヴギアのローカルメモリに保存されるようになっている。
向こうで、ユイとして展開させるのはちょっと大変だろうけど。
きっと、何とかなるさ」
この時点での「向こう」というのは単にゲームの外、現実世界のPC環境 (周辺機器も含めたPC環境) など、を指していると思われる。
1期24話「鍍金の勇者」20:07には、以下のようなユイのセリフもある。
「私のコアプログラムはパパのナーヴギアにあります。いつでも一緒です」
「コアプログラム」とは一体何なのだろうか。
ディープラーニングにおける学習済みモデルのデータも含めてローカルにあるような感じなのだろうか。だとしたら途方もなく大きいサイズのファイルがキリトのナーヴギア (フルダイブ型VRマシン) にある可能性がある。
ローカルにあるということはプレイヤーが内容を変更できるということでもある。SAOやALOのように世界中から注目されていたはずのゲームにおいて、ローカルに保存できるデータの形式などはあっという間に解析されるだろう。
そして、何らかの自動化をするボット、しかも、そのボットの挙動をスクリプトとして設定できるようなものが、ALOには存在するわけだ。
ユイのように複雑な会話をしたりできなくても、例えばゲーム内の特定の場所でモンスターや人が通ったらプレイヤーに知らせるような簡単なボットを設置できれば、そのボットが戦闘には直接参加できないとしても、プレイヤーにとってはプレイに有利になる。
自動化のためのスクリプトの出来がプレイヤーに利益をもたらしたりすることが、「ザ・シード」がベースのゲームではありうることになる。
ありうる、というか、「ザ・シード」のようにゲームの細かい部分をGMが自由に設定できるとすると、ボットが許可されたゲーム世界を立ち上げることもまた簡単で、ザ・シードのネットワーク全体からボットの存在が許されたゲーム世界を締め出すことは不可能と考えたほうがよさそうではある。
これは大きな外部性を持ち込むことになる。というのは、そのスクリプトはどこかのサイトからコピペしてきたものでもいいわけだ。たとえスクリプト本体をローカルに保存できない仕様だったとしても、これは大きな外部性といえる。
ここでちょっとSAOから離れて、「ザ・シード」のように誰でもゲームサーバーが立ち上げられるプログラムにおいて、アイテムをどう扱うかについて考えてみたい。
誰でもゲームサーバーが立ち上げられるなら、「スライム1匹でレベル1000」と同じように、アイテムにおいても希少性を解体することができてしまう。
1つのゲーム世界でどんなに「これはエクスカリバーといって、とても希少です」とアピールしたって、「いやうちのゲーム世界にはエクスカリバーが1億本くらいあります」とか出来てしまうわけだ。
SAOの「ザ・シード」の場合はコンバートするとアイテムはリセットされるとのことだが、冷静に考えていくと、スキル (レベル) よりもアイテムのほうがコンバートに馴染むのではないだろうか。
というのは、あるアイテムがIDとして整数の値を持つようにして、ネットワーク全体 (複数のゲーム全体) において、あるアイテムが1つしかないことが保証され、しかも所有者が誰であるかを常にはっきりさせる、というのは比較的容易だからだ。
既存のブロックチェーンの実効性が示されたことにより、「あるトークンが、このアドレスからこのアドレスにこれだけの量を移動」というのは改竄が事実上不可能な形で機能させられることがすでに分かっているわけだ。
たとえばあるアイテムのIDが「6963472309248」だったとして、この「6963472309248」というトークンの所有者の履歴をチェーンに持たせればいい。量の概念は必要なく、「どのゲーム世界のどのキャラ」という情報だけでもいいし、もっとシンプルに所有者 (アドレス) だけ記録して、それぞれの所有者がどのゲーム世界にいるのかはまた別途履歴を持たせる、という方法でもいい。
ここでさらに、単に所有の履歴をはっきりさせるだけでなく、そのアイテムが持つ希少性について、数学的背景を持たせることは出来ないか考えてみたい。
例えば以下のようなルールがあったとする。
・22の倍数はすべて回復系アイテムとして使えて、1回使うと消滅する
・ペア素数 (双子素数) の平均値 (中間の偶数) はすべて武器
回復量や武器としての攻撃力は、整数としての別の性質から何らかの方法で算出されるわけだ。
また、22の倍数であり、かつペア素数の平均値でもある数であれば (そういう数があるのかどうか知らないが) 、回復系アイテムとしても武器としても使えるということになる。
ゲーム内通貨についても、「金貨」というアイテムがあればそれで代用できるので、逆説的ではあるが通貨のためのシステムを別途用意する必要はないことになる。
別に「金貨」である必要すらないかもしれない。現実世界においても、ソ連崩壊前後のロシアでは、マルボロなどのタバコがドルよりも強力な通貨として流通していたことがあった。
アイテムの発生については、マイニングを利用することができる。
ビットコインであればブロックハッシュそのものなど、マイニングの結果として得られる整数が必ずある。
マイニングのあるところに実行結果としての整数あり、である。
ただ、計算結果としてのアイテムのIDだけでなく、どのサーバー (どのゲーム世界) のどの座標に発生、という情報も必要になる。
このようにすれば、アイテムの「発生」がGMの恣意性に依存しない形で、マイニングの過程で実際にアイテムが「マイニング」され、しかもそれが複数のゲーム世界において1つしかないことが保証されたうえで共有・移動できるような、そういうものを想定することができるわけである。
もちろん、どのゲーム世界のどの座標に出現するのか、というのはプレイヤー達にとってもGM達にとってもほぼランダムなわけで、初心者の前に突然途方もなく強い武器が出現したりすることも当然あることになる。
また、破壊不能な岩の中などに「発生」してしまって誰も取り出せない場合などは、そのゲーム世界のGMが岩をどかすのかどうか、といったことが問題になる。
マイニングの報酬としてアイテムがもらえる、という場合なら、単にマイナーとゲーム内のキャラの紐付きがあってアイテム発生と同時にキャラが所有するようにすればよいことになる。これはビットコインでいうコインベーストランザクションに近いものである。ただし、単にブロックハッシュそのものがアイテムのIDになるなら、希少性の高いアイテムが得られるようにマイナーがトランザクション (計算対象) を選り好みする動機が生まれることにはなりそうである。
ところで、整数の性質がアイテムの特性になるとしても、他のゲームでのルールを無視したルールを設定したゲームサーバーを立ち上げることは可能ではある。
でも、この場合でもある整数 (アイテム) はネットワーク全体で1つしかないので、希少性のあり方そのものが解体されるわけではない。
例えば、武器が一切存在しないゲーム世界があったとして、他の多くのゲーム世界では強力な武器になるアイテムが、武器が一切存在しないゲーム世界の中では何の役にも立たないガラクタ、ということはありうる。それでも、武器が武器として存在できる別のゲーム世界に持ち込めば、武器として活躍できる。
武器が一切存在しないゲーム世界では、「武器」は安く流通することが予想され、このゲーム世界の中で「武器」を安く調達して他のゲーム世界に持ち込んで高く売る、などのトレードが生まれる可能性があることになる。
アイテムについては何とかなりそうではあるが、スキルについてはどうか。
突然付与されるようなスキルはともかく、苦労しないと上昇しないパラメータというのは、コンバートに馴染まないのではないか。
結局、この「苦労しないと上昇しない」というのは「難易度」という極めてあやふやな概念に依存することになる。
それぞれのゲーム世界に難易度を判定するAIのエージェントを派遣してゲーム内で実際に活動させてみる、なども不可能ではない。
でも結局、何かウラ技的に特定の行動をとれば簡単に敵を倒せるようなものが設定されていたらどうなるか。
そのウラ技を知ることができなければ「難しい」、でも知ってさえいれば「極めて簡単」、という状況がどうしても生まれるわけだ。
実際に活動させてみる、というのはいわばブラックボックステストだが、各ゲームサーバーにカーディナルがあってカーディナル内部の動作もカーディナル同士で相互に監視するようなホワイトボックステストを常に実行し続ける、というのもまったく不可能ではないかもしれない。
しかしそれでもおそらく、ブロックチェーンのように厳密な相互監視というのは、不可能なのではないか。
たとえカーディナルの相互監視がそれなりに機能していたとしても、抜け道の存在を完全に検出することが、おそらくはできない。
これはゲームに限らずすべてのAIに共通する問題でもあるが、ある判断について、それが本当にAIの思考の結果なのか、それともAIの思考の結果を無視して機械的にはじき出されたもの (人間があらかじめ決めておいた答え) なのかどうか、というのは判別が難しい、というのもある。
SAOのようにリアルに現実世界をシミュレートするような複雑なゲームではスキルのコンバートの実現は難しいが、もしかしたらそういうことが可能なゲームというのもあるのかもしれず、もし可能だとしたらそれはどういう性質を持ったゲームなのか、というのは興味がある。
どうでもいいが、重婚を防止する機構というのは作れるのだろうか、作れないのだろうか。