Dapp的PVP發模式--magic-maze-2d遊戲解讀

 

前言:
  將來基於Dapp的遊戲可能會多起來吧, 尤爲是博彩類遊戲, 因爲區塊鏈匿名特性, 加之數字貨幣不受國家監控, 幾乎成了一個法外之地. 大量遊戲團隊都往之涌入.
  今天講講當前Dapp的一種遊戲模式--pvp, 結合一個github上的開源項目magic-maze-2d來解讀.git

 

簡介:
  代碼是從github上搜索到的, 它是基於波場(公鏈)來發布合約的.
  具體的github地址magic-maze-2d, 我這邊權當搬運工了, 我以爲代碼寫的很好, 很是地敬佩做者.
  github

 

設計思想:
  pvp模式, 轉變了以前人和平臺博弈的局面, 轉爲人和人之間的博弈, 平臺只做爲組織者而存在. 這樣遊戲服務商能夠承包大部分的業務邏輯, 而涉及數字貨幣的交易則由智能合約來管理. 公開透明, 玩家都能接受.
  繼續借用做者的流程圖:
  
  其合約的核心代碼以下所示:後端

contract MagicMaze {

 	// 用於建立房間(帶着遊戲房間信息的hash), 設定獎勵規則
    function create(uint256 id, string memory name, string memory mazeHash) public payable {
        require(msg.value >= SERVICE_FEE);
        require(mazes[id].bonus == 0);
        bytes32 hash = stringToBytes32(mazeHash);
        mazes[id] = Maze(id, name, hash, msg.value, msg.sender, address(0), address(0));
        emit mazeCreated(id);
    }
    
    // 新玩家進行挑戰註冊
    function challenge(uint256 id) public payable {
        require(mazes[id].bonus != 0);
        require(mazes[id].challenger == address(0));
        require(mazes[id].bonus == msg.value);
        
        mazes[id].challenger = msg.sender;
        mazes[id].bonus += msg.value;
    }

    // 勝利者獲取獎勵(帶着房間信息, 可生成hash, 用於驗證)
    function takeBonus(uint256 id, string memory mazeInfo) public payable {
        require(mazes[id].bonus != 0);
        require(mazes[id].winner == address(0));
        require(mazes[id].creator == msg.sender || mazes[id].challenger == msg.sender);
        require(msg.value >= SERVICE_FEE);

        bytes32 mazeHash = sha256(abi.encodePacked(mazeInfo));
        if (mazeHash == mazes[id].mazeHash) {
            mazes[id].winner = msg.sender;
            msg.sender.transfer(mazes[id].bonus);
            emit winner(id, msg.sender);
        } else {
            emit falseClaim(id, msg.sender);
        }

        serviceCharge += msg.value;
    }

}

  簡單來講, 能夠概括以下:
  1. 玩家調用服務端建立房間, 後端根據房間信息+祕鑰(MazeInfo), 生成hash, 返回給玩家.
  2. 玩家帶着房間信息 + hash, 去智能合約建立房間(create).
  3. 有另一個玩家來挑戰, 先在智能合約中註冊爲該房間的挑戰者(challenge), 而後和服務端交互確認, 若是勝利, 服務端下發房間信息和祕鑰(MazeInfo)
  4. 贏家能夠根據這個MazeInfo去合約中獲取獎金(takeBonus).
  在整個流程中, 服務端都沒有參與合約裏獎池創建和提取, 而服務端至關於公平的裁判者.app

 

總結:
  這種pvp的模式, 平臺不參與博弈, 只收取服務費. 並且挑戰雙方, 不須要同時在線, 可玩性極強, 感受會流行一波, 不過PVP模式的遊戲, 也是一個潛在的缺點, 就是有些不良平臺會搞託(機器人), 這樣即作裁判員, 又作運動員, 輕鬆贏得獎池.
  我仍是相信大浪淘沙後, 最終會留下幾款體驗超好, 又值得信賴的精品.區塊鏈

相關文章
相關標籤/搜索