Среда, 30 Ноября 2022, 00:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Создание автообновления для игры
Создание автообновления для игры
MrIncrofДата: Среда, 09 Ноября 2011, 13:44 | Сообщение # 1
Lite Programmer
Сейчас нет на сайте
Привет! Сейчас я расскажу как можно сделать автоматическое обновление игры. Как это работает: сначала качается текстовый файл в котором написана самая новая версия, потом сравнивается это значение со значением версии самой игры. Если новейшая версия больше текущей версии, тогда начинается закачка файла, иначе выдаётся сообщение о том что текущая версия не требуется в обновлении. Для начала, необходимо скачать DLL библиотеку отсюда. Весит она чуть больше килобайта. Далее необходимо распаковать содержимое архива в папку с игрой. Заходим в ГМ => Scripts => Import Scripts.. Этим действием мы импортировали необходимые скрипты. Создаём два скрипта: check_new_version, через этот скрипт будет качаться файл с версией игры и сравниваться с текущей версией. Ещё один скрипт: download_update, через этот скрипт будет качаться сами файлы. В 1-ый скрипт пишем:
Code
URL='http://mysite.ru/v.txt'; // Полный путь до текстового файла
File='v.txt'; // Название файла
Download=dll_download(URL,File); // Загружаем файл

if Download{  // Если загрузка удалась
     FileOpen=file_text_open_read(working_directory+'\v.txt'); // Открывается скачанный файл
     FileRead=file_text_read_real(FileOpen); // Читаем содержимое файла
     Version=1.1; // Текущая версия игры
     if Version<FileRead{ // Если версия игры меньше новейшей
         show_message('Найдена новая версия'); // Выводится сообщение
         download_update(); // Начинается загрузка
         file_delete(File); // Удаляется файл
     } else{ // Иначе
         show_message('У вас новейшая версия'); // Выводим сообщение
         file_delete(File); // И удаляем файл
     }
}else{ // Если файл не может скачаться
     show_message('Ошибка!'); // Выводим сообщение об ошибке
     if file_exists(File){ // Если файл существует
         file_delete(File); // Удаляем его
     }
}

Первый скрипт готов! Осталось только написать скрипт загрузки файлов игры, для этого во 2-ой скрипт пишем:
Code
URL='http://mysite.ru/game.exe'; // Полный путь до файла
File='game.exe'; // Название файла
Download=dll_download(URL,File); // Загружаем файл
if Download{ // Если загрузка прошла успешно
     show_message('Загрузка прошла успешо!); // Выводим сообщение  
     execute_shell(File,0); // Запускаем игру
     game_end(); // Выходим из программы
}else{ // Если невозможно загрузить файл
     show_message('Ошибка!'); // Выводим сообщение об ошибке
     game_end(); // Выходим из программы
}

Вот и всё! Вам осталось только изменить переменные на нужные вам. Вы можете свободно использовать данную библиотеку даже в коммерческих целях. Урок закончен, ждите новых уроков.
SyankДата: Среда, 09 Ноября 2011, 14:34 | Сообщение # 2
участник
Сейчас нет на сайте
Охо-хо, супер урок! Пора бы админам снять ограничение на повтор "плюсов" через 7 дней. Начинает бесить:D
А я всё думал как это реализуется в GM. По ходу - ты у меня мысли читаешь? wink
MrIncrofДата: Среда, 09 Ноября 2011, 14:46 | Сообщение # 3
Lite Programmer
Сейчас нет на сайте
Syank, можешь сделать для своего проекта =D
SyankДата: Среда, 09 Ноября 2011, 14:56 | Сообщение # 4
участник
Сейчас нет на сайте
Да, это бы было круто. Осталось только сделать проект biggrin
KOT_B_ZAKOHEДата: Среда, 09 Ноября 2011, 15:26 | Сообщение # 5
частый гость
Сейчас нет на сайте
respect respect respect

http://yegel.ucoz.ru/
GameMixДата: Среда, 09 Ноября 2011, 18:24 | Сообщение # 6
старожил
Сейчас нет на сайте
4aBo, ещё один полезный урок. Многим пригодится. Требую ещё статьи! biggrin


Steel Standoff - 2D аркада.
Мои статьи
МорриартеДата: Среда, 09 Ноября 2011, 19:01 | Сообщение # 7
LINUX ФАНАТ
Сейчас нет на сайте
Отлично написано. smile



Сообщение отредактировал Buran - Среда, 09 Ноября 2011, 19:02
MrIncrofДата: Среда, 09 Ноября 2011, 19:04 | Сообщение # 8
Lite Programmer
Сейчас нет на сайте
GameMix, Buran, спасибо, сейчас я улучшаю урок по модификации игры happy
noTformaTДата: Среда, 09 Ноября 2011, 19:14 | Сообщение # 9
Ukrainian independent game developer
Сейчас нет на сайте
ммм,если игра сейчас запущенна, то как ос даст удалить ее файлы????

@noTformaT
МорриартеДата: Среда, 09 Ноября 2011, 19:16 | Сообщение # 10
LINUX ФАНАТ
Сейчас нет на сайте
noTformaT, там скачивается файл и заменяется наскольно я помню, потом игра выключится и надо будет запустить её еще раз.
SyankДата: Понедельник, 28 Ноября 2011, 05:21 | Сообщение # 11
участник
Сейчас нет на сайте
Как заменяется?О_О Если он запущен.
Можно создать ещё один спец файл и при запуске новой версии, если этот файл есть, то удалять старую... правда путь к ней найти тяжеловато будет, если игра не будет в определённой папке.

Добавлено (28.11.2011, 05:01)
---------------------------------------------
Ухуху! Я ошибку нашёл!
(Решил использовать)
в последнем скрипте
show_message('Загрузка прошла успешо!'); // Выводим сообщение
А вдруг кто не заметитXD

Добавлено (28.11.2011, 05:21)
---------------------------------------------
Я ещё кое что заметил. После импорта файла gml у вас появляется 2 скрипта: dll_download и ini_dll_download.
Если так их и запустить, то выдаст ошибку, что переменная _au_download не известна. А она назначается в ini_dll_download. И если всё из ini_dll_download скопировать в начало dll_download, то всё работает.
Кто либо вообще пробовал скрипт этот использовать?
Я кстати не качал... только версию сверял.

BrightSpotДата: Понедельник, 28 Ноября 2011, 16:20 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
ппц... хотел написать такой урок, но меня опередили=)))
могу добавить что для большей продуктивности обновлений следует код игры выносить во внешние файлы(мой ммо марио так сделан)
для этого нужно создать текстовый фйал с названием(если не мелочится то просто code с кодами все игры, а если больше разбивать то можно каждое событие внести в отдлельный файл) где будет написано:

object_event_add(xxx,yyy,numb,
"
zzz
"
)
// xxx - назвние обьекта(obj_hero,obj_player и т.д), , ууу - событие(ev_create,ev_step и т.д),numb - номер события(если аларм то номер аларма или, если колизия, то название обькта с которой происходит колизия),zzz - это сам код который должен быть в событии(лучше сначало его в самом ГМ-е делать, а потом вырезать и вставлять в txt файл(хотя расширение любое сойдет)
таких событий может быть куча(у меня каждый файл на отдельный обьект)
дальше создаем обьект загрузки и в нем пишем(у меня в create):
execute_file('bin\file_name.txt')// bin- папка где лежат фалы, file_name - название фала, txt - расширения файла(кушает любое или почти любое... у меня wom)
и все... тогда обновлять можно только код, не качая заново exe файл(подобно обновлениям ммо игр)

З.Ы. автор если надо добавь в статью... кому то да понадобится=)))



Более мощный компьютер глючит быстрее и точнее.


Сообщение отредактировал BrightSpot - Понедельник, 28 Ноября 2011, 16:22
MrIncrofДата: Понедельник, 28 Ноября 2011, 20:44 | Сообщение # 13
Lite Programmer
Сейчас нет на сайте
BrightSpot, хорошая идея, но этот урок я обновлять больше не буду, если ты не против, я напишу новый урок по твоему методу, но добавлю кое-что ещё biggrin
Если ты не против...

Добавлено (28.11.2011, 20:44)
---------------------------------------------
+ ещё можно шифрование сделать biggrin

BrightSpotДата: Понедельник, 28 Ноября 2011, 23:35 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
я дал идею, а как ее использовать твое дело(мне все равно на репу) biggrin


Более мощный компьютер глючит быстрее и точнее.
MyACTДата: Среда, 28 Декабря 2011, 16:10 | Сообщение # 15
C# CODERS
Сейчас нет на сайте
MrIncrof, слушай у меня в 1 скрипте ошибка

3дэшечки: https://sketchfab.com/myactyindie
Курентли воркс он: https://myacty.itch.io/raskopnik
MrIncrofДата: Среда, 28 Декабря 2011, 17:55 | Сообщение # 16
Lite Programmer
Сейчас нет на сайте
MyACT, я не экстрасенс, выкладывай код ошибки)
+ если изменил, даже немного, кидай код
MyACTДата: Четверг, 29 Декабря 2011, 04:26 | Сообщение # 17
C# CODERS
Сейчас нет на сайте
Там он чегото в объекте download_update не понимает

3дэшечки: https://sketchfab.com/myactyindie
Курентли воркс он: https://myacty.itch.io/raskopnik
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Создание автообновления для игры
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг