はじめに
BlockChainの用途として、ゲームという観点で、
さらにプラットフォームという観点でみた時に、参考になるものがまだ少ないのが現状です。
自作ゲーム (http://oggata.tumblr.com/)
はCocos2dxを使う機会が多いのですが、Cocos2dxでBlockChainと連携したプラットフォームとしての
仕組みが提供される予定とのことで、調べてみました。
(cocosbcx)
http://www.cocosbcx.io/en/
Cocos-BCX
Cocos-BCXはCocos2d-xの創立チームによって作られたブロックチェーン開発プラットフォームで、
ブロックチェーン・ゲームエンジンと集約された開発環境、
一般的なブロックチェーンの基盤となるCocosChainで構成されている。
(Cocos2d-xは日本国内でも30%のシェア率を誇る大手のオープンソースゲーム開発プラットフォームで、
日本国内では“モンスト”や“ツムツム”、“ブレイブフロンティア”などの基盤となっている。マルチプラットフォームの開発が可能で、html5canvasで動くJavaScriptをSpidermonkeyで解釈し、iOSのネイティブとして動作etc..)
2018年3月にCocos-BCXとして、発表され、
Cocos仮想マシン(Cocos VM)とCocosChainの体験版でゲーム内でのアイテムの生成や移動などが公開された。
LoomやOntology、Nebulas、NEOといったブロックチェーン・プロジェクトを牽引する企業とのパートナーシップが注目されている。
Cocos-BCX Partnership Roundup — Meet our Friends
https://medium.com/cocosbcx/cocos-bcx-partnership-roundup-meet-our-friends-e4df07372093
Cocos-BCX & LoomSDK
パートナーシップが発表されている中でも、すでに手元で動かせる事例として、
Cocos Creatorとの連携方法がすでにドキュメント化されています。
Loom-Cocos-SDK have same api, same protobuf, similar contract with loom-js.
「Cocos Creator用Loom SDK」
https://loomx.io/developers/docs/ja/cocos-sdk-quickstart.html
https://github.com/loomnetwork/loom-sdk-documentation/blob/master/docs/cocos-sdk-quickstart.md#loom-cocos-sdk
WhitePaperの翻訳 (Sep 2018に発表されたもの)
CococsBCXですが、ホワイトペーパーを斜め読みしたので一部を取り上げてみました。何かの参考になればと思います。
(whitepaper)
http://www.cocosbcx.io/en/wp-content/themes/cocosBlog/source/white_paper_en.pdf
1.1 ブロックチェーンゲームの経済的背景
2009年にビットコインが発表されて以来、ブロックチェーンの技術と、仮想通貨は研究と議論の対象となっています。
ゲーム産業は、ブロックチェーンによって大きく影響を受けた分野です。
ゲームにおいて、コンテンツはオンラインで作成、使用、価格設定、交換されるので、
暗号通貨による価値づけなどに適しているといえます。
さらに、ゲームは堅牢なビジネスモデルや、ユーザーベース、開発コミュニティと共に、成熟したマーケットです。
我々は、ゲーム部門は、デジタルエコノミーを可能にしたボロックチェーンの開発の先駆けになると確信していますし、
このプロセスを加速するためにCocos-BCXを構築しています。
1.2 当社の価値提案
Cocos-BCXは、使いやすい開発および運用インフラです。
開発者の多くは、分散アプリケーションや、ブロックチェーンアプリケーションの経済的メカニズムに精通しているわけではありません。
Cocos-BCXは、開発者がさまざまなソフトウェアアーキテクチャやと経済的インセンティブを利用して
より良い体験を提供する手助けをします。
長期的には、Cocos-BCXプラットフォームは、手数料ベースから資産ベースまで、ゲームのビジネスモデルの
変換を手助けすることになるでしょう。
Cocos-BCXを使用して開発されたゲームは、そのステークホルダーたちが"PayToPlayモデル"と呼ばれる構造に対して、
デジタルアセットという共通の目的を持つのであれば、その課題を大きく解決するかもしれません。
1.3.1 ゲーム内経済の決済措置としての"ファンジブルトークン"
当初、トークンというものは、
ゲーム内への経済的な入力と出力を表現するものでした。
イーサリアムのERC-20のトークンは、一般的に、高い互換性、転送性、およびトレーサビリティという
シナリオにおいて使われます。
ゲームプレイヤーに提供される重要な価値は
1.ゲーム内通貨の流通の透明性
2.異なるゲーム間のゲーム内通貨の転送と変換
3.ゲーム内通貨決済からさまざまな暗号化通貨への変換
"The War of Plane"(https://shooter.candy.one)
は、トークンを使用してゲーム結果を解決する事例です。
ユーザーはゲームを開始し、シューターをコントロールするために100キャンディートークンを支払い、
敵機を破壊してステージをクリアすることでゲームポイントを獲得します。
プレイヤーは全てのステージをクリアするか、シューターがクラッシュすることで、ゲームオーバーとなります。
ゲームで得たポイントは、特定のレートでキャンディートークンと交換することができます。
キャンディートークンは他のアプリケーションで使用され、外部の暗号交換で取引されます。
1.3.2 ゲーム通貨と資産の交換と相互変換
EthereumのERC-20トークンは、スコアや単位などのような、同一のオブジェクトの定量的な測定に適しています。
対照的に、独自の定性的プロパティをもつような形式が必要であり、
非代替トークンの標準規格であるERC-721がEthereumに導入されました。
人気ゲームCryptokittiesはERC-721の代替不可能なトークンの適用例です。
このゲームでは、キティ(子猫)はブリードによる特定の組み合わせから表現された定性的なトークンです.
珍しいキティ(子猫)はその希少性のためにプレミアムな金額で取引されます。
この段階では、ゲーム内のすべてのデジタルオブジェクト(アイテムやユーザーアカウントなど)は
トークン化されます。
ゲームアイテムの生成、購入、取引活動は"トークンの交換イベント"として処理されます。
このメカニズムでは、ゲームプレイヤーは自身のデジタルな保有物を、ゲームやアプリケーション、ブロックチェーンを
超えて取引することができます。
続く...
サンプルを実行してみる
基本的には、quickstartの通りだが、やや作られたloom-cocos-sdkをコピペしたりする流れが
分かりにくかったので、下記に記載しておく
$git submodule update --init
# Loom Cocos SDKを生成と圧縮
$./tools/genCocoSDK.py
# loom-cocos-sdkをcopy&pasete
sample/loomDemoForCreator/assets/scriptに、genCocosSDK.pyで作成された./loom-cocos-sdkの中身をcopy&paseteする
# 同期させる
$./tools/syncLoomJSToSample.py
# loomを実行
$../../loom run
$Cocos Creatorから、sample/loomDemoForCreatorをopenDirectoryする
webpackでエラーが起きたので、versionを変更.
/node_modules/webpack-cli/bin/config-yargs.js:89
describe: optionsSchema.definitions.output.properties.path.description,
vim /cocos-sdk/deps/loom-js/package.json
> "webpack-cli": "^2.1.2", -> 3.1.1に変更
$rm -rf node_modules && npm install
(memo) webpackのbugらしい。
Update to webpack-cli v.3.1.1
it is bug in webpack-cli, not in webpack (so no need to use major release)
migrating to latest version solved the error for me: webpack-cli@3.1.1
https://github.com/webpack/webpack-cli/issues/609
https://github.com/webpack/webpack/issues/8082
https://github.com/webpack/webpack-cli/issues/607


//main.js
import createContract from './SimpleContract'
onBtnSave() {
this.contract.store('score', stringScore, function(e) {}
},
----->
//SimpleContract.js
import './A-loom-polyfill-for-cocos'
import {
NonceTxMiddleware, SignedTxMiddleware, Client,
Contract, Address, LocalAddress, CryptoUtils
} from './loom.umd'
import { MapEntry } from './setscore_pb'
class SimpleContract extends Contract {
store(key, value, cb) {
const params = new MapEntry()
params.setKey(key)
params.setValue(value)
----->
//setscore_pb.js
var jspb = require('./google-protobuf');
proto.MapEntry.prototype.setKey = function(value) {
jspb.Message.setProto3StringField(this, 1, value);
};
動画
「Cocos-BCX Exclusive Interview | Blockchain Gaming Full Stack Platform | BlockchainBrad」
https://www.youtube.com/watch?v=LBjDjuqhGzs
参考記事
「Meet Cocos-BCX — Future of Blockchain Game Development Empowering Over 1.1 Million Developers」
https://medium.com/cocosbcx/meet-cocos-bcx-future-of-blockchain-game-development-empowering-over-1-1-million-developers-267838239c0d
中国最大のモバイルゲームプラットフォームがLoom DAppチェーンと統合予定!!
https://medium.com/loom-network-japanese/%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E3%81%AE%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%8Cloom-dapp%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%A8%E7%B5%B1%E5%90%88%E3%82%92%E4%BA%88%E5%AE%9A-5e88d8c8e72
「SDKBOX for Blockchains」
https://www.sdkbox.com/blockchain
「Loom Unity SDKのサンプルを動かしてみる」
https://qiita.com/tsukumaru/items/81e2155a9e03d9a8caef