Блог ☯

четверг, 30 марта 2017 г.

Основы создания игр: как сделать диалоги в Game Maker Studio (ч.1)

Возвращаемся к теме создания игр, сегодня я расскажу как можно сделать диалоги в Game Maker Studio. Это будет лишь один из способов и первая часть, может быть позже сделаю отдельное видео и статью где расскажу как делать выбор вариантов ответа. 

Как вы видите мой курс - основы создания игр двигается от простого к сложному, далее буду покрыть еще более сложные вещи. Радуется что сегодня я ради этой теме кое что почитал, посмотрел видео на английском ну и сам для себя узнал что-то новое про гейм мейкер и создание игр.

Итак, что получиться в итоге? Как я сделал?

Вообще, я нашёл 3-4 готовых исходника диалогов, поковырял их, но решил забить на всё это и просто слепить систему с нуля и от себя. Посмотреть могу-ли я с нуля это сделать и как-бы я это всё сделал, если-бы не знал как "надо".

Прелесть создания игр что это отчасти искусство и вы вольны делать всё как вам вздумается, никого в итоге не будет волновать через какой Индусский / Китайский код вы писали игру, если эта игра нормально работает.

Основы создания игр: как сделать диалоги в Game Maker Studio (ч.1)

Базарим с чуваком в игре Lonely Dude

Давайте пару слов о том, для чего такие диалоги могут вам пригодиться, для каких игр и в каких местах они могут работать.

Для полноценной RPG вам такое может и не подойти, нужно будет что-то более сложное, однако для какой-нибудь TDS в рамках простой сюжетной линии - вполне.

Такие диалоги (примерно) сделаны в игре 12 is better than 6, которая кстати тоже сделана в Game Maker. Тоже один из одним идут реплики, но тут у меня пока только реплики НПС, хотя сделать тут героя вообще не трудно, вы сами поймёте после статьи и видео как сделать ответы один за одним, герой - нпс.

Что мы пишем в гейм мейкере?

Нам нужен НПС, с кем будет говорить. Достаточно любого спрайта и объект.

Далее нужно 3 вещи - create, step, draw

Еще раз повторюсь, тут я делаю своим способом, у вас могут быть другие способы (но не делайте через show_message...).

В CREATE (EVENT - Событие) мы просто пишем одну локальную переменную:
dialog = 0
Это будет означать что диалог еще не начался.

Далее, в DRAW, мы будет всё рисовать и писать текст. Можно всё это дело делать с помощью просто серии спрайтов, типа каждая реплика - отдельный спрайт (или даже, отдельный объект), но всё можно сделать проще.

Основы создания игр: как сделать диалоги в Game Maker Studio (ч.1)

draw_self() - нарисует себя, НПС

Вот остальной код:
if distance_to_object(o_hero)<25{
draw_set_colour(c_black)
draw_set_font(f_1)
draw_set_halign(fa_left)
draw_set_alpha(0.9)
 
draw_sprite(s_dialog_1,s_dialog_1,view_xview[0],view_yview[0] + 400) 
if dialog=0 then draw_text(view_xview[0],view_yview[0] + 400,'Здарова братюнь, мы тут смотрим Econ Dude#Учимся рисовать диаоговое окно#Это очень простой пример как такое делается#Подписывайся на канал') 
if dialog=1 then draw_text(view_xview[0],view_yview[0] + 400,'Так что вот такая фигня у нас#Видишь, тут уже как бы и диалог#Дальше будешь читать?') 
if dialog>=2 then draw_text(view_xview[0],view_yview[0] + 400,string('Ну и дальше всё в таком духе#Ты уже нажал сюда ')+string(dialog-1)+string(' раз')) 
draw_set_alpha(1)
}

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

Новое это может быть для вас draw_set_halign(fa_left) 

Эта штука выравнивает текст по левой стороне. Мы просто в тексте переносит на новую строчку с помощью решётки (#), ну а вот эта функция будет текст выравнивать.

draw_sprite - просто нарисует нам картинку, спрайт. Диалоговое окно. Тут есть основная картинка и еще фон (рамка), вон можно с этим поиграться чтобы делать как типа говорит герой, а потом НПС, просто меняя рамку.

Тут у меня простейшая картинки диалога:

Основы создания игр: как сделать диалоги в Game Maker Studio (ч.1)

"Далее" можно было-бы просто написать текстом с помощью функции (как и остальное), а не на картинке. Тут не так важно.

С текстом я думаю всё понятно, единственное что, имейте в виду координаты и виды. Больше про виды читайте в другой моей статье:


Видите там условия, если переменная диалог (dialog) равна чему-то, это как-бы этапы и реплики. Их нам надо менять по нажатию на "далее", но на самом деле можно нажать не только туда, но и вообще в эту область.

Пишется это в STEP.

Основы создания игр: как сделать диалоги в Game Maker Studio (ч.1)

Код я написал вот такой (никогда раньше таких штук не писал):

if distance_to_object(o_hero)<25
if mouse_x>view_xview[0] and mouse_x<view_xview[0] + 400
if mouse_y>view_yview[0] + 400
if mouse_check_button_released(mb_left){
    dialog+=1;
}
Так-же проверяем дистанцию, а потом проверяем есть-ли нажатие мышки в этой области диалога. Если да, то мы прибавляем к локальной переменной "диалог" 1, по факту включая следующий, следующую надпись.

На этом всё. Понравился урок? Не забудь поставить палец вверх чуть ниже.

А так-же смотрите другие мои статьи про создание игр:


Как всегда, на моём ютуб канале Econ Dude, вы можете посмотреть видео на эту тему: