구성과 선택 방법
relay·sync·stateMachine의 차이, 선택 방법, 개발 흐름
GS2-Realtime에는 룸의 서버가 무엇을 하는지에 따라 3가지 서버 타입이 있습니다. 이 페이지에서는 어떤 것을 선택할지, 그리고 선택한 후에 무엇을 만드는지를 설명합니다.
서버 타입
serverType | 서버가 하는 일 | 게임 측에서 만드는 것 | 적합한 게임 |
|---|---|---|---|
relay | 메시지를 지정한 플레이어나 전원에게 중계한다 | 메시지 형식과 수신 후의 처리 | 독자적인 통신을 자유롭게 설계하고 싶다 |
sync | 오브젝트의 상태를 전원에게 배포하고, 누가 변경할 수 있는지를 관리한다 | 표시용 Prefab과 조작 처리 | 위치나 상태를 공유하고 싶다 |
stateMachine | sync의 기능에 더해, 등록한 룰로 오브젝트를 생성·갱신한다 | sync의 내용에 더해, C#으로 작성하는 룰 | 적의 행동이나 HP, 배틀 진행을 서버에서 결정하고 싶다 |
stateMachine에서는 HP 계산이나 공격 가능 여부를 서버가 결정하므로, 클라이언트를 개조해도 결과를 변경할 수 없습니다. 여러 플레이어가 동시에 조작하더라도 서버가 순서대로 처리하므로, 전원에게 같은 결과가 표시됩니다.
선택 방법
Realtime 네임스페이스 설정의 serverType에서 선택합니다.
- 독자적인 메시지를 참가자에게 전달하기만 하면 된다면
relay를 선택합니다. - 오브젝트의 위치나 상태를 공유하고 싶다면
sync를 선택합니다. - 그에 더해 적의 행동이나 게임 진행을 서버에서 관리하고 싶다면
stateMachine을 선택합니다.
relay의 사용 방법은 GS2-Realtime 소개를 참조해 주세요.
stateMachine 개발 흐름
| 순서 | 만드는 것 | 설명 페이지 |
|---|---|---|
| 1. 룰을 작성한다 | 적의 생성, 조작 검증, 시간 경과 처리를 작성한 C# | 룸 정의 레퍼런스 |
| 2. 생성한다 | 룰(GSL)과 Unity용 동기화 스키마 | 생성과 등록 |
| 3. 등록한다 | GS2-StateMachine에 등록과 Realtime 네임스페이스 설정 | 생성과 등록 |
| 4. Unity에서 표시한다 | Prefab, NetworkWorld, 접속 처리 | Unity 클라이언트 |
C#으로 작성한 룰은 GSL로 변환되어 룸 안에서 실행됩니다. C# 코드가 그대로 서버에서 동작하는 것은 아니므로, 사용할 수 있는 C#의 범위에는 제약이 있습니다.
페이지 안내
| 하고 싶은 것 | 페이지 |
|---|---|
| 우선 전체를 한 번 동작시켜 보고 싶다 | 튜토리얼: 서버에서 HP를 관리하는 적 만들기 |
| Unity에서의 설정이나 API를 알아보고 싶다 | Unity 클라이언트 |
| 룰 작성 방법이나 상한값을 알아보고 싶다 | 룸 정의 레퍼런스 |
| C# 기술 형식(상태, Step, 사용할 수 있는 구문)을 알아보고 싶다 | C# 정의 레퍼런스 |
| Photon(PUN2)에서 이전하고 싶다 | Photon에서의 이전 가이드 |