Cloud Code란?
Cloud Code는 Unity 클라우드 서비스 중 하나로, 게임 서버 없이도 서버 측 코드의 로직을 클라우드에서 실행할 수 있게 해주는 서비스입니다. 이를 통해 클라이언트와 서버 간의 데이터 전달이나 계산을 원활하게 수행하고, 민감한 게임 로직을 서버 측에서 처리할 수 있습니다. 주로 랭킹 시스템, 보상 계산, 이벤트 타이머 등 여러 게임 기능에 활용됩니다. 클라우드 기반으로 실행되어 게임 클라이언트 업데이트 없이도 빠르게 게임의 주요 설정과 로직을 변경할 수 있는 유연성을 제공합니다.
왜 Cloud Code를 사용해야 할까?
Cloud Code는 게임 로직을 서버에서 관리하게 해줍니다. 이를 통해 클라이언트에서 조작하기 어려운 보안이 필요한 작업을 안전하게 처리할 수 있습니다. 예를 들어, 클라이언트에서 직접 플레이어 보상을 계산하지 않고 서버에 요청해 서버에서 결과를 제공하도록 설정할 수 있습니다.
Cloud Code의 장점:
- 보안성 강화: 클라이언트에서 접근할 수 없는 코드로 데이터 보호
- 유지보수 용이: 서버 업데이트로 로직 수정 가능
- 즉각 반영: 재배포 없이 로직 수정 가능
설정 방법
1. Unity 프로젝트 준비
UGS(Unity Gaming Services)와 연결된 Unity 프로젝트가 필요합니다. Unity 에디터에서 "Window > Package Manager"로 이동해 Cloud Code 패키지를 설치하세요.
2. Cloud Code 함수 생성
- Unity Dashboard에 접속해 Cloud Code 섹션을 찾습니다.
- New Script 버튼을 클릭해 새로운 Cloud Code 함수를 만듭니다.
- 예시로 플레이어가 로그인할 때마다 보상을 지급하는 GiveLoginBonus 함수를 추가합니다.함수 생성 후 Publish 버튼을 눌러 배포합니다.
// Cloud Code - GiveLoginBonus.js
module.exports = async function () {
let bonusAmount = 100; // 보너스 금액 예시
return bonusAmount;
};
추가 설명 : publish 왼쪽에 version 선택이 있는데 이는 다음과 같습니다.
- Working Copy: 현재 작업 중인 버전을 나타냅니다. 이 버전은 개발자가 코드를 수정하고 테스트하는 중인 상태로, 아직 정식으로 배포되지 않은 임시 작업본입니다. Working Copy에서 코드를 자유롭게 수정하며 테스트할 수 있습니다.
- 버전 번호(예: Version 1): 특정 시점에 배포된 함수의 고정된 버전을 의미합니다. 버전 번호가 붙은 상태로 배포된 함수는 클라이언트가 사용할 수 있으며, 수정이 불가능한 버전입니다. 일반적으로 배포가 완료되면 버전 번호가 붙은 상태로 관리되며, 이후 변경 사항은 Working Copy에서 계속 작업하여 업데이트된 버전으로 새로 배포할 수 있습니다.
3. 클라이언트에서 Cloud Code 호출하기
Unity 프로젝트의 코드에서 Cloud Code 함수를 호출하여 필요한 데이터를 받아올 수 있습니다. 예를 들어, Unity의 Cloud Code SDK를 사용해 함수 호출과 데이터를 송수신할 수 있습니다.
코드 작성 예제
using Unity.Services.CloudCode;
using Unity.Services.Authentication;
using Unity.Services.Core;
using UnityEngine;
using System.Threading.Tasks;
public class CloudCodeExample : MonoBehaviour
{
async void Start()
{
await InitializeCloudCodeAsync();
await GiveLoginBonus();
}
async Task InitializeCloudCodeAsync()
{
await UnityServices.InitializeAsync();
if (!AuthenticationService.Instance.IsSignedIn)
{
await AuthenticationService.Instance.SignInAnonymouslyAsync();
}
}
async Task GiveLoginBonus()
{
try
{
var result = await CloudCodeService.Instance.CallEndpointAsync<int>("GiveLoginBonus", new { });
Debug.Log($"보너스 지급 완료: {result}");
}
catch (CloudCodeException e)
{
Debug.LogError($"Cloud Code 에러 발생: {e.Message}");
}
}
}
이 예제에서 클라이언트는 GiveLoginBonus 함수를 호출하여 서버 측에서 보상을 지급받습니다. 이처럼 중요한 로직은 서버에서 처리되어 보안과 일관성을 유지할 수 있습니다.
테스트
Unity에서 프로젝트를 실행해 결과를 확인합니다. GiveLoginBonus 함수 호출 시 콘솔에서 CloudCode에서 작성한 값만큼 출력되면 정상적으로 이루어진 것입니다.
마무리
Cloud Code는 게임 서버 개발 없이도 클라우드에서 주요 로직을 처리할 수 있는 유용한 도구로, 보안성과 유지 보수 측면에서 큰 장점을 제공합니다.
'Unity > Unity Cloud(UGS)' 카테고리의 다른 글
[Unity] UGS - Leaderboards (1) | 2024.10.27 |
---|---|
[Unity] UGS - Asset Manager (1) | 2024.10.26 |
[Unity] UGS - Cloud Save (0) | 2024.10.24 |
[Unity] UGS - Remote Config (0) | 2024.10.23 |
[Unity] UGS - Player Authentication (0) | 2024.10.15 |