Relay서비스와 Lobby를 구현하다 보면 문뜩 Lobby의 요소를 꾸미고 싶을 때가 생깁니다! 예를 들면, 위와 같이 로비를 생성했을 때 방의 이름, 방의 지역, 방의 숫자와 같이 말이죠! 또는, 방테두리 색깔, 방의 Private 정보 등등을 커스터마이징 할 수 있습니다!! 코드 public async Task CreateLobby(string requesterUasId, string lobbyName, int maxPlayers, bool isPrivate, Dictionary hostUserData, string limitToRegion) { var options = LobbyRegionToCreatOptions(limitToRegion); CreateLobbyOptions createOptio..
LobbyEventCallbacks 오류 Lobby Sample을 공부하다보면 위 코드 밑줄친 부분이 에러가 뜨는 경우가 있다! 이럴 때는 Project Settings에 들어가서 Player탭을 누른 후 Other Setting를 클릭 후 내리다 보면 Script Compilation영역이 있는데 여기에 UGS_BETA_LOBBY_EVENTS UGS_LOBBY_EVENTS 두 개를 추가한 후 Apply를 눌러주면 된다!!
플레이어들은 제공받은 Lobby Code 또는 ID를 이용해서 원하는 Lobby에 참여할 수 있습니다 또는, 아무 방이나 빠르게 들어갈 수 있습니 #1. Join by specifying a lobby ID try { await LobbyService.Instance.JoinLobbyByIdAsync("lobbyId"); } catch (LobbyServiceException e) { Debug.Log(e); } #2. Join by providing a lobby code try { await LobbyService.Instance.JoinLobbyByCodeAsync("lobbyCode"); } catch (LobbyServiceException e) { Debug.Log(e); } #3. Quick..
Relay Service와 Lobby Service 둘다 함께 사용할 때, 그 서비스들은 Relay 연결 상태를 로비 구성원과 동기화 하려고 시도합니다 한 마디로, 사용자가 예기치 않게 Relay에서 연결을 끊으면 로비 데이터에서 사용자를 연결이 끊긴 것으로 로비 서비스를 표시합니다 사용자가 릴레이 서비스에 다시 연결할 수 없는 경우 시간이 초과 되면 로비에서 자동으로 제거됩니다 다시 연결할 수 있는 경우 ReconnectToLobby() API를 사용하여 사용자를 연결된 것으로 표시하도록 로비서비스에 요청할 수 있습니다 using System; using UnityEngine; using Unity.Services.Authentication; using Unity.Services.Core; asyn..
#1. Get joined lobbies GetJoinedLobbies API를 이용해서 Lobby를 선택할 수 있습니다 이 API는 현재 활동중인 플레이어가 현재 속한 로비를 위한 로비 ID의 List를 반환해준다! 이 API는 예기치 못한 끊김에 사용될 수 있습니다 예기치 못한 끊김(충돌이나 사용자가 로비에서 연결을 끊는 등)이 발생할 때, 플레이어가 속한 모든 로비 목록을 가져오기 위해 API를 사용할 수 있고, API를 사용하여 전체 로비 세부 정보를 회복(?)하거나 로비에 다시 연결할 수 있습니다! try { var lobbyIds = await LobbyService.Instance.GetJoinedLobbiesAsync(); } catch (LobbyServiceException e) { D..
Lobby error messages Lobby error messages# Lobby servers use ERROR messages to inform you that an error has occurred. The following table describes each field found in the error detail of the error message with an example. You can find the error detail in the Details field of docs.unity.com
#1. Delete a lobby 로비 호스트는 로비를 삭제할 수 있으며 삭제된 대기실은 더이상 참여할 수 없습니다. 삭제된 로비는 쿼리에 표시되지 않으며 삭제된 로비를 대상으로 하는 모든 접근은 실패하게 됩니다 클라이언트는 언제든지 로비에서 제거될 수 있음을 예상해야 합니다 로비가 삭제된다거나, 호스트가 플레이어를 로비에서 강퇴한다거나, 릴레이 연결이 해제 된다거나 등 클라이언트는 특정 로비를 대상으로 하는 모든 API 호출이 실패할 수 있음을 예상하고 그에 맞게 처리해야 합니다 try { await LobbyService.Instance.DeleteLobbyAsync("lobbyId"); } catch (LobbyServiceException e) { Debug.Log(e); } #2. Leave a..
heartbeat 생명주기 유니티 "Lobby 서비스"에서 사용되는 로비는 30초 안에 heartbeat를 보내거나 update되지 않으면 비활성화 됩니다. 비활성화 상태가 되면 유저는 더이상 'Quick Join'으로 참여할 수 없으며, query 결과값으로도 보이지 않게 됩니다.(즉, 로비를 찾지 못한다는 뜻) 비활성화 상태가 되고 1시간이 지나면, 로비는 만료됩니다. 만료된 로비는 새로운 업데이트나 하트비트가 없으면 자동으로 삭제됩니다! 업데이트는 로비 속성을 변경한 경우에만 실행됩니다. 여기에는 호스트의 플레이어 데이터에 대한 변경 사항은 포함되지 않습니다. 예시 코드 async Task CreateLobbyWithHeartbeatAsync() { string lobbyName = "test lo..
[출처]- Unity Documentation 1. Create a lobby / 로비 세팅 새로운 Lobby를 만들 때, 다음과 같은 프로퍼티를 세팅할 수 있다 Lobby name (required) Lobby visibility (public or private) Lobby size (the maximum occupancy) This is referred to as Max Players in the code. Initial custom lobby data This can include any arbitrary data. For example, map IDs and game modes. Lobby data with string or numeric values can be indexed, allowing..
로비 서비스란? public 또는 private Lobby에서 게임이 시작하기 전이나 플레이하는 플레이어들을 연결해주는 서비스입니다 로비 서비스를 사용하기 위해선 SDK를 설치해야 하며 다음 순서를 따르면 됩니다 In Unity, navigate to Window > Package Manager. From the Package Manager, search for com.unity.services.lobby or scroll through the Unity Registry to find the Lobby package. Select the package and click Install. 로비 관리하는 방법은? 로비 만들기 로비 참여하기 lobby 데이터 Update player 데이터 Update Quer..
Local Lobby와 Remote Lobby 차이에 대해 몰랐는데 XREAL 시니어분께서 알려주셨다! LocalLobby는 실제 로비(RemoteLobby)의 정보를 가져와서 로컬에 저장해두는 로비 데이터고 RemoteLobby는 로비 SDK에 request 보냈을 때 실제로 받는 로비 데이터라고 하셨다! Lobby Sdk에서 받아온 Lobby Data를 로컬에 저장해둠으로써 실시간으로 불필요한 통신을 방지하기 위함인 것 같다! 정보가 변하지 않은 상태에선 local lobby 데이터를 사용하고 lobby의 data가 변하면 그 때 remote lobby data를 Lobby SDK에 보내고 Lobby 정보를 갱신하면 되는 것!