로비 만들기

플레이어가 새 로비를 만드는 경우 create 호출을 사용하여 다음 프로퍼티를 설정할 수 있습니다.

  • Lobby name(필수)
  • Lobby visibility(공개 또는 비공개)
  • Lobby size(최대 수용 인원)
    • 코드에서는 최대 플레이어 수라고 합니다.
  • Password
    • 로비에 참여하려면 8~64자로 구성된 비밀번호를 사용해야 합니다.
  • Initial custom lobby data
    • 모든 임의의 데이터가 여기에 해당할 수 있습니다. 그 예로 맵 ID와 게임 모드가 있습니다.
    • 문자열 또는 숫자 값 포함 로비 데이터는 인덱싱할 수 있으며, 쿼리에서 해당 인덱스에 따라 필터링 및 정렬할 수 있습니다.
  • Initial (host) player data
    • 플레이어 표시 이름, 기술, 캐릭터를 예로 들 수 있습니다.

참고: 플레이어가 로비를 만드는 경우 그 플레이어는 자동으로 호스트가 됩니다.

공개 로비 만들기

공개 로비는 로비 코드 없이도 참여할 수 있으며, 누구나 참여할 수 있도록 쿼리 결과에 표시됩니다.

다음 코드 샘플은 공개 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = false;

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

비공개 로비 만들기

비공개 로비는 쿼리 결과에 절대 표시되지 않으며, 신규 플레이어에게 수동으로 로비 코드 또는 ID를 제공해야 합니다.

다음 코드 샘플은 비공개 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = true;

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

인덱싱되지 않은 표준 데이터로 로비 만들기

로비 데이터는 후속 업데이트 요청뿐 아니라 생성 요청에도 포함될 수 있습니다.

다음 코드 샘플은 인덱싱되지 않은 표준 데이터로 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "ExamplePublicLobbyData", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "ExamplePublicLobbyData")
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

인덱싱된 문자열 데이터로 로비 만들기

다음 코드 샘플은 인덱싱된 문자열 데이터로 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "GameMode", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "Conquest",
            index: DataObject.IndexOptions.S1)
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

인덱싱된 숫자 데이터로 로비 만들기

다음 코드 샘플은 인덱싱된 숫자 데이터로 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "MinimumSkillLevel", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "25",
            index: DataObject.IndexOptions.N1)
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

호스트용 플레이어 데이터로 로비 만들기

로비 데이터와 마찬가지로 호스트용 플레이어 데이터 역시 별도의 업데이트 요청으로 추가하는 대신 생성 요청에 포함될 수 있습니다.

다음 코드 샘플은 호스트용 플레이어 데이터로 로비를 만드는 방법을 보여 줍니다.

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
// Ensure you sign-in before calling Authentication Instance.
// See IAuthenticationService interface.
options.Player = new Player(
    id: AuthenticationService.Instance.PlayerId,
    data: new Dictionary<string, PlayerDataObject>()
    {
        {
            "ExampleMemberPlayerData", new PlayerDataObject(
                visibility: PlayerDataObject.VisibilityOptions.Member, // Visible only to members of the lobby.
                value: "ExampleMemberPlayerData")
        }
    });

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

활성 로비 및 비활성 로비

로비가 30초 이내에 업데이트되지 않거나 하트비트 요청을 전송하지 않은 경우 비활성으로 표시됩니다. 사용자는 이 제한 시간을 설정할 수 있습니다. 비활성 공개 로비는 쿼리 결과에 표시되지 않으며, 공개 비활성 로비와 비공개 비활성 로비 모두 자동으로 삭제됩니다. 비활성 로비를 업데이트하거나 하트비트 요청을 전송하면 다시 활성화할 수 있습니다.

30초마다 하트비트 요청 5개로 속도 제한이 적용되므로 사용자는 한 번에 로비 5개를 호스팅할 수 있습니다. 자세한 내용은 로비 하트비트를 참고하십시오.