Блог ☯

08.04.2017

Создание игры с нуля - ini файлы в Game Maker Studio и сохранение

Расскажу про ini файлы в гейм мейкер студио (Game Maker Studio) и про сохранение данных во внешних файлах. Если вы хотите узнать про создание игры с нуля в GMS, про .ini файлы вам тоже следует знать. Тут речь пойдёт не только про гейм мейкер, но и вообще про ини файлы в принципе.

"Ини" (.ini) - это файл конфигурации в Windows, который присутствует с первых версий.

Ini file - это обычный и простой текстовой файл с расширением .ini. Эти файлы можно просматривать и редактировать с помощью простого текстового редактора, даже через блокнот.

Создание игры с нуля - ini файлы в Game Maker Studio и сохранение

Как рисовал тёлочку на картинке читайте тут: Рисунок девушки #11

В играх или приложениях (программах) у вас может возникнуть необходимость сохранить какие-то данные (цифры или слова - строчки, strings). В Game Maker Studio, да и не только там, для этого могут быть использованы внешние ини файлы.

Выглядеть всё это будет просто как надписи, примерно вот так:

Создание игры с нуля - ini файлы в Game Maker Studio и сохранение

Пример ini файла, можно даже сказать - простая база данных

Тут есть 3 вещи:

  • Секция. То, что в квадратных скобках. Это как-бы раздел, просто чтобы было удобнее делить данные по группам. 
  • Ключ. Просто то, что мы записываем в форме текста. Например для имени (Andrew) в файле ключом будет являться - name
  • Данные. То, что мы записываем. Это либо цифра (real), либо строка - текст (string).

Зная это, всё становится относительно понятно. 

В гейм мейкер студио есть несколько функций для ини файлов, всё это есть в справке, но нам понадобятся сейчас всего несколько. 

  • ini_open
  • ini_close
  • ini_write_real
  • ini_write_string
  • ini_read_real
  • ini_read_string
  • ini_key_exists
  • ini_section_exists
  • ini_key_delete
  • ini_section_delete
  • ini_open_from_string

Перед тем, как работать с ini файлом, нам нужно его открыть (ini_open), а когда мы всё туда уже записали (или прочитали), тогда его нужно закрыть (ini_close). 

Вот пример кода, где мы записываем в ини файл значение золота у героя: 

ini_open("save.ini" );
ini_write_real( 'HERO STATS', 'Gold', global.gold );
ini_close(); 

При открытии пишем название файла, если такого файла не существует, он будет создан. В данном случае название файла - save.ini. В простых играх одного ини файла вам хватит, но иногда нужно создавать несколько и хранить в каждом что-то отдельно. 

Что этот код запишет в наш блокнот (ini file):

[HERO STATS]
Gold = 500

Если у нас золота было 500, понятное дело. 

В одном из своих постов (С чего начать разработку игр) я рассказывал как я начинал делать игры и там я говорил что один из этапов в моём обучение был - создание модификаций к игре "Виктория". В той игре чуть-ли не все файлы были просто обычными текстовыми файлами, которые мог редактировать кто угодно. 

С этими файлами можно дать возможность игрокам писать моды для вашей игры. Просто сохраните основные параметры в форме ini файла. Например, все параметры оружия для моей игры Lonely Dude. Напоминаю что у меня выложен исходник этой игры вот тут, где уже есть все эти механики. Можете просто открыть и посмотреть как я там сделал сохранение через ini файлы.

Тогда любой игрок сможет это редактировать просто открывая текстовые файлы и меняя параметры как он хочет. 

Через них можно записать вообще чуть-ли не всё, начиная от поведения врагов (AI), заканчивая... Практически чем угодно, что можно быть записано в форме числа или строчки.

В ини файлы мы записываем данные (write - писать), либо это число / цифра (ini_write_real), люди это текст (ini_write_string). 

Пример кода записи я показал, а как ини файлы читать (read)?

Вот пример кода: 

if file_exists("save.ini") // Проверяет, существует-ли этот файл{
ini_open("save.ini" );
global.gold = ini_read_real( 'HERO STATS', 'Gold',0);
ini_close();
}

Тут мы считываем значение (ключ) из секции - стата героя (HERO STATS), но не просто считываем, мы приравниваем текущую переменную золота у героя (global.gold) к данным из вот этого текстового ини файла. Если у нас в том файле было значение 500, то и тут золото станет равным 500. Всё просто. Это и есть сохранение.

Единственная разница тут это проверка - существует-ли файл. Ну и последнее - 0

0 это там у нас значение по умолчанию. Почти всегда можете оставлять там 0. 

На самом деле вот и всё! С помощью таких нехитрых штук вы сможете в Game Maker Studio сохранять любые данные во внешний файл и потом их считывать. Так-же не забывайте что в гейм мейкере есть и стандартные функции сохранения (game_save(), game_load()), но они не всегда вам подойдут, особенно для более сложных игр. 

Как всегда, сделал видео на своём ютуб канале (11 минут). там всё более наглядно.