Bot 플레이어 생성 가이드
봇 플레이어는 멀티플레이어 월드를 시작할 충분한 사람이 없거나, 플레이어가 월드 중에 나갈 때 채우기 위해 사용됩니다.
봇 플레이어의 행동 방식은 각 콘텐츠에 맞게 구현되어야 합니다.
이 가이드는 봇 플레이어를 만드는 일반적인 방법을 설명합니다.
📘 봇 플레이어 생성 가이드는 멀티플레이어 가이드를 기반으로 합니다. [멀티플레이 제작하기]
1-1. 멀티플레이어 스키마에 IsBot이라는 불리언 값을 추가합니다.
1-2. 아래의 함수를 정의하여 서버 스크립트 index.ts에서 봇 플레이어를 생성하고 원하는 지점에서 호출합니다.
👍 팁
- 특정 사용자의 userId는 봇 플레이어 캐릭터가 생성되기 위해 미리 저장됩니다.
- 서버의 OnJoin에 연결된 클라이언트의 userId를 확인하여 특정 사용자의 UserId를 확인할 수 있습니다. 아래 스크립트를 서버 스크립트에 작성한 후 관련 월드에서 연결하세요.
2-1. 서버에서 특정 시점에 봇 플레이어를 생성하면 클라이언트는 이를 OnJoinPlayer()에서 새로운 플레이어로 인식합니다.
- 프로젝트 만들기 > 생성 > ZEPETO > TypeScript로 이름을 BotPlayerManager로 변경합니다.
- OnAddedPlayer()에서 각 플레이어를 생성하는 로직을 추가하고, 봇 플레이어를 구분하고 그들의 ZEPETO 캐릭터를 생성하는 로직을 추가합니다.
2-2. SetBotPlayer 함수를 작성하여 봇 플레이어에 태그와 동기화 구성 요소를 추가하고 이를 제어하는 스크립트를 생성합니다.
- 봇 플레이어 데이터를 관리하기 위해 Map 형식으로 _botMapData를 설정하여 저장합니다.
👍 팁 SetBotPlayer()에 추가 스크립트나 설정을 추가하여 봇 플레이어의 행동을 제어할 수 있습니다.
시작하기 위해 특정 수의 플레이어가 필요한 월드의 경우, 때때로 플레이어가 충분하지 않아 월드가 시작되기까지 오랜 시간을 기다려야 합니다.
이 경우, Bot 플레이어를 추가하여 월드를 시작할 수 있습니다.
3-1. index.ts에서 서버가 클라이언트로부터 메시지를 받을 때 CreateBot()을 실행하도록 함수를 등록합니다.
3-2. 클라이언트 스크립트 BotPlayerManager.ts에서 서버에 "CreateBot" 메시지를 보내는 함수를 작성합니다.
- 함수를 실행하는 방법은 버튼을 눌러 메시지를 보내는 것입니다.
- 생성할 Bot 플레이어의 사용자 ID를 문자열로 메시지를 통해 보냅니다.
3-3. 이제 서버와 런타임을 실행하면 버튼을 누를 때 봇 플레이어가 생성되는 것을 볼 수 있습니다.
월드 시작에 필요한 플레이어가 부족할 때, 봇 플레이어를 추가하여 월드를 시작할 수 있습니다.
4-1. 서버 스크립트에서 OnJoin 중에 다음 코드를 추가하여 플레이어 수를 확인하고 최소 네 명의 플레이어가 있을 때 월드를 시작합니다.
- CreateBot()에서 플레이어 수를 확인하는 함수를 추가합니다.
- StartWorld() 함수에서 플레이 수를 카운트하는 변수를 추가합니다.
- 서버에서 실제 플레이어가 방에 들어오면 OnJoin이 실행됩니다. 따라서 CreateBot을 통해 봇 플레이어가 생성되고 플레이어가 OnJoin을 통해 들어올 때 checkPlayerNumber()는 인원 수를 추가합니다.
4-2. 클라이언트 스크립트인 BotPlayerManager.ts에서 서버로부터 StartWorld 메시지를 수신할 때 실행되는 StartWorld()를 작성합니다.
4-3. 실행 중에 봇 플레이어를 포함하여 4명 이상의 플레이어가 있을 경우, 서버 콘솔과 클라이언트 콘솔에 'World Start'라는 로그가 표시됩니다.
아래는 추가된 봇 플레이어를 로컬 플레이어 위치로 이동시키고 이동 위치를 동기화하는 샘플 코드입니다.
5-1. 먼저, 서버의 index.ts에서 클라이언트로부터 메시지 MoveBot을 수신할 때 봇 플레이어를 이동시키는 코드를 작성합니다.
5-2. 클라이언트 스크립트인 BotPlayerManager.ts에서 buttonCallBot이 눌릴 때 로컬 플레이어 위치를 서버로 전송하는 SendBotPosition()을 작성합니다.
- 그런 다음 서버에서 MoveBotToPosition 메시지를 수신할 때 모든 봇 플레이어를 메시지에 포함된 위치 정보로 이동시키는 코드를 작성하십시오.
5-3. 이제 런타임에 봇 플레이어를 생성하고 buttonCallBot 버튼을 누르면 생성된 봇 플레이어가 로컬 플레이어 캐릭터 위치로 이동하는 것을 볼 수 있습니다.