Трюки и хитрости в Game makere В данной главе я расскажу вам о некоторых мелких трюках, которые помогут придать вашей игре вполне серьезный вид, да и вообще, просто так пригодятся. Не теряя времени даром, сразу приступаем к делу. Для того чтобы проиграть видеофайл из вашей игры, вставьте в соответствующее событие следующий код: { show_video('имя_файла.avi', true, false); } Для того чтобы отобразить какую-либо картинку, используйте такой код: { show_image('имя_файла.jpg',true, 55000); } В итоге файл будет показываться минуту или пока пользователь не кликнет мышкой или не нажмет какую-нибудь клавишу. Для того чтобы справка по вашей игре читалась из внешнего rtf-файла, вставьте в событие начала игры (Game Start) следующий код (файл должен находиться в одной папке с игрой): { load_info('имя_файла.rtf'); } Для того чтобы сделать несколько скриншотов, выполните следующие действия: создайте объект o_screenshot, в событии Create напишите: { filenumber=1; } В событии нажатия на клавишу, при котором должен получаться скриншот, напишите: { screen_save(string(filenumber)+ ".bmp"); filenumber+=1; } Для того чтобы научить главного героя подпрыгивать, поместите следующий код в событие шага: { gravity_direction = 270; if place_free(x,y+1) gravity = 0.5; else gravity = 0; if (vspeed > 12) vspeed = 12; } А затем в событие нажатия клавиши, предназначенной для прыжка, поместите вот этот код: { if (not_place_free(x,y+1)) vspeed = -10; } Для того чтобы сделать в игре паузу — вставьте в событие нажатия определенной клавиши код: { // запомнить текущие значения __font_color = font_color; __font_size = font_size; __font_style = font_style; __font_name = font_name; __font_align = font_align; // нарисовать текст, перерисовать экран и ждать font_color = argument0; font_size = 16; font_style = fs_bold; font_name = 'Arial'; font_align = fa_center; draw_text(screen_width/2,100,'Пауза. Нажмите любую клавишу.'); screen_refresh(); keyboard_wait(); io_clear(); // восстановить установки font_color = __font_color; font_size = __font_size; font_style = __font_style; font_name = __font_name; font_align = __font_align; } Теперь по установке игры на паузу на экране все замрет и появится надпись "Пауза. Нажмите любую клавишу". После того, как вы что-нибудь нажмете, игра восстановит свой обычный ход. Для того чтобы создать свой курсор в игре — создайте объект o_cursor, определите для него спрайт и отключите в опциях игры пункт "show cursor". Теперь в событие шага объекта o_cursor напишите: { x = mouse_x; y = mouse_y; } Вот, пожалуй, и все основные трюки, которые вы сможете использовать в своей игре. Конечно, те, кто уже продвинулся в изучении GML, самостоятельно напишут что-то посложнее без особого труда, но для начинающих данные скрипты будут просто незаменимы. Глава 14: загрузка ресурсов из внешних файлов Вполне возможно, что кто-то из вас, дорогие игроделы, при создании своей игры захочет, чтобы ресурсы игры читались из внешних файлов, как в серьезных играх. Что ж, для GM не составит большого труда помочь вам в этом деле. Вы можете загружать из внешних файлов следующие виды ресурсов: спрайты, звуки и задние фоны. В принципе, процесс загрузки везде идентичен, поэтому разберем его на примере спрайтов. Загружать ресурсы можно двумя способами: создавая новые спрайты в игре и заменяя существующие. Я рассмотрю оба способа, однако по моему скромному мнению второй способ гораздо удобнее. Почему — тут, я думаю, вы решите сами, прочтя главу до конца. В первом случае мы будем использовать процедуру sprite_add(). Она возвращает имя создаваемого спрайта, которое вы в дальнейшем будете использовать в качестве идентификатора. Таким образом, мы пишем в событии создания комнаты: { s_name = sprite_add(fname,img- numb,precise,transparent,videomem,loadonuse,xorig,yorig); } В качестве параметров здесь следует писать: fname — путь к файлу и его имя, imgnumb — количество кадров в загружаемом спрайте\стрипе, precise — значение true\false, которое показывает, использовать ли для спрайта улучшенную проверку столкновений, transparent — значение true\false, определяет, будет ли использоваться прозрачный фон для спрайта. Аналогично указываются параметры loadonuse и videomem, которые отвечают за загрузку только для чтения и использование видеопамяти соответственно. Параметры xorig и yorig отвечают за координату начала спрайта, т.е. положение ориджина. Таким образом, например, для загрузки прозрачного спрайта из не анимированного файла с именем file.bmp вам необходимо написать следующий код: { s_name = sprite_add('file.bmp',1,1, 1,1,0,0,0); } При замене спрайта мы создаем в игре "пустой" спрайт, например, с именем s_spr. Далее используем код с аналогичными параметрами, т.е. { sprite_replace(ind,fname,imgnumb,precise,transparent,videomem,loadonuse,xorig,yorig); } Как вы могли заметить, здесь добавился еще один параметр — ind. Сюда надо вписать название спрайта, которое вы заменяете, т.е. если использовать предыдущий пример, то мы получим следующий код: { sprite_replace(s_name,'file.bmp',1,1,1,1,0,0,0); } Удобство этого метода заключается в следующем. Имя спрайта, созданного во время игры, представляет собой обычное значение переменной и никак не выделяется, а при замене спрайта вы будете оперировать именем уже созданного спрайта, и оно будет подсвечиваться в редакторе, что очень полезно. Остальные ресурсы загружаются по аналогии. Заключение Вот и подошел к концу цикл моих статей о Game Maker'е. Надеюсь, они в той или иной мере помогли вам разобраться если не с созданием, то хотя бы с внутренним устройством игр. Возможно, кто-то из вас даже определился с будущей профессией. Да-да, я говорю совершенно серьезно. В любом случае, если вам понравилось создавать игры и вы хотите, чтобы это стало вашей будущей профессией — не останавливайтесь ни перед чем и не слушайте никого и тогда вы добьетесь своего. А для тех, кто желает продолжить занятия по GameMaker'у, я приглашаю на официальный русский форум, который расположен по адресу http://www.gmakerforum.h11.ru. Возможно, мы даже сможем пообщаться. Воронецкий "AlienRaven" Михаил
В данной главе я расскажу вам о некоторых мелких трюках, которые помогут придать вашей игре вполне серьезный вид, да и вообще, просто так пригодятся. Не теряя времени даром, сразу приступаем к делу. Для того чтобы проиграть видеофайл из вашей игры, вставьте в соответствующее событие следующий код: { show_video('имя_файла.avi', true, false); } Для того чтобы отобразить какую-либо картинку, используйте такой код: { show_image('имя_файла.jpg',true, 55000); } В итоге файл будет показываться минуту или пока пользователь не кликнет мышкой или не нажмет какую-нибудь клавишу. Для того чтобы справка по вашей игре читалась из внешнего rtf-файла, вставьте в событие начала игры (Game Start) следующий код (файл должен находиться в одной папке с игрой): { load_info('имя_файла.rtf'); } Для того чтобы сделать несколько скриншотов, выполните следующие действия: создайте объект o_screenshot, в событии Create напишите: { filenumber=1; } В событии нажатия на клавишу, при котором должен получаться скриншот, напишите: { screen_save(string(filenumber)+ ".bmp"); filenumber+=1; } Для того чтобы научить главного героя подпрыгивать, поместите следующий код в событие шага: { gravity_direction = 270; if place_free(x,y+1) gravity = 0.5; else gravity = 0; if (vspeed > 12) vspeed = 12; } А затем в событие нажатия клавиши, предназначенной для прыжка, поместите вот этот код: { if (not_place_free(x,y+1)) vspeed = -10; } Для того чтобы сделать в игре паузу — вставьте в событие нажатия определенной клавиши код: { // запомнить текущие значения __font_color = font_color; __font_size = font_size; __font_style = font_style; __font_name = font_name; __font_align = font_align; // нарисовать текст, перерисовать экран и ждать font_color = argument0; font_size = 16; font_style = fs_bold; font_name = 'Arial'; font_align = fa_center; draw_text(screen_width/2,100,'Пауза. Нажмите любую клавишу.'); screen_refresh(); keyboard_wait(); io_clear(); // восстановить установки font_color = __font_color; font_size = __font_size; font_style = __font_style; font_name = __font_name; font_align = __font_align; } Теперь по установке игры на паузу на экране все замрет и появится надпись "Пауза. Нажмите любую клавишу". После того, как вы что-нибудь нажмете, игра восстановит свой обычный ход. Для того чтобы создать свой курсор в игре — создайте объект o_cursor, определите для него спрайт и отключите в опциях игры пункт "show cursor". Теперь в событие шага объекта o_cursor напишите: { x = mouse_x; y = mouse_y; } Вот, пожалуй, и все основные трюки, которые вы сможете использовать в своей игре. Конечно, те, кто уже продвинулся в изучении GML, самостоятельно напишут что-то посложнее без особого труда, но для начинающих данные скрипты будут просто незаменимы. Глава 14: загрузка ресурсов из внешних файлов Вполне возможно, что кто-то из вас, дорогие игроделы, при создании своей игры захочет, чтобы ресурсы игры читались из внешних файлов, как в серьезных играх. Что ж, для GM не составит большого труда помочь вам в этом деле. Вы можете загружать из внешних файлов следующие виды ресурсов: спрайты, звуки и задние фоны. В принципе, процесс загрузки везде идентичен, поэтому разберем его на примере спрайтов. Загружать ресурсы можно двумя способами: создавая новые спрайты в игре и заменяя существующие. Я рассмотрю оба способа, однако по моему скромному мнению второй способ гораздо удобнее. Почему — тут, я думаю, вы решите сами, прочтя главу до конца. В первом случае мы будем использовать процедуру sprite_add(). Она возвращает имя создаваемого спрайта, которое вы в дальнейшем будете использовать в качестве идентификатора. Таким образом, мы пишем в событии создания комнаты: { s_name = sprite_add(fname,img- numb,precise,transparent,videomem,loadonuse,xorig,yorig); } В качестве параметров здесь следует писать: fname — путь к файлу и его имя, imgnumb — количество кадров в загружаемом спрайте\стрипе, precise — значение true\false, которое показывает, использовать ли для спрайта улучшенную проверку столкновений, transparent — значение true\false, определяет, будет ли использоваться прозрачный фон для спрайта. Аналогично указываются параметры loadonuse и videomem, которые отвечают за загрузку только для чтения и использование видеопамяти соответственно. Параметры xorig и yorig отвечают за координату начала спрайта, т.е. положение ориджина. Таким образом, например, для загрузки прозрачного спрайта из не анимированного файла с именем file.bmp вам необходимо написать следующий код: { s_name = sprite_add('file.bmp',1,1, 1,1,0,0,0); } При замене спрайта мы создаем в игре "пустой" спрайт, например, с именем s_spr. Далее используем код с аналогичными параметрами, т.е. { sprite_replace(ind,fname,imgnumb,precise,transparent,videomem,loadonuse,xorig,yorig); } Как вы могли заметить, здесь добавился еще один параметр — ind. Сюда надо вписать название спрайта, которое вы заменяете, т.е. если использовать предыдущий пример, то мы получим следующий код: { sprite_replace(s_name,'file.bmp',1,1,1,1,0,0,0); } Удобство этого метода заключается в следующем. Имя спрайта, созданного во время игры, представляет собой обычное значение переменной и никак не выделяется, а при замене спрайта вы будете оперировать именем уже созданного спрайта, и оно будет подсвечиваться в редакторе, что очень полезно. Остальные ресурсы загружаются по аналогии. Заключение Вот и подошел к концу цикл моих статей о Game Maker'е. Надеюсь, они в той или иной мере помогли вам разобраться если не с созданием, то хотя бы с внутренним устройством игр. Возможно, кто-то из вас даже определился с будущей профессией. Да-да, я говорю совершенно серьезно. В любом случае, если вам понравилось создавать игры и вы хотите, чтобы это стало вашей будущей профессией — не останавливайтесь ни перед чем и не слушайте никого и тогда вы добьетесь своего. А для тех, кто желает продолжить занятия по GameMaker'у, я приглашаю на официальный русский форум, который расположен по адресу http://www.gmakerforum.h11.ru. Возможно, мы даже сможем пообщаться. Воронецкий "AlienRaven" Михаил
Design © 2006 Ganeev Andrei.