Game Settlement
All About Game Settlement API
Ready
You can utilize this API to verify the eligibility of players who wish to join a game while they are in the lobby or waiting room. The API allows you to perform several checks to ensure that each player meets the necessary requirements. These checks include:
Validating the vZOO balance of each player: Ensuring that each player has a sufficient balance of vZOO tokens to participate in the game.
Checking if a player has been banned from the platform: Verifying if a player has been restricted from accessing the game due to violations or other reasons.
Verifying that the cost of joining the game does not exceed the maximum vZOO spending limit set for the game.
Grant access to the user if they pass all the validations of the game settlement.
Checking if the number of players exceeds the limit set for the game: Ensuring that the number of players attempting to join does not exceed the specified limit.
Verifying if the game owner's mirror address has sufficient vZOO balance: This check is useful if the game owner needs to top-up the reward or provide additional funds.
Verifying if the game has been verified by Zoo.Games: This check ensures that the game has undergone the necessary verification process by Zoo.Games.
We recommend that the game server performs these checks for each player upon entry. By calling this API with the relevant player information, the game server can determine if a player meets the criteria. If a player fails to pass any of the checks, the game server should reject their entry and remove them from the lobby or waiting room. This process helps maintain the integrity and fairness of the game environment.
Verify all information of players before starting the game
POST
API_END_POINT_URL/API_KEY/game/ready
SDK Preparation
You need to prepare for SignedSignatureFromPayload by
Installing zoo-game-sdk by npm install zoo-game-sdk
Import SDK by import * as ApiKey from 'zoo-game-sdk/src/auth/apikey/index'
Signing by SDK
let bodyMessage =JSON.stringify(payload);
let hmac = ApiKey.signData(bodyMessage, SEC_KEY);
*Use "hmac" as SignedSignatureFromPayload
Query Parameters
API_KEY*
String
API_KEY
Request Body
userJwts*
Array
Array of user's JWT Token list. - Must be arranged by the user entry order
userPrimaryAddresses*
Array
Array of user's primary address.
- Must be arranged by the user entry order - Exact same array length as user JWT
userLockAmounts*
Array
Array of user's spending vZOO.
- Must be arranged by the user entry order - Exact same array length as user JWT - The value must be less than Game Config "maxVZOO"
gameAddress*
Address
Address of Game/Project registered Primary Address
gameLockAmount*
Number
Game owner top-up amount in this game - Entry 0 for no top-up
{
success: true,
data: {
roundId: '0xe3c4937ee22e1f2eb80d2d7a881e7777de9aa547006a145f4dd5bb8ec7b40e31'
}
}
Start
After using the "Ready" API to verify the validity of the game settlement, you can proceed to use the "Start" function to initiate the game round. The Start API allows you to lock the specified amounts from the users and the game developer based on your provided parameters.
Start the game round
POST
API_END_POINT_URL/API_KEY/game/start
SDK Preparation
You need to prepare for SignedSignatureFromPayload by
Installing zoo-game-sdk by npm install zoo-game-sdk
Import SDK by import * as ApiKey from 'zoo-game-sdk/src/auth/apikey/index'
Signing by SDK
let bodyMessage =JSON.stringify(payload);
let hmac = ApiKey.signData(bodyMessage, SEC_KEY);
*Use "hmac" as SignedSignatureFromPayload
Query Parameters
API_KEY*
String
API_KEY
Request Body
userJwts*
Array
Array of user's JWT Token list. - Must be arranged by the user entry order
userPrimaryAddresses*
Array
Array of user's primary address.
- Must be arranged by the user entry order - Exact same array length as user JWT
userLockAmounts*
Array
Array of user's spending vZOO.
- Must be arranged by the user entry order - Exact same array length as user JWT - The value must be less than Game Config "maxVZOO"
gameAddress*
Address
Address of Game/Project registered Primary Address
gameLockAmount*
Number
Game owner top-up amount in this game - Entry 0 for no top-up
{
success: true,
data: {
roundId: '0xe3c4937ee22e1f2eb80d2d7a881e7777de9aa547006a145f4dd5bb8ec7b40e31',
txHash: '0xe259f525616f295e877a0da35b59e45f6c2e48c340a16102eb995f0d0c4c36a1'
}
}
Over
The Over API is used to finalize the game round and broadcast the rewards that each user will receive from the locked vZOO pool of a specific game. The rules for distributing rewards are as follows:
The total amount paid by players should not exceed the total locked vZOO in the pool.
Assume you have two players with an entry fee of 100 vZOO each, resulting in a locked vZOO pool of 200 vZOO. If the final reward is 190 vZOO for Player A and 10 vZOO for Player B (determined by the game), you need to call the "Game Over" API with adjusted rewards.
If the game developer is entitled to receive a fee from the players' rewards, it should be deducted accordingly. This deduction occurs after the platform fee calculation.
It's essential to ensure that the total amount paid by players, including the platform fee, does not exceed the locked vZOO pool amount.
If the game developer has topped up additional rewards for this round, it is necessary to follow the rule of "Total paid + Platform Fee <= Locked vZOO Pool amount."
By adhering to these rules and providing the adjusted rewards (after deducting the platform fee and game developer's fee, if applicable), the "Game Over" API can be used to distribute the final rewards to the players.
Finalize the game round with broadcast a reward
POST
API_END_POINT_URL/API_KEY/game/over
SDK Preparation
You need to prepare for SignedSignatureFromPayload by
Installing zoo-game-sdk by npm install zoo-game-sdk
Import SDK by import * as ApiKey from 'zoo-game-sdk/src/auth/apikey/index'
Signing by SDK
let bodyMessage =JSON.stringify(payload);
let hmac = ApiKey.signData(bodyMessage, SEC_KEY);
*Use "hmac" as SignedSignatureFromPayload
Query Parameters
API_KEY*
String
API_KEY
Request Body
gameResultAmount*
Number
How much reward Game Address wants to takes a reward from the game round. such as Fee or any purposes
usersResultAmount*
Array
Array of user's reward deduct with Platform fee.
- Must ordered by entried order of user exactly from Game Start API
roundId*
Hex ID
ID your got from "Game Start" API result.
Start with '0x1234....89'
gameAddress*
Address
Address of Game/Project registered Primary Address
{
success: true,
data: {
roundId: '0xe3c4937ee22e1f2eb80d2d7a881e7777de9aa547006a145f4dd5bb8ec7b40e31',
txHash: '0xe259f525616f295e877a0da35b59e45f6c2e48c340a16102eb995f0d0c4c36a1'
}
}
Over V2
This is similar to V1, but there’s no need to deduct a fee. You can input the full amount of rewards. The only condition is that the total reward amount must match exactly.
For example, if you startAPI request with 4 players and each player has locked 100 vZOO, then the total locked vZOO is 400 vZOO.
With this Over V2 API, you need to distribute all 400 vZOO to the players. The reward amount cannot be less or more than this. It must be exactly 400 vZOO.
Finalize the game round with broadcast a reward
POST
API_END_POINT_URL/API_KEY/game/over_v2
SDK Preparation
You need to prepare for SignedSignatureFromPayload by
Installing zoo-game-sdk by npm install zoo-game-sdk
Import SDK by import * as ApiKey from 'zoo-game-sdk/src/auth/apikey/index'
Signing by SDK
let bodyMessage =JSON.stringify(payload);
let hmac = ApiKey.signData(bodyMessage, SEC_KEY);
*Use "hmac" as SignedSignatureFromPayload
Query Parameters
API_KEY*
String
API_KEY
Request Body
gameResultAmount*
Number
How much reward Game Address wants to takes a reward from the game round. such as Fee or any purposes
usersResultAmount*
Array
Array of user's reward
- Must ordered by entried order of user exactly from Game Start API
roundId*
Hex ID
ID your got from "Game Start" API result.
Start with '0x1234....89'
gameAddress*
Address
Address of Game/Project registered Primary Address
{
success: true,
data: {
roundId: '0xe3c4937ee22e1f2eb80d2d7a881e7777de9aa547006a145f4dd5bb8ec7b40e31',
txHash: '0xe259f525616f295e877a0da35b59e45f6c2e48c340a16102eb995f0d0c4c36a1'
}
}
Cancel
The Cancel API is used when there is an issue with a specific game round, and you need to cancel it. By calling this API, all the vZOO tokens that were locked, both from the users and the game address, will be returned in their full amount.
Cancel the game round and return all locked vZOO
POST
API_END_POINT_URL/API_KEY/game/cancel
SDK Preparation
You need to prepare for SignedSignatureFromPayload by
Installing zoo-game-sdk by npm install zoo-game-sdk
Import SDK by import * as ApiKey from 'zoo-game-sdk/src/auth/apikey/index'
Signing by SDK
let bodyMessage =JSON.stringify(payload);
let hmac = ApiKey.signData(bodyMessage, SEC_KEY);
*Use "hmac" as SignedSignatureFromPayload
Query Parameters
API_KEY*
String
API_KEY
Request Body
roundId*
Hex ID
ID you get from the "Game Start" API result.
Start with '0x1234....89'
gameAddress*
Address
Address of Game/Project registered Primary Address
{
success: true,
data: {
roundId: '0xe3c4937ee22e1f2eb80d2d7a881e7777de9aa547006a145f4dd5bb8ec7b40e31',
txHash: '0xe259f525616f295e877a0da35b59e45f6c2e48c340a16102eb995f0d0c4c36a1'
}
}
Last updated