CREATE YOUR WORLD
Players & Characters : Advance...

Bot 플레이어 생성 가이드

16min

봇 플레이어는 멀티플레이어 월드를 시작할 충분한 사람이 없거나, 플레이어가 월드 중에 나갈 때 채우기 위해 사용됩니다.

봇 플레이어의 행동 방식은 각 콘텐츠에 맞게 구현되어야 합니다.

이 가이드는 봇 플레이어를 만드는 일반적인 방법을 설명합니다.

📘 봇 플레이어 생성 가이드는 멀티플레이어 가이드를 기반으로 합니다. [멀티플레이 제작하기]

1단계: 봇 플레이어 만들기

1-1. 멀티플레이어 스키마에 IsBot이라는 불리언 값을 추가합니다.

Document image




1-2. 아래의 함수를 정의하여 서버 스크립트 index.ts에서 봇 플레이어를 생성하고 원하는 지점에서 호출합니다.

index.ts




👍

  • 특정 사용자의 userId는 봇 플레이어 캐릭터가 생성되기 위해 미리 저장됩니다.
  • 서버의 OnJoin에 연결된 클라이언트의 userId를 확인하여 특정 사용자의 UserId를 확인할 수 있습니다. 아래 스크립트를 서버 스크립트에 작성한 후 관련 월드에서 연결하세요.
index.ts




단계 2: 클라이언트에서 봇 플레이어 만들기

2-1. 서버에서 특정 시점에 봇 플레이어를 생성하면 클라이언트는 이를 OnJoinPlayer()에서 새로운 플레이어로 인식합니다.

  • 프로젝트 만들기 > 생성 > ZEPETO > TypeScript로 이름을 BotPlayerManager로 변경합니다.
  • OnAddedPlayer()에서 각 플레이어를 생성하는 로직을 추가하고, 봇 플레이어를 구분하고 그들의 ZEPETO 캐릭터를 생성하는 로직을 추가합니다.
BotPlayerManager.ts




2-2. SetBotPlayer 함수를 작성하여 봇 플레이어에 태그와 동기화 구성 요소를 추가하고 이를 제어하는 스크립트를 생성합니다.

  • 봇 플레이어 데이터를 관리하기 위해 Map 형식으로 _botMapData를 설정하여 저장합니다.
BotPlayerManager.ts




👍 팁 SetBotPlayer()에 추가 스크립트나 설정을 추가하여 봇 플레이어의 행동을 제어할 수 있습니다.



3단계: 클라이언트에 봇 플레이어 버튼 생성

시작하기 위해 특정 수의 플레이어가 필요한 월드의 경우, 때때로 플레이어가 충분하지 않아 월드가 시작되기까지 오랜 시간을 기다려야 합니다.

이 경우, Bot 플레이어를 추가하여 월드를 시작할 수 있습니다.

3-1. index.ts에서 서버가 클라이언트로부터 메시지를 받을 때 CreateBot()을 실행하도록 함수를 등록합니다.

TypeScript




3-2. 클라이언트 스크립트 BotPlayerManager.ts에서 서버에 "CreateBot" 메시지를 보내는 함수를 작성합니다.

  • 함수를 실행하는 방법은 버튼을 눌러 메시지를 보내는 것입니다.
  • 생성할 Bot 플레이어의 사용자 ID를 문자열로 메시지를 통해 보냅니다.
BotPlayerManager.ts




3-3. 이제 서버와 런타임을 실행하면 버튼을 누를 때 봇 플레이어가 생성되는 것을 볼 수 있습니다.

Document image




4단계: 봇 플레이어 추가로 월드 시작하기

월드 시작에 필요한 플레이어가 부족할 때, 봇 플레이어를 추가하여 월드를 시작할 수 있습니다.

4-1. 서버 스크립트에서 OnJoin 중에 다음 코드를 추가하여 플레이어 수를 확인하고 최소 네 명의 플레이어가 있을 때 월드를 시작합니다.

  • CreateBot()에서 플레이어 수를 확인하는 함수를 추가합니다.
  • StartWorld() 함수에서 플레이 수를 카운트하는 변수를 추가합니다.
index.ts




  • 서버에서 실제 플레이어가 방에 들어오면 OnJoin이 실행됩니다. 따라서 CreateBot을 통해 봇 플레이어가 생성되고 플레이어가 OnJoin을 통해 들어올 때 checkPlayerNumber()는 인원 수를 추가합니다.



4-2. 클라이언트 스크립트인 BotPlayerManager.ts에서 서버로부터 StartWorld 메시지를 수신할 때 실행되는 StartWorld()를 작성합니다.

BotPlayerManager.ts




4-3. 실행 중에 봇 플레이어를 포함하여 4명 이상의 플레이어가 있을 경우, 서버 콘솔과 클라이언트 콘솔에 'World Start'라는 로그가 표시됩니다.

Document image




5단계: 봇 플레이어 위치 동기화

아래는 추가된 봇 플레이어를 로컬 플레이어 위치로 이동시키고 이동 위치를 동기화하는 샘플 코드입니다.

5-1. 먼저, 서버의 index.ts에서 클라이언트로부터 메시지 MoveBot을 수신할 때 봇 플레이어를 이동시키는 코드를 작성합니다.

TypeScript




5-2. 클라이언트 스크립트인 BotPlayerManager.ts에서 buttonCallBot이 눌릴 때 로컬 플레이어 위치를 서버로 전송하는 SendBotPosition()을 작성합니다.

  • 그런 다음 서버에서 MoveBotToPosition 메시지를 수신할 때 모든 봇 플레이어를 메시지에 포함된 위치 정보로 이동시키는 코드를 작성하십시오.
BotPlayerManager.ts




5-3. 이제 런타임에 봇 플레이어를 생성하고 buttonCallBot 버튼을 누르면 생성된 봇 플레이어가 로컬 플레이어 캐릭터 위치로 이동하는 것을 볼 수 있습니다.

Document image




BotPlayerManager.ts 전체 코드

BotPlayerManager.ts




index.ts 서버 전체 코드

Text




업데이트됨 11 Oct 2024
Doc contributor
Doc contributor
이 페이지가 도움이 되었습니까?