Game Methods
Methods for multiplayer room management, matchmaking, data persistence, ads, and leaderboards.
createRoom
Creates a new multiplayer game room.
gametegra.createRoom({ maxPlayers: 4 })var result = await gametegra.createRoom(gametegra.@params("maxPlayers", 4));var result = await gametegra.createRoom({ 'maxPlayers': 4 })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
maxPlayers | number | No | Maximum number of players allowed in the room. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"match_id": "7110b5d5-48a2-4b58-bfb7-6d85b1989a69.supergamefy",
"success": true
},
"errorMessage": null
}joinRoom
Joins an existing game room by match ID.
gametegra.joinRoom({ match_id: '7110b5d5-48a2-4b58-bfb7-6d85b1989a69.supergamefy' })var result = await gametegra.joinRoom("7110b5d5-48a2-4b58-bfb7-6d85b1989a69.supergamefy");var result = await gametegra.joinRoom('7110b5d5-48a2-4b58-bfb7-6d85b1989a69.supergamefy')Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
match_id | string | Yes | The match ID returned by createRoom. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"match_id": "7110b5d5-48a2-4b58-bfb7-6d85b1989a69.supergamefy",
"success": true
},
"errorMessage": null
}leaveRoom
Leaves the current game room.
gametegra.leaveRoom()var result = await gametegra.leaveRoom();var result = await gametegra.leaveRoom()Response:
{
"onClientSuccess": true,
"onHostSuccess": false,
"data": {
"error": "Do not give consent for custom Method"
},
"errorMessage": null
}quickMatch
Initiates automatic matchmaking.
gametegra.quickMatch({ mode: 'ranked' })var result = await gametegra.quickMatch(gametegra.@params("mode", "ranked"));var result = await gametegra.quickMatch({ 'mode': 'ranked' })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
mode | string | No | Match mode (e.g. 'ranked', 'casual'). |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"match_id": "abc123.supergamefy",
"success": true
},
"errorMessage": null
}getScore
Retrieves the current player's score.
gametegra.getScore()var score = await gametegra.getScore();var result = await gametegra.getScore()Response:
{
"onClientSuccess": true,
"onHostSuccess": false,
"data": {
"error": "Do not give consent for custom Method"
},
"errorMessage": null
}saveData
Saves a key-value pair to the player's persistent game storage.
gametegra.saveData({ key: 'login', value: { id: 1, credential: 'test' } })var result = await gametegra.saveData(gametegra.@params("key","login","value",new Dictionary<string,object>{{"id",1},{"credential","test"}}));var result = await gametegra.saveData({ 'key': 'login', 'value': { 'id': 1, 'credential': 'test' } })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Storage key. |
value | any | Yes | Value to persist. Can be any JSON-serializable type. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"success": true,
"ack": {
"collection": "2038553363867504640",
"key": "login",
"version": "381c82902a9c6691656b7913d194e3a0",
"user_id": "d2f2e862-7db2-46ce-9bc7-469739fcb618",
"permission_read": 1,
"permission_write": 1
}
},
"errorMessage": null
}loadData
Loads stored data entries for the current player.
gametegra.loadData({ keys: ['coins', 'level'] })var result = await gametegra.loadData(gametegra.@params("keys", new string[]{"coins","level"}));var result = await gametegra.loadData({ 'keys': ['coins', 'level'] })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
keys | string[] | No | Array of keys to load. Currently ignored — all keys are returned. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"success": true,
"data": [
{
"collection": "2038553363867504640",
"key": "login",
"user_id": "d2f2e862-7db2-46ce-9bc7-469739fcb618",
"version": "381c82902a9c6691656b7913d194e3a0",
"create_time": "2026-03-31T18:53:45Z",
"update_time": "2026-03-31T18:53:45Z",
"value": {
"id": 1,
"credential": "test"
}
}
]
},
"errorMessage": null
}showAd
Displays an advertisement.
gametegra.showAd({ placement: 'miniapp_open', adType: 'interstitial', miniGameId: 2038553363867504640 })var result = await gametegra.showAd(gametegra.@params("placement","miniapp_open","adType","interstitial","miniGameId",2038553363867504640L));var result = await gametegra.showAd({ 'placement': 'miniapp_open', 'adType': 'interstitial', 'miniGameId': 2038553363867504640 })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
placement | string | Yes | Ad placement identifier (e.g. 'miniapp_open'). |
adType | `string ('interstitial' | 'rewarded')` | Yes |
miniGameId | number | Yes | The miniapp ID requesting the ad. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"success": true
},
"errorMessage": null
}createLeaderboard
Creates a new leaderboard configuration.
gametegra.createLeaderboard({ id: 'global_wins', authoritative: false, sort_order: 'desc', operator: 'best', reset_schedule: '0 0 * * 1', metadata: { title: 'Haftalık Skorlar' } })var result = await gametegra.createLeaderboard(gametegra.@params("id","global_wins","sort_order","desc","operator","best"));var result = await gametegra.createLeaderboard({ 'id': 'global_wins', 'sort_order': 'desc', 'operator': 'best' })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique leaderboard identifier. |
authoritative | boolean | No | Whether scores require server-side validation. |
sort_order | `string ('asc' | 'desc')` | No |
operator | `string ('best' | 'set' | 'increment')` |
reset_schedule | string (cron expression) | No | Cron schedule for resetting the leaderboard. |
metadata | object | No | Arbitrary metadata (e.g. display title). |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"success": true,
"message": "Leaderboard '2038553363867504640_global_wins' creation request sent."
},
"errorMessage": null
}updateLeaderboard
Submits or updates the current player's score on a leaderboard.
gametegra.updateLeaderboard({ id: 'global_wins', score: 50, subscore: 1, metadata: { map: 'desert2' } })var result = await gametegra.updateLeaderboard(gametegra.@params("id","global_wins","score",50));var result = await gametegra.updateLeaderboard({ 'id': 'global_wins', 'score': 50 })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The leaderboard ID to update. |
score | number | Yes | The player's score. |
subscore | number | No | Optional tiebreaker score. |
metadata | object | No | Extra metadata (e.g. { map: 'desert' }). |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"leaderboard_id": "2038553363867504640_global_wins",
"owner_id": "d2f2e862-7db2-46ce-9bc7-469739fcb618",
"score": "100",
"subscore": "5",
"rank": "1",
"metadata": {
"map": "desert"
},
"create_time": "2026-03-31T19:07:40Z",
"update_time": "2026-03-31T19:07:40Z",
"expiry_time": "2026-04-06T00:00:00Z",
"success": true
},
"errorMessage": null
}getLeaderboard
Fetches the top scores from a leaderboard.
gametegra.getLeaderboard({ id: 'global_wins', limit: 10 })var result = await gametegra.getLeaderboard(gametegra.@params("id","global_wins","limit",10));var result = await gametegra.getLeaderboard({ 'id': 'global_wins', 'limit': 10 })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The leaderboard ID to fetch. |
limit | number | No | Max number of records to return. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": true,
"data": {
"records": [
{
"leaderboard_id": "2038553363867504640_global_wins",
"owner_id": "d2f2e862-7db2-46ce-9bc7-469739fcb618",
"username": "player1",
"score": "100",
"subscore": "5",
"num_score": 1,
"metadata": {
"map": "desert"
},
"create_time": "2026-03-31T19:07:40Z",
"update_time": "2026-03-31T19:07:40Z",
"expiry_time": "2026-04-06T00:00:00Z",
"rank": "1",
"max_num_score": 1000000
}
],
"owner_records": [],
"next_cursor": null,
"prev_cursor": null,
"success": true
},
"errorMessage": null
}openMatchChat
Opens the native match chat UI.
gametegra.openMatchChat({ room_name: 'lobby' })Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
room_name | string | No | Optional room name to open the chat for. |
Response:
{
"onClientSuccess": true,
"onHostSuccess": false,
"data": {
"error": "Do not give consent for custom Method"
},
"errorMessage": null
}