無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

マイクリプトヒーローズの作り方 参加メモ

techxgamecollege.connpass.com 行ってきました(`・ω・´)

暗号通貨ゲームプロダクトのリリースと運用周りの話、あまり表に出ることがない(と思っている)おり、貴重な会でした。
いろいろと興味深い話が聞けたので忘れないうちに記録しておきます。

聞いた数値は色々とぼやかしますが、もし出ちゃいけない数値や情報があれば、@shinoyu までDMください。

マイクリプトヒーローズとはどんなゲームなのか?

www.mycryptoheroes.net

ドット絵風味のRPG要素ありのゲームです。UIがリッチになった、古きブラウザゲーみたいなやつです。 クエストクリアしてレアアイテム掘ったり、イーサリアムを使って石買ったりキャラクター買ったりする、ERC721コントラクトを用いたDailyActiveUser・NFT取引量・NFT取引数で世界1位に輝いたDAppsアプリです。 もちろんNFT(Non-Fungible Token)を取り扱うゲームなので、 opensea.ioのようなNFT取引所で売買することができます。

この辺詳しく知りたい人は、 ↓が解説わかりやすいかと思います。 economies2.com

国内で開発していて、自分が遊んだDappsゲーだとかなりわかりやすいUIになってます。いいですね。
勉強会で話して頂いた数値関連。UUもDAUもそこまで多いわけではありませんが、リリースして半年?くらいでリクープ達成し大きく売上を上げているとのことでした。

開発は、フロント側がNuxt.js、バックエンドがGolang、DBはAmazonAurora。その間をgRPCで繋いでいるサービスですね。
スマートコントラクト部分は、みんな大好きSolidity。
最近のモダンな技術スタックを使いつつ、ブロックチェーンもやってるという、興味を惹かれる開発をされているそうです。

構成図

開発裏話

やはりすべてフルチェーンで実装はムリゲ

最初のベータ版、すべての処理をLoom Networkでフルチェーン開発していたそうです。 ただ、めちゃくちゃ遅い。結果、一部のNHT関連処理を除いてオフチェーン(いわゆる普通のWebアプリ)に、1月くらいかけて切り替えたそうで...

Loom Network、一般的なブロックチェーンより圧倒的に早くはあるそうなんですが、 loomx.io

サーバー数十台並べて運用する一般的なゲームアプリにはさすがに対抗できないらしく、せいぜいサーバー1台分くらいの処理しかさばけないんだそうです。
それをすべてブロックチェーン上で実装するとなると、到底捌ききれませんね(´・ω・`)

あと、cross-shardの問題もあったそう。
ETHは、ETHノード群を役割ごとに分けて並列処理するシャーディングというものがあるんですが、別shardにある者同士でトランザクションを行うと、どうしても相手側ノードが完了しないと処理が戻ってこない同期的な問題があるらしく、Shardの分け方も経験を問われるらしいですね。

シャーディングについての解説は下が詳しいかと思います。 lab.stir.network

また、フルチェーンだとゲームロジックをすべてSolidityでコントラクト上に実装しなくてはならず、そこも大変だったらしいです。
そのへんの事情が相まって、フルチェーンをやめて要所だけオンチェーン、それ以外オフチェーンで実装することでゲームとしてのUXを担保している。そんな話でした。

ETHノードのトランザクションを追いかける

あと、ブロックチェーンアプリであるある話として、オンチェーンのトランザクションの待ち時間。

マイクリプトヒーローズでは、コントラクトが走ったあと、該当のトランザクションを監視して完了したらオフチェーン上のDBに値を反映しているそうです。ただ、このコントラクトがETHノードへ伝搬されるのに時間がかかるらしく、ノードによっては安定して拾えないこともあるようで。

安定してトランザクションを追えるETHノードを知っておくことも大事だそうです。

gRPC-WEBでゲームを運用

フロントがNuxt.jsでバックエンドがGolangということで、この間の情報のやりとりはgRPC-Webで行っているそうです。
gRPCについては詳しく解説しないんで、各々調べてください。

結構面白い使い方してるなーと感じたのは、gRPC ⇔ JSONの相互変換をうまく使っているところでしょうか。DBに情報を保存するときはgRPCオブジェクトをJSONに変換して格納しているそうです。 MySqlではJSON型を扱えるんですが、変なJSONを弾いてくれたり、構造をそのまま維持してくれて正規化をしなくて済んだり。そういうメリットがあったと聞きました。

ただし、Golangで開発されているためOmitEmpty問題に悩まされたとのこと。 valueが空と認識されるとJSONからそのキー自体削除してしまう、ご丁寧な仕様がありまして。

qiita.com

上に記載あるように、整数の0もこの対象になってしまいます。
例えばアイテム所持数の管理を行っていたとして使用で所持0になった場合、キーが消えます。DBにJSONで格納する際に想定したキーが無いことによって、度々トラブっていると話されてました。

MCH+

マイクリプトヒーローズを開発した、double jump.tokyo さんが、MCH+という取り組みを始めたそうです。

www.mch.plus

ファイナンスなどの周辺も含めた開発支援プログラムだそうです。今後ブロックチェーンゲーム開発をチャレンジしようとしている人はお話してみると幸せになるかもしれません。

質疑応答・パネルディスカッション

興味深い話がちょくちょく出てきましたが、そろそろ書き疲れたので興味持ったところだけ抜粋です(´・ω・`)

  • 実装の公正性はどう担保しているのか?
    • コントラクト側の実装はGithub上で公開している
      • そもそもEthrscanでコード見れる設定でコントラクト作っている。
      • そのコードと実際のデータと、公開コードをみてもらって、確かにあってる、と考えてもらって運用している
  • infura.ioを使っていないのは?
    • 普通に使えるけど、たまにトランザクションのイベントが取れないことが月1くらいで発生するので使っていない。
      • お金を扱う以上死活問題。速度より安定している方を選択した。
    • 理想はinfura使いつつ、安定している方も用意して多重化しておくのが良い
  • ユーザー獲得どうしている?日本のユーザーあんまりいなくない?海外を前提にゲーム設計しないと難しいのでは?
    • 8割は日本のユーザーで思った以上に日本ユーザー率高い
    • Twitterに巨大なユーザーグループがあって、そこからの流入が多い
    • 日本が一番規制が厳しいが、そのおかげでどこまでビジネスしていいかの線引がはっきりしている
      • 海外ではまだNFTをどう扱っていくかも固まってないところが多い。ビジネスとしての先が不明瞭だと開発しにくいのでは?
    • DAppsゲームYoutuberなる人がいる。媒体として広まる可能性はあり
  • 今後のブロックチェーンゲームの将来ってどうなる?
    • 今はブルーオーシャンだけど、これまでのゲーム史と同じ感じになる。
      • 中小が勃興して数が増え、大手がお金で殴りにきて、海外勢が技術で奪いにくる
        • 年々サイクルが早くなっていて、あと4、5年くらいすれば今のアプリゲーと同じ感じになっているかも
        • 先に沖に漕ぎ出すことが重要。波打ち際で波にさらわれる前に沖にでて、そのジャンルで代表ゲームになることができれば安定するかもしれない

非常に濃い2時間でした。
私的にとても興味があったジャンルの話なので、質問も含め興味深い気づきが多くありました。

このような場を用意してくれた会場提供レバレジーズさんと、イベント運用のテクロスさん。あと登壇とパネルディスカッションされていた方々、ありがとうございました。(`・ω・´)