Xbox Live 매치메이킹 세션 참여 함수
이 문서는 Xbox Live의 특정 세션에 참여하는 방법에 대해 설명합니다. 이 함수는 세션 핸들을 통해 특정 세션에 참여할 수 있게 해줍니다. 이는 세션 초대에 참여하는 것과 유사하지만, Xbox Live 매치메이킹에 의존하지 않고 자체 서버에서 매치메이킹을 수행할 때 유용합니다.
함수 설명
이 함수는 다음과 같은 인자를 필요로 합니다:
인자 이름 | 타입 | 설명 |
---|---|---|
user_id | User ID 포인터 | 사용자의 ID를 나타냅니다. |
session_handle | 문자열 | 참여할 세션의 "상관 ID"입니다. (위 설명 참조) |
sdatemplate | 문자열 | 사용할 보안 장치 연결 템플릿의 이름입니다. |
반환 값
- 함수가 오류가 발생하면 -1을 반환합니다. 이 경우 콘솔에 문제에 대한 출력이 나타납니다.
- 오류가 없으면 요청 ID 값을 반환합니다. 이 요청 ID 값은 이 함수에 대한 올바른 비동기 이벤트를 식별하는 데 사용됩니다.
비동기 이벤트
세션이 생성되면 다음과 같은 키/값 쌍이 포함된 DS 맵이 async_load
변수에 저장됩니다:
키 | 설명 |
---|---|
requestid | 호출 함수가 반환한 요청 ID를 포함합니다. |
status | "session_player_joined" 문자열을 포함하여 어떤 이벤트가 발생했는지 알려줍니다. |
sessionid | 세션 ID를 포함하거나 실패 시 -1을 포함합니다. |
sessionOwner |
세션 호스트의 ID를 포함합니다. ( |
id | 상수 MATCHMAKING_SESSION 을 포함합니다. |
error | 모든 것이 정상일 경우 0, 실패 시 -1을 포함합니다. |
새로운 플레이어가 세션에 참여하면 DS 맵은 다음과 같은 키/값 쌍을 포함합니다:
키 | 설명 |
---|---|
id | 상수 MATCHMAKING_SESSION 을 포함합니다. |
sessionid | 세션 ID를 포함합니다. |
status | "session_player_joined" 문자열을 포함합니다. |
requestid | 요청을 생성한 함수가 반환한 ID 값을 포함합니다. |
함수 사용 예제
다음은 이 함수를 사용하는 예제입니다:
Request_ID = xboxlive_matchmaking_join_session(global.UserID, global.SessionID, "PeerServerTraffic");
위 코드는 주어진 멀티플레이어 세션에 참여하기 위한 요청을 보내며, 요청 ID 값을 변수에 저장하여 비동기 이벤트에서 확인할 수 있도록 합니다.
활용 예제
- 세션 참여 요청:
gml var user_id = xboxlive_user_for_pad(gamepad_index); var session_handle = "correlation_id_from_previous_session"; var template_name = "MySecureTemplate"; var request_id = xboxlive_matchmaking_join_session(user_id, session_handle, template_name);
- 비동기 이벤트 처리:
gml if (async_load[? "status"] == "session_player_joined") { // 플레이어가 세션에 성공적으로 참여했습니다. var session_id = async_load[? "sessionid"]; // 추가 로직... }
- 오류 처리:
gml if (request_id == -1) { // 오류가 발생했습니다. 콘솔에 오류 메시지 출력 show_error("세션 참여 요청 중 오류 발생", true); }
이러한 예제들은 Xbox Live 매치메이킹 세션에 참여하는 방법을 보여주며, 다양한 상황에서 활용할 수 있습니다.