---
title: ZEPETO.Multiplay
slug: world-sdk-guide-kr/zepetomultiplay
docTags: 
createdAt: 2026-09-04T05:21:10.874Z
---

| 형식                                        | 설명                                             |
| ----------------------------------------- | ---------------------------------------------- |
| [SandboxPlayer](./#sandboxplayer)         | Multiplay Room에 접속한 플레이어의 클라이언트를 나타냅니다.        |
| [IBroadcastOptions](./#ibroadcastoptions) | Multiplay Room에서 클라이언트로 메시지를 브로드캐스트할 때의 옵션입니다. |
| [SandboxOptions](./#sandboxoptions)       | Multiplay Room 생성 시의 옵션입니다.                    |
| [Sandbox](./#sandbox)                     | Multiplay Room을 나타냅니다.                         |

## SandboxPlayer

`interface`

Multiplay Room에 접속한 플레이어의 클라이언트를 나타냅니다.

### 속성

| 이름        | 형식       | 설명           |
| --------- | -------- | ------------ |
| sessionId | `string` | 클라이언트의 세션 ID |
| userId    | `string` | 플레이어의 사용자 ID |

### 메서드

### send

`send(type: string | number, message?: T) → void`

지정한 채널을 통해 클라이언트에 메시지를 보냅니다.

| 매개변수            | 형식                 | 설명                             |
| --------------- | ------------------ | ------------------------------ |
| type            | `string \| number` | 메시지를 보낼 채널의 식별자입니다.            |
| message (선택 사항) | `T`                | message 보낼 메시지의 내용입니다. (선택 사항) |

## IBroadcastOptions

`interface`

Multiplay Room에서 클라이언트로 메시지를 브로드캐스트할 때의 옵션입니다.

### 속성

| 이름     | 형식                                | 설명                         |
| ------ | --------------------------------- | -------------------------- |
| except | [SandboxPlayer](./#sandboxplayer) | 브로드캐스트에서 제외할 클라이언트를 지정합니다. |

## SandboxOptions

`interface`

Multiplay Room 생성 시의 옵션입니다.

### 속성

| 이름        | 형식        | 설명                                                   |
| --------- | --------- | ---------------------------------------------------- |
| isSandbox | `boolean` | Unity 에디터의 QR 모바일 테스트처럼 Room이 로컬에서 호스팅되는지 여부를 지정합니다. |

## Sandbox

`class`

Multiplay Room을 나타냅니다.

### 속성

| 이름                    | 형식                                | 설명                                                           |
| --------------------- | --------------------------------- | ------------------------------------------------------------ |
| locked                | `boolean`                         | Multiplay Room이 잠겨 있는지 여부를 지정합니다.                            |
| roomId                | `string`                          | Multiplay Room의 ID입니다. 중복을 피하기 위해 생성 시 무작위로 할당됩니다.           |
| uniqueId              | `string`                          | Multiplay Room의 ID입니다. 생성 시 명시적으로 할당됩니다.                     |
| maxClients            | `number`                          | Multiplay Room에 접속할 수 있는 클라이언트의 최대 수입니다.                     |
| state                 | `State`                           | Multiplay Room의 상태입니다. 상태 데이터의 스키마는 Multiplay Schema로 정의됩니다. |
| clients               | `IterableIterator<SandboxPlayer>` | Multiplay Room에 접속한 클라이언트를 순회 가능한 형태로 나타낸 값입니다.              |
| allowReconnectionTime | `number`                          | 연결이 불안정한 클라이언트의 재접속을 허용하는 제한 시간(초)입니다.                       |
| private               | `boolean`                         | Multiplay Room이 비공개인지 여부를 지정합니다.                             |

### 메서드

### onCreate

`onCreate(options: SandboxOptions) → void | Promise<void>`

이 추상 메서드의 구현은 Multiplay Room이 생성될 때 한 번만 실행됩니다.
구현은 선택적으로 `async`로 선언할 수 있습니다.

| 매개변수    | 형식                                  | 설명                             |
| ------- | ----------------------------------- | ------------------------------ |
| options | [SandboxOptions](./#sandboxoptions) | 해당 Multiplay Room 생성 시의 옵션입니다. |

**반환값:** `void | Promise<void>` — 비동기인 경우 `Promise<void>`를 반환하고, 그렇지 않으면 `void`를 반환합니다.

### onJoin

`onJoin(client: SandboxPlayer) → void | Promise<void>`

이 추상 메서드의 구현은 클라이언트가 Multiplay Room에 입장할 때 실행됩니다.
구현은 선택적으로 `async`로 선언할 수 있습니다.

| 매개변수   | 형식                                | 설명                 |
| ------ | --------------------------------- | ------------------ |
| client | [SandboxPlayer](./#sandboxplayer) | 플레이어의 클라이언트 객체입니다. |

**반환값:** `void | Promise<void>` — 비동기인 경우 `Promise<void>`를 반환하고, 그렇지 않으면 `void`를 반환합니다.

### onLeave

`onLeave(client: SandboxPlayer, consented?: boolean) → void | Promise<void>`

이 추상 메서드의 구현은 클라이언트가 Multiplay Room에서 퇴장할 때 실행됩니다.
구현은 선택적으로 `async`로 선언할 수 있습니다.

| 매개변수              | 형식                                | 설명                          |
| ----------------- | --------------------------------- | --------------------------- |
| client            | [SandboxPlayer](./#sandboxplayer) | 플레이어의 클라이언트 객체입니다.          |
| consented (선택 사항) | `boolean`                         | 플레이어가 재접속에 동의했는지 여부를 지정합니다. |

**반환값:** `void | Promise<void>` — 비동기인 경우 `Promise<void>`를 반환하고, 그렇지 않으면 `void`를 반환합니다.

### lock

`lock() → Promise<void>`

Multiplay Room을 잠급니다.

**반환값:** `Promise<void>` — 잠금 처리가 완료되면 이행되는 `Promise`입니다.

### unlock

`unlock() → Promise<void>`

Multiplay Room의 잠금을 해제합니다.

**반환값:** `Promise<void>` — 잠금 해제 처리가 완료되면 이행되는 `Promise`입니다.

### onTick

`onTick(deltaTime: number) → void`

이 메서드의 구현은 약 100밀리초마다 실행됩니다.

| 매개변수      | 형식       | 설명                           |
| --------- | -------- | ---------------------------- |
| deltaTime | `number` | 이전 호출로부터의 시간 차이(밀리초)를 나타냅니다. |

### onMessage

`onMessage(messageType: '*' | string | number, callback: (client: SandboxPlayer, message: T) => void) → void`

클라이언트로부터 받은 메시지를 처리할 콜백을 등록합니다.

| 매개변수        | 형식                                            | 설명                      |
| ----------- | --------------------------------------------- | ----------------------- |
| messageType | `'*' \| string \| number`                     | 메시지가 전송된 채널의 식별자입니다.    |
| callback    | `(client: SandboxPlayer, message: T) => void` | 수신한 메시지를 처리할 콜백 메서드입니다. |

### broadcast

`broadcast(type: string | number, message?: any, options?: IBroadcastOptions) → void`

지정한 채널을 통해 Multiplay Room에 접속한 모든 클라이언트에 메시지를 보냅니다.

| 매개변수            | 형식                                        | 설명                  |
| --------------- | ----------------------------------------- | ------------------- |
| type            | `string \| number`                        | 메시지를 보낼 채널의 식별자입니다. |
| message (선택 사항) | `any`                                     | 메시지의 내용입니다. (선택 사항) |
| options (선택 사항) | [IBroadcastOptions](./#ibroadcastoptions) | 브로드캐스트 옵션입니다.       |

### loadPlayer

`loadPlayer(sessionId: string) → SandboxPlayer | undefined`

세션 ID에 연결된 클라이언트 객체를 가져옵니다.

| 매개변수      | 형식       | 설명               |
| --------- | -------- | ---------------- |
| sessionId | `string` | 클라이언트의 세션 ID입니다. |

**반환값:** `SandboxPlayer | undefined` — 클라이언트 객체입니다.

### setPrivate

`setPrivate(isPrivate: boolean) → Promise<void>`

Multiplay Room의 비공개 상태를 설정합니다.

| 매개변수      | 형식        | 설명                             |
| --------- | --------- | ------------------------------ |
| isPrivate | `boolean` | Multiplay Room의 비공개 상태를 지정합니다. |

**반환값:** `Promise<void>` — 처리가 완료되면 이행되는 `Promise`입니다.

### kick

`kick(client: SandboxPlayer, reason?: string) → Promise<void>`

Multiplay Room에서 클라이언트를 강제 퇴장시킵니다.

| 매개변수           | 형식                                | 설명                     |
| -------------- | --------------------------------- | ---------------------- |
| client         | [SandboxPlayer](./#sandboxplayer) | 강제 퇴장시킬 클라이언트의 객체입니다.  |
| reason (선택 사항) | `string`                          | 강제 퇴장 사유를 선택적으로 기술합니다. |

**반환값:** `Promise<void>` — 처리가 완료되면 이행되는 `Promise`입니다.
