GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2]게임 재시작 및 종료하기

타락카얀 2023. 7. 11. 09:40
728x90

 

 

GAME MAKER 강좌

 

KAYAN

 

 

 

 

 

◈ 룸 재시작

 

 

아래 함수를 사용하면 룸에 새로 들어온 것처럼 현재 룸을 다시 시작합니다.

 

   ◎ room_restart( )

 

다만, 현재 룸에서 변경된 전역변수, 데이터 구조체, 스프라이트와 같은 동적 리소스들은 직접 재설정하는 것이 아니라면, 자동으로 초기화되지는 않습니다.

즉, 룸 초기에 설정된 오브젝트 및 스프라이트 리소스 배치, 오브젝트의 초기 설정 및 지역 변수값, 기본 룸 설정정도만 초기화 됩니다.

 

함수를 사용하면 [Room End 이벤트]가 실행되고 룸을 재시작하게 됩니다.

 


   if lives < 1
      {
      room_restart( );
      }


 

위의 코드는 변수 "lives"가 1보다 작은지 확인하고 1보다 작은 경우 룸을 다시 시작합니다.

 

(▲ 룸 매니저)

 

 

 

 

 

 

◈ 게임 재시작

 

 

아래 함수를 사용하면 게임을 다시 시작할 수 있습니다.

 

   ◎ game_restart( )

 

이것은 본질적으로 게임을 처음 실행하는 것과 같기 때문에 현재 룸에서는 [게임 종료 이벤트]가 실행되고,

첫 번째 룸에서는 [게임 시작 이벤트]가 실행됩니다.

 

이 함수가 호출될 때 특정 설정은 재설정되지 않는다는 점을 주의해야 합니다.

 

     - 전역 변수는 명시적으로 코딩되지 않는 한, 자동으로 초기화되지는 않습니다.

       예를 들어, 내장 전역 변수의 점수(score 변수)는 게임에서 수정된 경우 게임을 다시 시작해도 0에서 시작하지 않습니다.

 

     - GPU 상태는 변경되지 않습니다.

       예를 들어, 그리기 색상(draw_set_color), 또는, 투명도(draw_set_alpha)를 설정한 경우 변경된 값으로 유지됩니다.

 

     - 게임 속도는 게임 코드에서 설정한 대로 유지됩니다. 변경한 경우 이 변경 사항은 지속됩니다.

 

     - 스프라이트 리소스의 원점을 변경하거나 리소스의 위치를 이동하는 경우와 같이, 게임 내에서 에셋 브라우저의

       변경된 모든 에셋들은 재설정되지 않습니다.

 

     - 버퍼, 서피스, 데이터 구조체 또는 외부에서 가져온 스프라이트와 같이 동적 리소스는 정리되거나 제거되지 않습니다

       그들에 대한 참조를 잃을 수도 있으므로, 이 함수를 사용할 때 동적 리소스의 참조에 관한 부분을 정리하는 것이 좋습니다.

 


   if keyboard_check_pressed(ord("R"))
      {
      game_restart( );
      }


 

예시는 플레이어가 "R" 키를 누르면 게임이 다시 시작됩니다.

 

 

 

 

◈ 게임 종료하기

 

 

아래 함수는 게임을 종료할 수 있습니다.

 

   ◎ game_end( )

 

함수를 사용하면 [게임 종료 이벤트]가 실행됩니다.

 

이 기능을 사용할 때 주의할 부분이 있습니다.

 

     - Android 기기에서 game_end( )를 호출하면 앱이 백그라운드로 푸시되지만 앱이 완전히 닫히지는 않습니다.

       이 작업은 사용자가 직접 기기에서 수행하도록해야 합니다.

 

     - iOS에서는 아무 작업도 수행하지 않고, 자동으로 실패합니다.

 

     - 모든 콘솔에서 게임이 충돌하거나 소리 없이 실패할 수 있으므로, 이 기능을 사용해서는 안 됩니다.

 

     - HTML5에서는 게임은 종료되지만, 사용자는 웹 페이지의 빈 캔버스를 볼 수 있기 때문에 해당 대상 플랫폼에서

       사용하지 않는 것이 좋습니다.

 

     - Windows, Linux 및 macOS에서는 함수는 게임을 종료하고, 게임 창을 닫습니다.

 


   if keyboard_check_pressed(vk_escape)
      {
      game_end( );
      }


 

예시는 플레이어가 "ESC" 키를 누르면 게임이 종료(Windows, Linux 및 macOS 에서만 작동)됩니다.

 

 

 

 

 

300x250