小ネタで終わらせるつもりが、前回の記事「SAOのコンバート機能とビザンチン将軍問題」をアップしてから、他にも書きたいことが出てきてしまった。
こんなことを書いていると、俺が何か新しいチェーンを実装し始めてるように思う人もいるかもしれないがそうではない。
実用性を無視して、クソ重くていいから初期ビットコインのようなシンプルなブロックチェーンをそのうち実装してみたい、とは思っている。
既存のチェーンを利用したDappもまったく興味がないわけではないが、とりあえず今は「こんなチェーンがあったら」「あんなチェーンがあったら」と考えてるほうが楽しい。
ゲームエンジンの構想は今までいくつかあった。でもどちらかというと俺は、SAOのような具体的な「空に浮かぶ鋼鉄の城の空想」よりは、複数の仮想世界を行き来するという発想に惹かれていた。
だからSAOでも1期終盤でそういう展開になることを知った時はけっこう驚いた。
今までは、じゃあどんな風にゲーム世界を行き来するのか、ということはじっくり考えてこなかった。SAOを観ていなかったら、このことについてあらためて考えようとはしていなかったかもしれない。
というか結局、欠けていたピースはブロックチェーンだった、ということなのだろう。
今回提示しているアイディアを実証実験的に稼働させてみたい、とも思ってはいるが、すぐに始めたいとは思ってない。
整数の性質に詳しい人、コードが書ける人、ゲーマー魂を持った人 (勝てばOKというわけではなくゲームとして面白いとはどういうことかについてこだわりを持っている人) 、といった人々の関心をひきつつ、そうでない人々から関心を持たれすぎないようにするのが難しいかもしれない。
あとは、チェーンを稼働させてみて「なんかイマイチなのでこのチェーンは放棄」が気軽にできるのかどうか分からない。
放棄するかもしれないからといって、あんまりクローズドでやっても意味がない。チェーンのノードを見知らぬ人に気軽に立ち上げてもらって、ほら、実際にアイテムの履歴が見れるでしょ、そして改竄しようと思ってもできないでしょ、というのを示さないと実証実験としては意味がない。
もちろん、俺が提示したアイディアを使って俺の知らないところで勝手に実装してくれてもかまわない。何の許可も要らない。そして当然ながら、俺のアイディアを実際に実装してみて被った不利益について、俺は一切の責任を負わない。
前回の記事をアップしてから気づいたが、そもそもSAOのザ・シードはP2P的でないのかもしれない。
「接続」というのはあくまでも各ゲーム間でどういう風にコンバートするかをGMがバランスを考慮しながら調整する、そういうことなら大きな矛盾はないのかもしれない。
でもそれだと思考実験としては面白くない。
やはりここでは、非中央集権的・ピュアP2P的にやるとしたら、というのを考えてみたい。
「スライム1匹でレベル1000」問題については、いったん忘れる。
苦労しないと上昇しないパラメータは、あくまでもそれぞれのゲーム世界で完結した話として考える。
でも、「エクスカリバー1億本」問題には対処する。というか、これをメインに据えて、もう一度問題を再設定したい。
座標のことも忘れる。
座標がないゲーム世界というのもあっていいだろう。
座標の情報は共有事項から外してしまえば、ゲームというのはテキストアドベンチャーであってもかまわないわけだ。
また、「コンバート」という言い方はやはりローカルに何らかの重要なファイルがあることがイメージされているのかもしれないので、ユーザーのゲーム間移動という発想に置き換えて考える。
というわけで、SAOでの描写から離れて、問題を再設定してみる。
・複数のゲームは1つのブロックチェーンを共有する
・GMは、誰に何の許可も取らずにゲームサーバーを立ち上げられる
・基本的には、ユーザーは任意のゲームから任意のゲームに自由に行き来 (ゲーム間移動) できる
・ユーザーがどの世界に移動したかの履歴はチェーンに記録される
・基本的には、ユーザーは任意のアイテムを、任意のユーザーに譲渡できる
・アイテムの所有 (譲渡) の履歴はチェーンに記録される
・アイテムの発生はマイニングの結果という偶然性に依存する
・ビットコインにおけるアドレスとその秘密鍵と同じように、ユーザーにはユーザーアドレスとそのキーが、GMにはGMアドレスとそのキーがある
こう考えていくと、もはやSAOのザ・シードのようなものである必要もなく、単にチェーンについてのルールだけがあって、ゲームのシステムは勝手に用意してください、ということになる。
というか、ゲームである必要性すらないが、それについてはとりあえず考えない。
今回の記事において、「GM」というのがシステムなのか、ゲームを運営している人間なのか、運営側が動かしているゲーム内キャラクターなのか、というのは意図的に曖昧にしている。
チェーンのルールとしてのGMは、ユーザーのゲーム間移動やアイテムの受け渡しにおいて、許可したり拒否したりできる存在で、許可や拒否というのはGMアドレスのキーを知っていないと生成できない文字列を発行する、ということで行われることを想定している。
前回の記事で、アイテムは固有のIDを持ち、あるIDのアイテムは複数のゲーム世界 (ネットワーク全体) に1つしかなく、そのIDの整数としての性質がそのままアイテムとしての特性になるようにすればいい、そしてアイテムはマイニングの結果として「発生」するようにすればいい、と示した。
そういうルールであっても、エクスカリバーと同じような効果を持つ剣が1億本あるゲーム世界は勝手に立ち上げられる。
これについて補足しておく。
仮にAというゲーム世界で、「9999」というIDだけがエクスカリバーだったとする。整数の性質というより決め打ちで、「9999」だけがエクスカリバー。
ここで、Aというゲーム世界ではエクスカリバーは1本だけだが、Bというゲーム世界では9の倍数はすべてエクスカリバーだったとする。
この状況で、Aの世界にあった「9999」というIDのアイテムをBの世界に持ち込めば、Bの世界の中ではその「9999」のアイテムは大量のエクスカリバーの中に埋もれることになる。
でもBの世界にあった「9999」をもう一度Aに持ち込めば、やはりその「9999」はAの世界では唯一のエクスカリバーということになる。
「希少性のあり方そのものが解体されるわけではない」というのはこういうことだ。
前回の記事で「選り好みする動機」と書いたのは要するに、特定のトランザクションを省いて実行してみたら自分が望むアイテムが得られることが分かったので、トランザクションを省いて「計算できました」と宣言したらどうなるのか、ということだ。
でもそれを言うなら、ビットコインにおいても特定の条件を満たす計算結果を早く示したもの勝ちなので、同じように選り好みする動機はあることになる。
このへんどうなっているのか、技術的な解説があれば読んでみたい。
選り好みのことよりも、マイナーがアイテムを手放さないことによって、ゲームからダイナミズムが失われることのほうが問題かもしれない。
マイニングを積極的に行う主体は、ゲームとしての面白さより経済的利益を優先させるかもしれず、マイニングによってせっかくアイテムが生成されても、「流通させないほうが得」となればマイナーが保有し続け、ゲームを楽しみたいユーザーにアイテムが行き渡らない可能性がある。
基軸通貨的なアイテムがマイニングの報酬としてもらえて、副産物として生成されたアイテムがランダムにバラまかれる、というほうがいいかもしれない。
ランダムにバラまかれるという場合には、あるGMアドレスが「生きているゲーム」のGMアドレスなのかどうかをどうやって判別すればいいかはそれなりに難問かもしれない。アイテムをゲットするために、実際にはまともに稼働していないゲームサーバーを大量に立ち上げられた場合の対処が難しい。
SAOのキャリバー編 (アニメでは2期15話「湖の女王」から2期17話「エクスキャリバー」まで) の冒頭で、「ALOで聖剣エクスキャリバー発見」というニュースにキリトが驚くシーンがある。
アイテムの発生がマイニングの結果に依存するようにすると、こういう「ニュース」が本当に人々に驚きを持って迎えられるという状況が生まれる。
例えば123456789の倍数のアイテムが特別な意味を持つゲーム世界があり、それなりにユーザー数が多かったとする。
単純に計算結果のハッシュ値がアイテムのIDになるとすると、ハッシュ値のバラけ方が理想的なら、単純計算で「1億2千万分の1以下」の確率でしか生成されないアイテムということになる。
過去にそういうアイテムが1回だけ生成され、当分はそういうアイテムは生成されないと思われていた時に、計算結果として新たに123456789の倍数のアイテムが生成されたと分かったらどうなるか。
この場合、GMの恣意性に依存することなく、そしてそれはつまり「ああ、話題づくりのためにそういうの用意したのね」ということではなく、アイテムの発生が本当にニュースになるわけだ。
またこれは、ゲーム間移動を促進することにもなる。
第2の「123456789の倍数」が別のゲーム世界に「ドロップ」されたとすると、誰かがゲーム間移動をしてそのアイテムを持ち込むかどうかというのが大きく注目される展開になるわけだ。
誰に何の許可もとらずに無料でゲームサーバーを立ち上げられる、というのは大前提だが、ユーザーが無料でゲームができるのかどうか、というのはここではどうでもいい。
お金 (円やドル) を払うとGMからアイテムが譲渡される、というのもいいし、メガネ着用時の顔写真をGMに送るとGMからアイテムが譲渡される、というのでもかまわない。
整数の性質がアイテムの特性になるという場合、そのルールはあくまでもチェーンの外でのルールであって、ルールは勝手にGMが決められるというのを前提にしている。
もし仮に、今までどのゲーム世界でも、55の倍数のアイテムは特に何の意味も持っていなかったとしよう。
ここで、55の倍数のアイテムを各ゲーム世界で収集したあと、55の倍数のアイテムが重要な役割を果たすゲームを立ち上げたらどうなるのか。
でも、そのゲームにユーザーがいなければネットワーク全体に大きな影響はないのでさほど気にしなくていいかもしれない。
また、ユーザー数の多いゲームで、突然ルールが変更された場合をどう考えるか。
まあこれも、GMへの利益誘導が明白なルール変更が繰り返されればユーザーが離れていく、と考えていいかもしれない。
また、ユーザー数の多いゲームであっても、既存の重要なルールは変更されないものの、希少なアイテムについてのルールは少しずつ追加され続けていくのが当然と考えたほうがいいだろう。
ユーザーが任意のゲームから任意のゲームに自由に行き来できる、というのが前提だとしても、よく考えると事実上のブロックはできてしまう。
例えば、Cというゲーム世界では、Dというゲーム世界から移動してきた人は全員強制的に牢獄に閉じ込められて身動きがとれなくなる、というような場合を考えてみる。
この場合、Cの世界のGMは、実質的にDの世界からの「入国」をブロックしているといえる。
どうせブロックできるなら、あらかじめ「入国審査」を用意してもいいかもしれない。
GMが単純に「これ以上ユーザーを増やしたくない」と考えている場合もあるだろう。
また、お金 (円やドル) を払うとGMからアイテムが譲渡され、そのアイテムがないと入国できない (ゲームを開始できない)、というようなゲームを作ることもできる。
そうなると、「出国審査」はあったほうがいいのかどうか、という話にもなる。
出国審査があれば、「旗色が悪くなってきたので他のゲームにいったん移動」という行動をGMは阻止できる。
ただ、どうせ任意のタイミングでログアウトできるなら、任意のタイミングで出国できたっていいじゃないか、とも考えられる。
でもログアウトという概念がない、あるいはログアウトしたとしてもゲーム内のキャラが消えたり眠ったりするわけではないようなゲーム、つまりユーザーがキャラを動かしたいときだけちょっとずつ動かすというようなゲームの存在も考えるなら、出国審査があるほうがGMにとっては作れるゲームの自由度が高まる。
例えば初期のオンラインゲームの『釣りバカ気分』は、ユーザーが画面を見ていない時もゲームが進行していて、魚がかかったらメールが来る。
ログアウトという概念がないゲームだと、1つの戦闘が1ヶ月、というようなゆっくりとした進行のゲームも考えられる。もしこういうゲームで気軽に離脱できるとしたら、ゲーム性が変わってしまう場合がある。要するに、戦闘が終わるまでは出国できない、という制約をGMが設定できたほうがいいだろうということだ。
さて、出国審査があるとすると、何らかの救済措置を用意すべきかどうか、というのは大きな問題になる。
ユーザーが「このゲーム世界から出たい」と思った時に、GMが「このユーザーはもうこのゲームから永遠に出さない」と決めたら、移動できなくなってしまう。
また、あるゲーム世界に移動してから、そのゲーム世界のGMがゲームサーバーをシャットダウンしてしまうと、出国審査ができなくなるので永遠に出国できず、もうそのユーザーアドレスは使用できないということになってしまう。
ここで、出国審査を無視して入国審査だけで移動できるような救済措置があったほうがいいことになる。
例えば、ゲーム間移動の申請をしてからしばらく経って「強制出国要請」をすれば、出国審査は行わずに入国審査だけで移動できる、というようなものだ。「強制出国要請」による移動では、元のゲーム世界のGMはユーザーの脱出を阻止できない、というわけだ。
出国審査のルールはチェーンで共有する必要があるので、ゲーム性にも影響を与える。
上記のような救済措置の方法だと、初回の移動申請から「強制出国要請」までのスパンは感覚的には24時間くらいが妥当のようにも思うが、それだと「1つの戦闘が1ヶ月で、戦闘中は離脱できない」というようなゲームは作れないことになり、悩ましいところではある。
そしてこういう救済措置の必要性について考えると、ユーザーは、あるゲーム世界にいたとしてもそのゲームサーバーにキーを預ける必要がない、というのが望ましいことになる。
あるユーザーは、必ずどこかのゲーム世界にいる。
これは、ユーザーアドレスとGMアドレスの紐付きがあるということでもある。
アイテムの受け渡しの際、GMがそれを禁止したりできるのかどうか、また、同じゲーム世界にいなくてもアイテムの受け渡しを可能にするのかどうか、というのはチェーンのルールとして決めておく必要がある。
「受け取り側」についてはGMの許可は必須なのではないか、という気もしてくる。
前述のように「1つの戦闘が1ヶ月で、戦闘中は離脱できない」というようなゲームで、戦闘中にいつでもアイテムが受け取れるとしたらゲーム性に大きな影響があるからだ。
でも、アイテムの受け渡しをGMはまったく拒否できない、というシステムも不可能ではないかもしれない。
なぜなら、単に受け取っても「所有」してるだけで、今の戦闘が終わらないと使用できるようにならない、という制約をGMが設定できるので、やっぱりアイテムの受け渡しにGMは一切介入できないとしても大きな問題はないのかもしれない。
ただ、受け渡しのたびにGMの許可が必要だとするなら、「受け取り側が半径10メートル以内にいないと受け取れない」といった細かい制約をGMが自由に設定できる。
また、アイテムの「強制移転」をGMが自由にできるのかどうかは重要だ。
ミスると重要なアイテムが失われるかもしれないという、そういうルールの中でしか生まれないスリルというのはあるだろう。
でも強制移転を可能にすると、GMアドレスのキーが流出したら、その世界にいるユーザーのアイテムが根こそぎ奪われたりすることが起こりうる。
これは既存のチェーンにおいて、取引所がクラックされた時の状況に似ている。
GMによる強制移転を可能にするなら、強制移転を許可するフラグをユーザーが設定できて、その情報はチェーンに記録されるようにしてもいいかもしれない。GMは「こういう性質を持ったアイテムの強制移転を許可しておかないとこのダンジョンには入れない」などの制約を設けるようにして、ユーザーはそのダンジョンにいない時やしばらくゲームをプレイしない時はすべてのアイテムの強制移転を許可しない設定にしておけば、「しばらくプレイしてない間にGMアドレスのキーが流出してアイテム全部消失」ということは起こらないことにはなる。
NPCについては、通常のユーザーと同じようにユーザーアドレスがあればいい。アイテムを所有できるモンスターも同じようにユーザーアドレスがあればいい。
MMORPGのようなものを実現しようとすると、GMはGMアドレスだけでなくモンスターやNPCのために大量のユーザーアドレスを管理する必要が出てくるだろう。
RPGなどで「町中を行ったり来たりしてるだけの人」の情報はチェーンに乗せる必要がないのでユーザーアドレスは必要ない。
また、チェーンの履歴を見るだけでは、あるユーザーアドレスがモンスターのものなのかNPCのものなのか人間が管理してるものなのかは分からないようになっていても別にかまわない。
SAOのマザーズ・ロザリオ編 (アニメでは2期18話「森の家」から2期24話「マザーズ・ロザリオ」まで) では、ある登場人物からある登場人物へ、あるソードスキルを継承させる話が出てくる。
苦労しないと上昇しないパラメータというのは譲渡できると意味がないわけだが、あらかじめ譲渡できるようになっているスキルについてはどうか。
スキルも譲渡できるようにするなら、チェーンに乗せるスキルの情報はアイテムと同じように所有 (譲渡) の履歴を持てばいいことになる。
じゃあアイテム以外にスキルのための履歴を別途用意すればいいかというと、そうでもないかもしれない。
あるゲーム世界では物理的実体があるアイテムが、別のゲーム世界ではスキル、というのも面白いかもしれない。
さらに別の世界ではペットだったりボットだったり、というのも面白いかもしれない。
この場合、アイテムというより「チェーンエレメント」というような呼び方のほうがいいのかもしれない。