새 방 만들기

새 방 만드는 방법 중에서 제일 간단한 것은 StrixNetwork 싱글톤에서 CreateRoom 메서드를 호출하는 것입니다.

void CreateRoom(RoomProperties roomProperties, RoomMemberProperties memberProperties, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
void CreateRoom(IDictionary<string, object> roomProperties, string playerName, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
void CreateRoom(IDictionary<string, object> roomProperties, IDictionary<string, object> memberProperties, RoomCreateEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)

참고

CreateRoom 메서드에는 방이 만들어질 서버를 표시하는 인수가 없지만 미리 방 서버를 찾아서 연결해 둘 필요는 없습니다. 방 서버가 복수라면 Strix가 알맞은 서버를 선택해 주기 때문입니다.

속성 요건

방 속성과 멤버 속성이 모두 다 필요한 함수들입니다.

방 속성은 그 방의 최초 속성입니다. 여기서 커스텀 값을 지정하여 게임 컨텍스트에 따라 방을 정의할 수 있습니다. 방을 만들면 현재 플레이어가 자동으로 연결되기 때문에 멤버 속성이 필요합니다.

필수 멤버 속성

이름

타입

설명

name

String

방 멤버의 이름

필수 방 속성

이름

타입

설명

capacity

int

방에 들어갈 수 있는 플레이어의 수

name

String

방의 이름

참고

필수 속성을 어느 하나, 또는 모두 다 누락해도 방 만들기는 기본 값을 이용하여 가능합니다. 그러나 기본값은 게임에 적합하지 않을 수 있으며, 그렇게 만들어지는 방은 원하는 대로 작동하지 않을 수 있습니다. 위 속성은 모두 다 지정해 주시기 바랍니다.

참고

딕셔너리 스트링 키의 이름에 유의해 주십시오. 방과 방 멤버 정보 가져오기 페이지의 표에 나와 있는 속성의 이름과 일치해야 합니다. 속성 이름에서는 대소문자 구별이 중요합니다.

참고

Strix Unity SDK에서는 현재 동시에 여러 방에 입장할 수 없으므로, 다른 방에 입장해 있는 동안 새 방을 만들면 지금 있던 방에서 나오게 됩니다. 방에 남아 있는 멤버가 없다면 방이 사라질 수 있습니다.

코드 예시

using SoftGear.Strix.Client.Core.Model.Manager.Filter;
using SoftGear.Strix.Client.Core.Model.Manager.Filter.Builder;
using SoftGear.Strix.Unity.Runtime;
using System.Collections.Generic;
using UnityEngine;

public class StrixCreateRoomExample : MonoBehaviour
{
    void Start()
    {
        var strixNetwork = StrixNetwork.instance;

        // 플레이스홀더 값. 이것을 애플리케이션 ID로 변경
        // Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
        strixNetwork.applicationId = "00000000-0000-0000-0000-000000000000";

        // 먼저 마스터 서버로 연결
        strixNetwork.ConnectMasterServer(
            // 플레이스홀더 값. 이것을 실제 마스터 호스트 이름으로 변경.
            // Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
            host: "000000000000000000000000.game.strixcloud.net",
            connectEventHandler: _ => {
                Debug.Log("Connection established.");

                // 마스터 서버에 연결한 후에는 방 만들기 가능
                strixNetwork.CreateRoom(
                    new RoomProperties {
                        name = "Fire Tournament",
                        password = "66e3f2nk",                                              // 이 방에는 비밀번호가 걸려 있어 비밀번호가 없는 클라이언트는 입장 불가
                        capacity = 20,                                                      // 방이 수용할 수 있는 클라이언트 최대수
                        key1 = 4.0,                                                         // key1으로 이 매치에서 이용 가능한 NPC의 난이도를 정의
                        properties = new Dictionary<string, object> { {                     // 커스텀 속성으로 방에 대한 설명을 부가
                            "description", "The first major tournament of the new season."  // 이 설명은 방 검색 시 표시 가능
                        } }
                    },
                    new RoomMemberProperties {
                        name = "Braille"                                                           // 이것이 플레이어 이름이 됨
                    },
                    handler: __ => {
                        Debug.Log("Room created.");

                        // 이제 방이 만들어졌으니 SearchRoom 메서드로 찾을 수 있는지 확인해 봅시다
                        strixNetwork.SearchRoom(
                            condition: ConditionBuilder.Builder().Field("key1").GreaterThan(2.0).Build(),  // 난이도가 2보다 큰 방 검색
                            order: new Order("memberCount", OrderType.Ascending),                          // 첫 번째 방에 사람이 제일 적도록 정렬
                            limit: 10,                                                                     // 결과는 10개뿐
                            offset: 0,                                                                     // 맨 처음 있는 것부터 시작
                            handler: searchResults => {
                                var foundRooms = searchResults.roomInfoCollection;
                                Debug.Log(foundRooms.Count + " rooms found.");

                                // 검색이 끝나면 발견된 방 전체에 관한 정보를 인쇄
                                foreach (var roomInfo in foundRooms)
                                    Debug.Log("Room ID: " + roomInfo.id
                                        + "\nHost: " + roomInfo.host
                                        + "\nMember count: " + roomInfo.memberCount
                                        + "\nCapacity: " + roomInfo.capacity
                                        + "\nDifficulty: " + roomInfo.key1
                                        + "\nDescription: " + (roomInfo.properties != null && roomInfo.properties.ContainsKey("description") ? roomInfo.properties["description"] : "None")
                                    );
                            },
                            failureHandler: searchError => Debug.LogError("Search failed. Reason: " + searchError.cause)
                        );
                    },
                    failureHandler: createRoomError => Debug.LogError("Could not create room. Reason: " + createRoomError.cause)
                );
            },
            errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
        );
    }
}

참고

applicationIdhost의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.