멀티플레이
ZEPETO 멀티플레이는 여러 사용자가 동시에 월드에 연결하고 플레이할 수 있는 모듈입니다.
서버/클라이언트 개발 및 로컬 테스트 환경을 제공합니다.
📘 공식 멀티플레이 월드 샘플
왼쪽 상단의 [프로젝트] 패널에서 [+] 메뉴를 선택한 후 ZEPETO → 멀티플레이 서버를 선택하거나 자산 → 생성 → ZEPETO → 멀티플레이 서버로 이동합니다.
World.multiplay 패키지는 다음 항목으로 구성되며, 월드가 게시될 때 자동으로 업데이트됩니다.
- index.ts: 서버 주요 로직 코드
- schemas: 서버/클라이언트 통신을 위한 데이터 구조
❗️ 주의
게임당 하나의 World.multiplay 패키지만 생성할 수 있습니다.
아래 이미지에 표시된 [Open World Settings]를 클릭하여 월드 설정을 합니다.
속성 | 설명 |
---|---|
버전 | 등록할 파일의 버전을 입력하세요. |
최대 클라이언트 수 | 방에 접근할 수 있는 최대 인원 수를 설정합니다. |
방향 | 화면의 방향을 선택하세요. |
초대 비활성화 | 방 초대 기능을 비활성화합니다. |
방 목록 비활성화 | 방 목록을 확인할 수 있는 기능을 비활성화합니다. |
비공식 방 비활성화 | 비공식 방을 생성할 수 있는 기능을 비활성화합니다. |
👍 초대 비활성화
방 초대 기능이 꺼져 있어도 테스트 링크를 통해 초대를 보낼 수 있습니다.
ZEPETO 멀티플레이는 제작자가 개발 중 서버/클라이언트를 테스트할 수 있는 로컬 서버 환경을 제공합니다.
로컬 서버 작업을 확인하려면 Unity 상단 메뉴 → 창 → ZEPETO → 멀티플레이 서버를 선택하여 서버 상태 창을 엽니다.
편집기 화면 중앙의 [▶︎(재생)] 버튼 옆에 있는 서버 버튼을 클릭합니다.
서버 상태 창에서 다음 서버 로그를 볼 수 있습니다.
ZepetoWorldMultiplay 구성 요소는 클라이언트 측에서 사용되는 멀티플레이 관리자 클래스입니다.
계층 창에서 GameObject를 생성하고 ZepetoWorldMultiplay 구성 요소를 추가합니다. ZepetoWorldMultiplay 구성 요소는 멀티플레이 패키지에 자동으로 연결됩니다.
편집기 화면 중앙에 있는 [▶︎(재생)] 버튼을 클릭하여 서버 로그 창에서 클라이언트 연결 로그를 확인하세요.
개발 서버는 localhost(127.0.0.1)에서 실행되며, 포트는 프로젝트가 처음 로드될 때 설정됩니다.
다중 프로젝트를 통해 연결할 때, 연결 환경을 다음과 같이 설정하세요.
📘 다음 가이드를 참조하세요 Multiplay IP 주소에 접속하기
👍 월드가 배포된 후, ZEPETO 서버에서 실행됩니다.
서버 로직 구현
World.multiplay 패키지의 index.ts 파일은 서버의 주요 로직을 담당하는 코드입니다.
index.ts 파일을 열고, onCreate() 이벤트에서 메시지 유형 echo를 수신한 후 클라이언트에 전달되는 로직을 추가하세요.
📘 다음 가이드를 참조하세요 [Zepeto.Multiplay(서버) API]
클라이언트 로직 구현
서버 이벤트를 전송/수신하는 데 사용되는 ZepetoWorldMultiplay GameObject에 ZEPETO 스크립트를 추가하십시오:
📘 다음 가이드를 참조하십시오 Multiplay Room Message
편집기 화면 중앙의 [▶︎(재생)]을 클릭하여 서버/클라이언트를 실행하십시오. 아래와 같이 '에코' 유형 메시지의 예를 볼 수 있어야 합니다:
① 클라이언트 메시지가 서버에 수신될 때의 출력 로그입니다.
② 클라이언트에서 서버로부터 수신된 메시지의 로그입니다.
❗️ 주의
[서버 코드 내 변수 사용]
- 변수는 서버 코드 내에서도 선언할 수 있습니다.
- 그러나 서버에서 사용할 수 있는 캐시 메모리는 현재 512KB로 제한되어 있습니다. (이것은 나중에 변경될 수 있습니다.)
- 512KB를 초과하면 방이 숨겨질 수 있으므로 이를 염두에 두고 개발해 주시기 바랍니다.
[서버 코드 내 루프 사용]
- 서버 코드에서 루프 시간 제한은 2초(2000ms)로 설정되어 있습니다.
- 블로킹 코드나 장시간 실행되는 루프를 사용하면 루프 시간 제한으로 인해 프로그램이 올바르게 실행되지 않을 수 있으므로 개발 시 이를 고려해 주시기 바랍니다.