ドキュメント

サポート

Cloud Code 向け Cloud Save のチュートリアル

Use Cloud Code to access, modify, and manage Cloud Save data to achieve server-authoritative gameplay.
読み終わるまでの所要時間 2 分最終更新 23日前

Cloud Code 向け Cloud Save SDK を使用すると、プレイヤーデータの読み取りと書き込み、ゲームデータの読み取りと書き込み、およびデータのクエリ (データをクエリ可能にするインデックスを設定している場合) を Cloud Code から実行できます。 使用可能なすべてのメソッドのリストについては、Cloud Code 向け Cloud Save SDK のドキュメント を参照してください。

Cloud Code からの Cloud Save へのアクセス

以下は、Cloud Code スクリプトからプレイヤーデータに書き込む方法の例です。 Javascript
const _ = require("lodash-4.17");const { DataApi} = require("@unity-services/cloud-save-1.4");const NUMBER_OF_SIDES = 6;module.exports = async ({ params, context, logger }) => { const { projectId, playerId } = context; const api = new DataApi(context); const roll = rollDice(NUMBER_OF_SIDES); if (roll > NUMBER_OF_SIDES) { // Log an error message with information about the exception logger.error("The roll is greater than the number of sides: " + roll); // Return an error back to the client throw Error("Unable to roll dice!"); } // Return a JSON result to the client const result = { sides: NUMBER_OF_SIDES, roll: roll, }; const setResult = await api.setItem(projectId, playerId, { key: "DIE_ROLL", value: result }); logger.debug(JSON.stringify(setResult.data)); return result;};// Function outside of the script wrapperfunction rollDice(sides) { return _.random(1, sides);}

クロスプレイヤーデータ

別のプレイヤーの ID を Cloud Save SDK に渡すことで、そのプレイヤーの Cloud Save データの読み取りと書き込みができるようになり、非同期のマルチプレイヤーインタラクションが可能になります。これは、ユーザーが自分のデータへのアクセスのみを許可されているクライアント内からは不可能です。 以下の例は、同じ ロビー 内で他のプレイヤーにいいねを付ける方法を示しています。サンプルコードは、Cloud Save に保存された他のプレイヤーのデータにアクセスしてそのデータを変更する方法を示しています。
otherPlayerId
パラメーターにより、他のプレイヤーが識別されます。
Javascript
const { DataApi } = require('@unity-services/cloud-save-1.4');module.exports = async ({ params, context, logger }) => { const { projectId } = context; const { otherPlayerId } = params; // Initialize the cloud save API client const cloudSaveAPI = new DataApi(context); // Access the save data for the specified player const otherPlayerSave = await cloudSaveAPI.getItems( projectId, otherPlayerId, // or any other player ID "likes" // Cloud Code key ); // Assume that player's likes is 0 if the key doesn't exist const otherPlayerLikes = otherPlayerSave.data.results[0]?.value || 0; // Update the data for the specified player cloudSaveAPI.setItem( projectId, otherPlayerId, { key: "likes", value: otherPlayerLikes + 1 } )};
プレイヤーから発信されたリクエストは信頼できない入力と見なされるため、上記の例のように他のプレイヤーの ID をパラメーターとして受け入れる場合は注意してください。ゲームにプレイヤー同士のインタラクションのタイミングや方法に関する制限がある場合 (例えば、プレイヤーがマルチプレイヤーをオプトアウトできる場合) は、スクリプト内でそれらの前提条件を確認する必要があります。

ユースケースと例

Cloud Code スクリプトによる Cloud Save SDK のその他のユースケースと例を見てみましょう。 | トピック | 説明 | |-|-| | クエストシステム | サーバー主導型/チート対策クエストシステム。
Cloud Code モジュール (C#) | | 引き換え可能なクーポン | プレイヤーにゲーム内報酬を提供します。
Cloud Code スクリプト (JavaScript) | | サーバー時刻のチート対策 | チート対策システムを実装します。
Cloud Code スクリプト (JavaScript)|