イーサエモンをプレイしてみました。あとソースコードも流し見してみました。そこで感じたdAppsゲームの限界などを述べたいと思います。
イーサリアムのおさらい
イーサエモンの説明に入る前に前知識から。イーサリアムには2つのアカウントタイプがあります。
EOA(Externally Owned Accountの略)
ETHを送受信するために普段みんなが使っているアカウント。ゲームでもユーザーアカウントになる。以下、単にアカウントを呼びます。
コントラクトアカウント
このアドレスにETHを送金すると内包するプログラムを実行できる。コントラクトによっては0ETHでも良いが送金手数料は必要。
スマートコントラクト
上記のコントラクトアカウントへの送金をトリガーに、ブロックチェーン上で動作するプログラムの事。
ゲームのためにスマートコントラクトでできること
- HPや経験値、レベルといった状態をブロックチェーン上に保存できる
- コントラクトの実行により状態を変更できる
- ユーザーのアクションによりコントラクトを実行し、HPや経験値、レベルといったパラメータを増減することで、ブロックチェーン上でゲームを作ることができる
- ただし先に述べたようにコントラクト実行のために、ユーザーはETHを送金する必要がある
以後、ブロックチェーン上のコントラクトの実行を「オンチェーンで処理する」と言うことにする。
dApps
ブロックチェーン上のプログラムで動作するアプリ。イーサリアムならスマートコントラクトの集合体。dはDecentralized(非中央集権)の意味。
イーサエモンをプレイしてみた感想
イーサエモンは上記のようにイーサリアムのコントラクトの集合で作られたdAppsゲームである。そして、少しプレイしてみて、すべてオンチェーンで処理するdAppsはゲームとしては厳しいと思った。この記事を書いた時点では、イーサエモンはモンスターの状態を更新するアクションを、すべてオンチェーンで処理するようである。
つまり、
- すべてのアクションにETHの送金が必要である(最初のモンスターの捕獲は0ETHであるが、送金手数料はかかる)
- 送金するということはトランザクションが発生し、それが終わるのを待つ必要がある
ということである。何をやるにもお金がかかり、かつ、アクションの完了に待ち時間があるゲームなのだ。つまり完全にdAppsでゲームを作るとポチゲー廃課金ゲーム化するということを、イーサエモンは示したと言えるだろう。
イーサエモンは、アクションの実行をポチポチとクリックして行うもので、SNS黎明期に流行ったポチゲーに近いものである。かろうじてdAppsゲームとして形になっているが、MMOのようにマルチプレイヤーが1つのワールドで、リアルタイムに色々なパラメータが書き換わる(HP、経験値、持ち物などなど)ようなゲームを、完全なdAppsで作ることは無理だろう。剣を振るう度に、換金してコントラクトを実行し、ダメージを与えた結果の反映にトランザクションを待つようであればゲームとして成り立たない。
ゲームに限ったことではないが、現状のトランザクション完了の待ち時間から、オンチェーンで処理することは、頻度が低く、待ち時間が許容されることに限ると思う。そうでないとユーザーはストレスをためることになる。娯楽性を追求するなら、オフチェーン処理と連携し、ユーザビリティを下げない頻度でオンチェーン処理する形にする必要があるだろう。ちなみにイーサエモンも近いうちにオフチェーン処理も含め、ゲームとしてより遊べるように改善していくようである。
ただしオフチェーンをはさむと、それはdAppsと呼べないかもしれない。しかし、それはユーザーにとって特に重要ではないように思う。