LoginSignup
2
3

More than 5 years have passed since last update.

Cocos-BCXについて(翻訳記事 + サンプル実行)

Last updated at Posted at 2018-10-29

はじめに

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
スクリーンショット 2018-11-02 11.30.13.png

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をコピペしたりする流れが
分かりにくかったので、下記に記載しておく

terminal
$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

スクリーンショット 2018-11-05 22.39.19.png

スクリーンショット 2018-11-06 13.09.09.png


//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

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3