Cloud Code를 사용한 Economy Game Overrides
Learn how to use Game Overrides with Cloud Code to personalize your in-game Economy for specific player groups.
읽는 시간 2분최근 업데이트: 12시간 전
Game Overrides를 사용하면 게임에서 Economy를 맞춤화할 수 있습니다. 예를 들어 단기간만 시즌 세일을 제공하거나 베테랑 플레이어가 구매할 때 보상을 더 지급할 수 있습니다.
Economy에서 Game Overrides와 Config Caching이 작동하는 방식
Cloud Code와 Economy SDK에서 구성 할당 해시를 사용하는 방법에 관한 자세한 내용은 Config Caching을 참고하시기 바랍니다. Economy에서 플레이어에게 적용할 오버라이드를 알려면 클라이언트 디바이스에 어떤 오버라이드가 있는지 알아야 합니다. Economy는 구성의 일부로configAssignmentHashconfigAssignmentHashconfigAssignmentHashconfigAssignmentHashconfigAssignmentHashCloud Code로 Economy Game Overrides 사용
클라이언트 디바이스에서 게임 로직을 이동하기 위해 Cloud Code를 사용하여 게임 경제와 상호 작용하는 방법도 있습니다. Cloud Code에서 Economy와 상호 작용할 때configAssignmentHashconfigAssignmentHashCloud Code 설정
-
를 파라미터로 사용하여 Cloud Code 스크립트를 설정합니다.
configAssignmentHash
-
Economy SDK 2.2 이상을 사용하여 Cloud Code의 Economy를 호출하는 스크립트를 추가합니다.
/* * -------- Example Cloud Code Script -------- * * Ensure consistency when using Game Overrides with Economy * * -------------------------------------------- */const { CurrenciesApi } = require("@unity-services/economy-2.2");/* * CommonJS wrapper for the script. It receives a single argument, which can be destructured into: * - params: Object containing the parameters provided to the script, accessible as object properties * - context: Object containing the projectId, environmentId, environmentName, playerId and accessToken properties. * - logger: Logging client for the script. Provides debug(), info(), warning() and error() log levels. */module.exports = async ({ params, context, logger }) => { // Log an info message with the parameters provided to the script and the invocation context logger.info("Script parameters: " + JSON.stringify(params)); logger.info("Authenticated within the following context: " + JSON.stringify(context)); const { projectId, playerId, accessToken } = context; const { currencyId, configAssignmentHash } = params; const currencies = new CurrenciesApi({ accessToken }); const increment = await currencies.incrementPlayerCurrencyBalance({ projectId, playerId, currencyId, configAssignmentHash, currencyModifyBalanceRequest: { currencyId, amount: 10 } }); logger.info("Increment data result: " + JSON.stringify(increment.data)); // Return the JSON result to the client return { newBalance: increment.data.balance, };};
에디터 설정
-
Economy SDK 2.0.0 이상에서 구성을 가져옵니다.
string currencyID = "GOLD";CurrencyDefinition goldCurrencyDefinition = EconomyService.Instance.Configuration.GetCurrency(currencyID);
-
호출:
Economy SDK 기반입니다.EconomyService.Instance.Configuration.GetConfigAssignmentHash(); -
2단계의 를 Cloud Code로 전달합니다.
configAssignmentHashawait CloudCode.CallEndpointAsync<NewBalance>("AddCurrency", new IncrementBalanceParam(currencyId, configAssignmentHash));
예시 전문
public async Task<int> IncrementCurrency(){ var goldCurrencyId = "GOLD"; EconomyService.Instance.Configuration.GetCurrency(goldCurrencyId); var configAssignemntHash = EconomyService.Instance.Configuration.GetConfigAssignmentHash(); var newBalance = await CallIncrementCurrencyEndpoint(goldCurrencyId, configAssignemntHash); return newBalance;}public async Task<int> CallIncrementCurrencyEndpoint(string currencyId, string configAssignmentHash){ var newBalanceResult = await CloudCode.CallEndpointAsync<NewBalance>( "AddCurrency", new IncrementBalanceParam(currencyId, configAssignmentHash)); return newBalanceResult.newBalance;}public class NewBalance{ public int newBalance;}[Serializable]public class IncrementBalanceParam{ public string currencyId; public string configAssignmentHash; public IncrementBalanceParam(string currencyId, string configAssignmentHash) { this.currencyId = currencyId; this.configAssignmentHash = configAssignmentHash; } public override string ToString() { return $"{{\"currencyId\": @currencyId, \"configAssignmentHash\": @configAssignmentHash }}"; }}