새 방 만들기¶
새 방 만드는 방법 중에서 제일 간단한 것은 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)
);
}
}
참고
applicationId
와 host
의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.