본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] 게임 저장 : ini 저장

by 타락카얀 2021. 2. 20.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

 

◈ ini 파일로 저장하기

 

 

이번에는 ini 파일로 데이터를 저장하는 방법에 대해 알아봅시다.

 

ini 파일은 주로 게임의 주요 설정 값을 저장할 때 쓰입니다.

ini 파일은 아래 함수를 사용하면 파일을 제어할 수 있습니다.

 

   ◎ ini_open(name) : 편집할 ini 파일을 엽니다.

   ◎ ini_close( ) : 편집중인 ini 파일을 닫습니다.

 

저장 방식은 이렇습니다.

 

   1. 먼저 ini_open 함수를 사용하여 편집할 ini 파일을 엽니다.

   2. 그리고 데이터를 저장하거나, 데이터를 읽습니다.

   3. 마지막으로 중요한 부분입니다. 모든 데이터 작업을 수행했다면 ini_close 함수를 사용하여

      편집중인 ini 파일을 닫아 작업을 종료합니다.

 

예)

 


   ini_open("system.ini");


      - 데이터 저장 및 읽기 -


   ini_close( );

 

데이터를 저장할 때는 아래 2종류의 함수를 사용합니다.

 

   ◎ ini_write_real(section, key, value) : 숫자로 저장합니다.

   ◎ ini_write_string(section, key, value) : 문자열로 저장합니다.

 

   ※ section 과 key는 문자열로 지정합니다.

 

저장은 숫자 또는 문자열 2가지 방식으로 저장할 수 있습니다.

저장되는 ini 데이터 구성은 아래와 같습니다.

 

  
   [섹션1]
      키1 = "값"
      키2 = "값"


   [섹션2]
      키1 = "값"
      키2 = "값"
      키3 = "값"

 

위와 같이 ini 파일은 각 데이터에 섹션(section)이 있고, 그 하위에 키(key)와 키 값(value)으로 구성합니다.

예를 들어, 800x600의 화면크기를 ini 파일로 저장한다고 했을 때, 아래와 같이 저장할 수도 있습니다.

 

예)

 


   ini_open("system.ini");
   ini_write_real("Window", "width", global.screen_width);
   ini_write_real("Window", "height", global.screen_height);
   ini_close( );





   // ----- ini 저장 내용 ----- //

   [ Window ]
      width = "800"
      height = "600"
  

 

저장된 ini 데이터를 불러올 때는 아래 함수를 사용하여 데이터를 읽습니다.

 

   ◎ ini_read_real(section, key, default) : 지정한 섹션의 키 값을 숫자로 읽습니다.

   ◎ ini_read_string(section, key, default) : 지정한 섹션의 키 값을 문자열로 읽습니다.

 

쓰기와 마찬가지로 ini 파일에서 데이터를 읽을 section과 key 값을 지정하고, 읽기 실패할 경우의 기본값(default)값을

지정하면 됩니다.

그리고 읽기 함수로 반환된 값을 변수에 할당하면 됩니다.

 

예)

 


   ini_open("system.ini");
   global.hi_score=ini_read_string("Game Score", "Hi-score", 0);
   ini_close( );

 

ini 파일 읽기 실패했을 때는 기본값(default)이 적용되는데, 저장된 데이터에 섹션 또는 키가 없는 경우, 문자열을 숫자로 읽는 경우,

그리고 ini 파일이 없는 경우와  같이 읽기에 실패한 경우에 기본값으로 적용됩니다.

따라서 원치 않은 값이 적용된 경우, 잘못된 데이터를 읽으려 하지 않았는지 확인할 필요가 있습니다.

 

아래 함수를 사용하면 저장된 ini 데이터의 섹션 또는 키 값을 삭제 할 수 있습니다.

 

   ◎ ini_section_delete(section) : 지정한 섹션을 삭제합니다.

   ◎ ini_key_delete(section, key) : 지정한 섹션의 키를 삭제합니다.

 

예)

 


   ini_open("system.ini");
   ini_key_delete("Game Score", "score");
   ini_close( );

 

참고로 섹션을 삭제할 경우, 하위 키와 키값 모두 삭제가 됩니다.

 

아래 함수를 사용하여 ini 데이터에 관련 섹션과 키가 존재하는지 체크할 수 있습니다.

 

   ◎ ini_section_exists(section) : 지정한 섹션이 있는지 체크합니다.

   ◎ ini_key_exists(section, key) : 지정한 섹션의 키가 있는지 체크합니다.

 

이 함수는 아래와 같이 ini 파일에 지정한 섹션, 또는, 키가 있을 때만 값을 적용하는데 사용할 수도 있습니다.

  
   ini_open("system.ini");
   if !ini_section_exists("save")
      {
      global.savegame = "1";
      }
   ini_close( );

 

 

 

300x250

댓글