func: function __callback(bytes32 _queryId, string _result, bytes _proof) public {
          uint rollId = uint(keccak256(_queryId));
          address player = rollIdToGameAddress[rollId];
          require(msg.sender == oraclize_cbAddress());
  
          
          if (player == address(0)) {
              failedRolls[rollId] = rollId;
              return;
          }
  
          if (oraclize_randomDS_proofVerify__returnCode(_queryId, _result, _proof) != 0) {
  
              Game storage game = gamesInProgress[player];
              if (game.bet > 0) {
                  game.player.transfer(game.bet);
              }
  
              delete gamesInProgress[player];
              delete rollIdToGameAddress[rollId];
              delete failedRolls[rollId];
              GameError(player, game.id, rollId);
  
          } else {
              uint8 randomNumber = uint8((uint(keccak256(_result)) % NUM_DICE_SIDES) + 1);
              processDiceRoll(player, randomNumber);
  
          }
  
          delete rollIdToGameAddress[rollId];
      }