rollback_leave_game 함수 설명
rollback_leave_game
함수는 현재 멀티플레이어 세션을 종료하고, 플레이어가 새로운 게임에 참여하거나 생성할 수 있도록 합니다. 방의 호스트가 나가면 그 방의 소유권이 다른 플레이어에게 이전되어 게임이 계속 진행될 수 있습니다. 모든 플레이어가 나가야만 게임이 종료됩니다.
오류 방지
플레이어가 멀티플레이어 세션을 떠난 후에도 GameMaker는 모든 게임 코드를 실행하지만, "사전 시작" 상태로 돌아갑니다. 이 상태에서는 관리되는 인스턴스를 생성하거나 수정할 수 없습니다. 따라서 게임을 떠날 때 플레이어 인스턴스를 수동으로 파괴하고, 오류를 피하기 위해 rollback_game_running
을 조건으로 사용하여 다른 게임 로직을 일시 중지해야 합니다.
롤백 시작 전 상태
플레이어가 게임에서 나가면 Rollback Event
가 트리거됩니다. 더 많은 정보는 Rollback Events
를 참조하세요.
문법
rollback_leave_game();
반환값
N/A
예제
if (keyboard_check_pressed(vk_escape)) {
rollback_leave_game();
}
위 코드는 플레이어가 Escape 키를 눌렀을 때 게임을 떠나게 합니다.
활용 예제
예제 번호 | 설명 |
---|---|
1 | 플레이어가 특정 조건을 만족했을 때 게임을 떠나도록 설정 |
2 | 게임 종료 시 모든 인스턴스를 정리하는 코드 |
3 | 방의 호스트가 나갈 때 다른 플레이어에게 소유권을 이전하는 로직 |
4 | 플레이어가 나갈 때 UI를 업데이트하는 방법 |
5 | 나가기 전에 확인 메시지를 표시하는 기능 |
예제 코드 스니펫
- 특정 조건을 만족했을 때 게임을 떠나기:
gml if (player_health <= 0) { rollback_leave_game(); }
- 게임 종료 시 모든 인스턴스를 정리하기:
gml if (rollback_game_running) { instance_destroy(player_instance); }
- 방의 호스트가 나갈 때 소유권 이전하기:
gml if (is_host && !rollback_game_running) { transfer_ownership_to_next_player(); }
- 플레이어가 나갈 때 UI 업데이트:
gml if (keyboard_check_pressed(vk_escape)) { update_ui_on_exit(); rollback_leave_game(); }
- 나가기 전에 확인 메시지 표시:
gml if (keyboard_check_pressed(vk_escape)) { if (show_confirmation_dialog()) { rollback_leave_game(); } }