시작하기
이 섹션에서는 프로젝트에서 C# 모듈을 생성하는 데 필요한 모든 단계를 설명합니다.
Hello World 배포
간단한 Hello World C# 모듈을 만들어 Cloud Code를 시작합니다.
일반적인 워크플로
Cloud Code 모듈을 시작하려면 다음 단계를 따라야 합니다.
- .NET 프로젝트 생성: Cloud Code 모듈은 게임 클라이언트가 호출할 수 있는 엔드포인트를 공개하는 단순한 .NET 프로젝트입니다.
- Cloud Code Authoring 패키지 임포트: Cloud Code Authoring 패키지를 설치하여 호출 가능한 엔드포인트를 만듭니다.
- 프로젝트 내부에 모듈 엔드포인트 생성: 게임 클라이언트에서 호출할 수 있는 게임 로직을 정의합니다.
- 코드 패키징: 프로젝트용 어셈블리를 생성하고 아카이브로 패키징합니다.
- 프로젝트 배포: Cloud Code 서비스에 아카이브를 배포합니다.
- 모듈 엔드포인트 호출: 게임 클라이언트에서 모듈 엔드포인트를 호출합니다.
.NET 프로젝트 생성
Cloud Code 모듈은 게임 클라이언트가 호출할 수 있는 엔드포인트를 공개하는 단순한 .NET 프로젝트입니다. 시작하려면 선택한 IDE에서 새 .NET 프로젝트를 만듭니다. Cloud Code 모듈의 구조에 대해 자세히 알아보려면 모듈 구조를 참고하십시오.
다음 섹션에서는 JetBrains Rider와 Microsoft Visual Studio IDE에서 프로젝트를 만드는 방법을 설명합니다.
JetBrains Rider
다음 단계를 따라 JetBrains Rider에서 새 프로젝트를 만듭니다.
- File > New를 선택합니다.
- Class Library로 .NET Core 또는 .NET Framework를 선택합니다.
- 모듈의 이름을 지정합니다.
- Create를 선택합니다.
Microsoft Visual Studio
다음 단계를 따라 Microsoft Visual Studio에서 새 프로젝트를 만듭니다.
- File > New Solution을 선택합니다.
- .Net Class Library를 선택합니다.
- Next를 선택합니다.
- 모듈의 이름을 지정합니다.
- Create를 선택합니다.
Cloud Code Authoring 패키지 임포트
Cloud Code 모듈은 .NET 프로젝트이므로 NuGet 패키지 관리자를 사용하여 종속성을 관리합니다. 호출 가능한 엔드포인트를 만들려면 Cloud Code 모듈에 Cloud Code Authoring 패키지가 필요합니다. 이 패키지는 프로젝트에 설치할 수 있는 NuGet 패키지입니다.
다음 섹션에서는 IDE에 따라 패키지를 임포트하는 방법을 설명합니다.
JetBrains Rider
JetBrains Rider를 사용하여 Cloud Code Authoring 패키지를 설치합니다.
- Tools > NuGet > Show NuGet Packages를 선택합니다.
Com.Unity.Services.CloudCode.Core
를 검색합니다.- 최신 버전을 프로젝트에 설치합니다.
Microsoft Visual Studio
Microsoft Visual Studio를 사용하여 Cloud Code Authoring 패키지를 설치합니다.
- 프로젝트를 오른쪽 클릭하고 Manage NuGet Packages를 선택합니다.
Com.Unity.Services.CloudCode.Core
를 검색합니다.- Add Package를 선택합니다.
모듈 엔드포인트 생성
C# 모듈 내에서 엔드포인트를 만들려면 외부에서 호출 가능한 함수를 생성한 다음 CloudCodeFunction
속성을 부여하고 공개 이름을 지정해야 합니다. 함수 이름을 다르게 지정하면 게임 클라이언트에서 기존에 호출하던 함수를 변경하지 않고 코드를 리팩터링할 수 있습니다.
모듈 함수의 간단한 예시는 아래와 같습니다.
using Unity.Services.CloudCode.Core;
namespace ExampleModule;
public class MyModule
{
[CloudCodeFunction("SayHello")]
public string Hello(string name)
{
return $"Hello, {name}!";
}
}
이 예시에서는 name
이라는 문자열 파라미터를 사용하여 문자열을 반환하는 SayHello
라는 모듈 엔드포인트를 만듭니다.
코드 패키징
모듈을 배포하려면 먼저 코드를 아카이브로 패키징해야 합니다. 이 아카이브에는 Cloud Code 서비스에서 모듈을 실행하는 데 필요한 어셈블리가 포함되어야 합니다.
이러한 어셈블리는 프로젝트 퍼블리싱(영문)을 통해 생성할 수 있습니다. 어셈블리는 linux-x64
타겟 런타임에 맞게 빌드해야 합니다. ReadyToRun
컴파일을 활성화하여 성능을 향상할 수 있습니다.
어셈블리 생성 방법에 대한 자세한 내용은 코드 패키징을 참고하십시오.
이 프로세스를 자동화하는 방법에 대한 자세한 내용은 로컬 배포 자동화를 확인하시기 바랍니다.
아래 단계를 따라 어셈블리를 생성하도록 IDE를 구성합니다.
JetBrains Rider
아래 단계를 따라 JetBrains Rider IDE를 사용하여 어셈블리를 생성합니다.
- Run > Edit Configurations를 선택합니다.
- **+**를 선택합니다.
- Publish to folder를 선택합니다.
- 구성의 이름을 지정합니다.
- Target location을 빌드 출력을 저장할 위치로 설정합니다.
- Release | Any CPU 구성을 선택합니다.
- linux-x64 타겟 런타임을 선택합니다.
- (선택 사항) Enable ReadyToRun compilation을 활성화합니다.
- Apply를 선택합니다.
Microsoft Visual Studio
아래 단계를 따라 Microsoft Visual Studio IDE를 사용하여 어셈블리를 생성합니다.
- 솔루션을 오른쪽 클릭한 다음 Publish를 선택합니다.
- 화면에 표시된 단계에 따라 파일을 로컬에 저장합니다.
- Show All Settings를 선택합니다.
- 타겟 런타임을 linux-x64로 설정합니다.
- Save를 선택합니다.
- Publish를 선택합니다.
어셈블리 압축
기본적으로 퍼블리시 프로세스를 통해 루트 프로젝트 디렉토리의 bin/Release/net6.0/linux-x64/publish
경로 아래에 폴더가 생성됩니다. 이 폴더의 내용을 아카이브로 압축해야 합니다. UGS CLI를 사용하여 모듈을 배포하려는 경우에는 아카이브의 확장자를 .ccm으로 변경하는 것이 좋습니다.
참고: Windows의 파일 탐색기를 사용하는 경우 아카이브 확장자를 .ccm으로 변경하려면 일반 파일 이름 확장자를 활성화(영문)해야 합니다.
Unix 시스템에서는 다음 커맨드를 실행합니다.
zip ExampleModule.ccm *
Windows 시스템에서는 다음 커맨드를 실행합니다.
zip -r ExampleModule.ccm path/to/your/project/bin/Release/net6.0/linux-x64/publish/*
모듈 프로젝트 배포
모듈 엔드포인트에서 게임 클라이언트에 액세스할 수 있도록 하려면 Cloud Code 서비스에 아카이브를 배포해야 합니다.
모듈 배포에 대해 자세히 알아보려면 모듈 작성을 참고하십시오.
UGS CLI를 사용하여 배포하려면 아카이브 파일 확장자를 .ccm으로 변경해야 합니다.
UGS CLI 구성
다음 단계를 따라 UGS CLI를 시작합니다.
다음과 같이 프로젝트 ID와 환경을 구성합니다.
ugs config set project-id <your-project-id>
ugs config set environment-name <your-environment-name>
Cloud Code와 환경 관리에 필요한 역할을 사용하여 서비스 계정을 구성합니다. 인증 받기를 참고하십시오.
모듈 배포
다음 커맨드를 실행합니다.
ugs deploy <path-to-ccm-file>
배포에 성공하면 다음과 같은 출력이 반환됩니다.
Deployed:
ExampleModule.ccm
게임에서 모듈 함수 호출
모듈을 배포하고 나면 게임 클라이언트에서 모듈 함수를 호출할 수 있습니다.
필수 조건
Unity 에디터에서 Cloud Code를 사용하려면 먼저 Cloud Code SDK를 설치하고 Unity Gaming Services 프로젝트를 Unity 에디터에 연결해야 합니다.
프로젝트 연결
Unity Gaming Services 프로젝트를 Unity 에디터에 연결합니다. Unity Dashboard에서 UGS 프로젝트 ID를 확인할 수 있습니다.
Unity 에디터에서 Edit > Project Settings > Services를 선택합니다.
프로젝트를 연결합니다.
프로젝트에 Unity 프로젝트 ID가 없는 경우 다음 단계를 진행합니다.- Create a Unity Project ID > Organizations를 선택한 다음 드롭다운에서 조직을 선택합니다.
- Create project ID를 선택합니다.
기존 Unity 프로젝트 ID가 있는 경우 다음 단계를 진행합니다.- Use an existing Unity project ID를 선택합니다.
- 드롭다운에서 조직과 프로젝트를 선택합니다.
- Link project ID를 선택합니다.
Unity 프로젝트 ID가 표시되고 이제 프로젝트가 Unity 서비스에 연결됩니다. UnityEditor.CloudProjectSettings.projectId
를 사용하여 Unity 에디터 스크립트에서 프로젝트 ID에 액세스할 수도 있습니다.
SDK 설치
다음 단계를 따라 Unity 에디터용 최신 Cloud Code 패키지를 설치합니다.
- Unity 에디터에서 Window > Package Manager를 엽니다.
- 패키지 관리자에서 Unity Registry 목록 뷰를 선택합니다.
com.unity.services.cloudcode
를 검색하거나 목록에서 Cloud Code 패키지를 찾습니다.- 패키지를 선택하고 Install을 클릭합니다.
참고: Unity 패키지 관리자 인터페이스를 익히려면 Package Manager 창(Unity 매뉴얼)을 참고하십시오.
SDK 설정
다음 단계를 따라 Cloud Code SDK를 시작합니다.
- Cloud Code 서비스 대시보드 페이지를 통해 서비스를 활성화합니다.
- Cloud Code와 Authentication SDK를 모두 설치합니다.
- Edit > Project Settings > Services를 선택하여 Unity 에디터 내에서 클라우드 프로젝트에 로그인합니다.
- Unity 에디터에서 새 C# Monobehaviour 스크립트를 생성합니다. Unity 매뉴얼의 스크립트 생성 및 사용을 참고하십시오.
- 스크립트에서 await
UnityServices.InitializeAsync()
를 사용하여 Core SDK를 초기화합니다. - 스크립트에서 Authentication SDK를 초기화합니다.
참고: Cloud Code 서비스에 액세스하려면 플레이어에게 유효한 플레이어 ID와 액세스 토큰이 있어야 합니다. Cloud Code API를 사용하려면 먼저 Authentication SDK로 플레이어를 인증해야 합니다. 다음 코드 스니핏을 사용하여 익명으로 인증하거나 Authentication SDK 기술 자료에서 자세한 내용과 기타 로그인 방법을 확인할 수 있습니다.
C#
await AuthenticationService.Instance.SignInAnonymouslyAsync();
모듈 함수 호출
게임 클라이언트에서 모듈 함수를 호출하려면 호출을 인증하고 Services Core SDK를 초기화한 다음 서비스 기능을 호출하고 모듈 함수를 호출해야 합니다.
게임 클라이언트를 사용하여 모듈을 호출하는 방법에 대한 자세한 내용은 Unity Runtime에서 모듈 실행을 참고하십시오.
아래 단계를 따라 모듈 함수를 호출합니다.
- Services Core SDK를 초기화합니다. Cloud Code를 호출하기 전에 Services Core 네임스페이스(
Unity.Services.Core
)를 임포트하여 게임 코드에서 Unity 서비스를 초기화한 다음InitializeAsync
메서드를 호출합니다. - 호출을 인증합니다. Cloud Code 서비스에 액세스하려면 Cloud Code에 대한 각 호출을 인증해야 하며 플레이어에게 유효한 플레이어 ID와 액세스 토큰이 있어야 합니다. 인증을 참고하십시오.
SignInAnonymouslyAsync
메서드를 호출하여 익명 인증으로 시작하는 것이 좋습니다. - 모듈 함수를 호출합니다. Cloud Code SDK를 통해
CallEndpointModuleAsync
메서드를 사용하여 모듈 함수를 호출합니다.
참고: CallEndpointModuleAsync
함수는 Cloud Code SDK 버전 2.3.0 이상에서 사용할 수 있습니다.
연동 샘플
다음은 게임 클라이언트 내에 있는 ExampleModule
모듈에서 SayHello
모듈 함수를 호출하는 방법의 예시입니다.
C#
using System.Collections.Generic;
using Unity.Services.Authentication;
using Unity.Services.CloudCode;
using Unity.Services.Core;
using UnityEngine;
public class TestModule : MonoBehaviour
{
private async void Start()
{
// Initialize the Unity Services Core SDK
await UnityServices.InitializeAsync();
// Authenticate by logging into an anonymous account
await AuthenticationService.Instance.SignInAnonymouslyAsync();
try
{
// Call the function within the module and provide the parameters we defined in there
string result = await CloudCodeService.Instance.CallModuleEndpointAsync("ExampleModule", "SayHello", new Dictionary<string, object> {{"name", "World"}});
Debug.Log(result);
}
catch (CloudCodeException exception)
{
Debug.LogException(exception);
}
}
}
중요: 모듈 함수를 처음 호출하면 응답을 시작하기까지 시간이 다소 걸릴 수 있습니다. 타임아웃을 수신하면 콘솔에 Hello, World!
가 출력될 때까지 코드를 다시 실행하십시오.
다음 단계
첫 번째 모듈 배포 이후의 단계를 살펴보십시오.
주제 | 설명 |
---|---|
모듈 구조 | 모듈 구조에 익숙해집니다. |
모듈 코드 초기화 | 모듈에서 DTO와 종속성 삽입을 사용하는 방법을 알아봅니다. |
로컬 배포 자동화 | 빌드 타겟으로 로컬 배포를 자동화합니다. |
CI/CD와 연동 | 모듈을 CI/CD 파이프라인과 연동합니다. |
다른 Unity 서비스와 연동 | 모듈을 다른 Unity Gaming Services와 연동합니다. |
코드 패키징 | 모듈용 어셈블리를 생성하는 방법을 알아봅니다. |
유닛 테스트 작성 | 모듈용 유닛 테스트를 작성합니다. |
푸시 메시지 전송 | 모듈을 사용하여 플레이어에게 메시지를 보냅니다. |