롤백 이벤트 해설

이 문서에서는 롤백 관련 이벤트에 대해 설명합니다. 이 이벤트들은 "기타" 카테고리에서 찾을 수 있습니다.

롤백 시작 이벤트 (Rollback Start)

이 이벤트는 모든 플레이어가 연결되고 멀티플레이어 게임이 시작될 때 트리거됩니다. 또한 방이 나중에 변경될 때도 발생합니다. 이 이벤트 내에서는 rollback_event_param이라는 구조체를 통해 이벤트와 관련된 모든 값을 얻을 수 있습니다.

구조체 멤버 설명
num_players 게임에 있는 총 플레이어 수
player_id 로컬 플레이어의 ID (0부터 시작하며, 처음에는 호스트 자신)
first_start 멀티플레이어 게임이 방금 시작되었으면 true, 방만 변경되었으면 false
late_join 플레이어가 늦게 참여한 경우 true, 그렇지 않으면 false

이 이벤트는 플레이어 객체가 아닌 게임 관리자 객체에서만 사용해야 합니다. rollback_event_param.player_id는 항상 로컬 플레이어의 ID를 나타내며, 이벤트가 트리거된 플레이어 인스턴스의 ID가 아닙니다. 예를 들어, 플레이어 0인 경우, 플레이어 1의 인스턴스에서 롤백 시작 이벤트를 잡더라도 player_id 변수는 여전히 0입니다.

롤백 이벤트 (Rollback Event)

롤백 이벤트는 게임의 여러 지점에서 트리거되며, rollback_event_id 변수를 포함합니다. 이 변수는 어떤 종류의 이벤트가 트리거되었는지를 나타냅니다. rollback_event_param이라는 구조체가 제공되며, 이벤트와 관련된 모든 값을 포함합니다.

다음은 rollback_event_id에 저장될 수 있는 상수들입니다:

상수 설명
rollback_chat_message rollback_chat()/Send Message (Rollback)에서 메시지를 받을 때 트리거됩니다. 이 이벤트 동안 rollback_event_param에는 다음 변수가 포함됩니다:
- message: 수신된 메시지 문자열
- from: 메시지를 보낸 플레이어의 ID
- to: 메시지를 받은 플레이어의 ID; 모든 사람에게 보낸 경우 -1
rollback_player_prefs 플레이어가 자신의 선호도를 설정할 때 트리거됩니다. 이 이벤트 동안 rollback_event_param에는 다음 변수가 포함됩니다:
- player_id: 선호도를 설정한 플레이어의 ID
- preferences: 해당 플레이어의 설정된 선호도
rollback_game_interrupted 불안정한 연결을 가진 플레이어로 인해 게임이 중단될 때 트리거됩니다. 이 이벤트 동안 rollback_event_param에는 다음 변수가 포함됩니다:
- player_id: 연결 문제를 가진 플레이어의 ID
- timeout: 해당 플레이어가 타임아웃되고 연결이 끊어지기까지 남은 시간 (밀리초 단위)
rollback_game_resumed 중단된 게임이 재개될 때 트리거됩니다. 재연결된 플레이어의 ID는 rollback_event_param.player_id에 저장됩니다.
rollback_game_full 연결하려는 게임/방이 이미 가득 찼을 때 트리거됩니다.
rollback_game_info 방에 대한 정보가 수신되었지만 완전히 참여하기 전에 트리거됩니다. 이 이벤트 동안 rollback_event_param에는 다음 변수가 포함됩니다:
- num_players: 게임에 있는 총 플레이어 수
- player_id: 로컬 플레이어의 ID (0부터 시작)
rollback_end_game 서버가 클라이언트에게 게임을 중지하라고 요청할 때 트리거됩니다. 일반적으로 이 이벤트는 클라이언트가 일관되지 않은 상태에 있을 때 발생합니다.
rollback_connect_info 방이 생성되고 다른 플레이어와 공유할 준비가 되었을 때 트리거됩니다. 공유 가능한 URL은 rollback_event_param.share_url에 저장됩니다.
rollback_connect_error 연결 오류가 발생했을 때 트리거됩니다. rollback_event_param 구조체에는 다음 변수가 포함됩니다:
- status: 응답의 HTTP 상태 코드
- error: 오류를 설명하는 문자열
rollback_connection_rejected 연결 시도가 거부되었을 때 트리거됩니다. 오류는 잘못된 토큰, 클라이언트 버전 불일치 또는 프로토콜 버전 불일치로 인해 발생할 수 있습니다.
rollback_protocol_rejected 연결 시도가 거부되었을 때 트리거됩니다. 이는 클라이언트가 구식 프로토콜 버전을 사용하고 있음을 의미합니다.
rollback_high_latency 서버에 대한 지연 시간이 너무 높을 때 트리거됩니다.

피어 관련 이벤트

상수 설명
rollback_connected_to_peer 새로운 플레이어가 연결되었을 때 트리거됩니다. 연결된 플레이어의 ID는 rollback_event_param.player_id에 저장됩니다.
rollback_synchronizing_with_peer 새로운 플레이어와 동기화하는 동안 발생합니다. 이 이벤트 동안 rollback_event_param에는 다음 변수가 포함됩니다:
- player_id: 동기화 중인 플레이어의 ID
- count: 완료된 동기화 단계 수
- total: 완료해야 할 총 동기화 단계 수
rollback_synchronized_with_peer 플레이어와의 동기화가 완료되었을 때 트리거됩니다. 동기화된 플레이어의 ID는 rollback_event_param.player_id에 저장됩니다.
rollback_disconnected_from_peer 플레이어가 연결을 끊었을 때 트리거됩니다. 연결이 끊어진 플레이어의 ID는 rollback_event_param.player_id에 저장됩니다.

활용 예제

// 롤백 시작 이벤트 처리
if (event_type == ev_rollback_start) {
    var numPlayers = rollback_event_param.num_players;
    var localPlayerId = rollback_event_param.player_id;
    // 추가 로직...
}

// 롤백 채팅 메시지 처리
if (event_type == ev_rollback_event && rollback_event_id == rollback_chat_message) {
    var message = rollback_event_param.message;
    var fromPlayerId = rollback_event_param.from;
    // 메시지 처리 로직...
}

// 게임 중단 처리
if (event_type == ev_rollback_event && rollback_event_id == rollback_game_interrupted) {
    var playerId = rollback_event_param.player_id;
    var timeout = rollback_event_param.timeout;
    // 중단 처리 로직...
}

// 새로운 플레이어 연결 처리
if (event_type == ev_rollback_event && rollback_event_id == rollback_connected_to_peer) {
    var newPlayerId = rollback_event_param.player_id;
    // 새로운 플레이어 처리 로직...
}

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA