Четверг, 21 Ноября 2024, 13:08

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

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Ваше отношение к российским разработкам?
Всего ответов: 5763
Главная » Статьи » Создание игр

Курс GML. Часть 1 - введение.
1. Теория
Давайте узнаем, что такое переменная. Переменные очень важны для любого языка программирования, будь то хоть GML, хоть C++, хоть Бейсик. По урокам математики вы знаете что переменная - число с непостоянным значением.
Переменные существуют трёх видов (по крайней мере, я их так классифицирую):
1. Числовая.
Числовые переменные можно представить как кошель. В него можно положить сколько угодно монет. К примеру, переменная
Code
money=100

показывает что у героя в кармане 100 монет. Переменные можно складывать, вычитать, умножать и делить. Вот таблица действий с переменными:
Code

money=100 // переменная money равна 100-ам  
money-=100 // из переменной money вычесть 100
money+=100 // к переменной money прибавить 100
money*=100 // переменную money умножить на 100
money/=100 // переменную money разделить на 100
money!=100 // переменная money НЕ равна 100-ам
money>=100 // переменная money больше 100
money<=100 // переменная money меньше 100

Итак, теперь мы знаем, что представляет из себя числительные переменные. Теперь второй тип переменных:
2. Булева
У булевых переменных всего два значения - true и false. Эту переменную можно представить как выключатель, у которого два положения - включить(true) и выключить
(false). Обычно этот вид переменных используют для обозначения того выполнил ли герой квест, есть ли у него такое-то оружие, и тому подобное. Вот запись, означающая, что у героя есть лазер:
Code

lazer = true

И последний тип переменных :
3. Символьные.
Символьные переменные содержат в себе какой либо текст. Их можно представить как запечатанное письмо. Текст, содержащийся в переменной должен быть в кавычках:
Code

kvest="Доставить письмо королю"  

Эта переменная отмечает, что переменная kvest находится в стадии "Доставить письмо королю".
Также любую переменную можно сделать глобальной - то есть она будет действовать на все объекты и все комнаты. Для этого перед переменной надо поставить приставку
global. и всё!
И ещё - каждую переменную нужно объявлять - прописать её значение в событии create (создания).
Вот мы и разобрались, что представляют переменные. Эта тема очень важна во многих языках программирования.
Операторы.
Самый важный в GML'е оператор if (если). То есть если выражение истинно то выполняется функция. Схема оператора if:
Code

if выражение  
{
функция
}

Это самый простой вариант использования этого оператора. В него можно так же внести
функцию обработки если выражение ложно. Для этого используют частицу else (иначе).
Вот пример:
Code

if money>0
{
show_message("У тебя есть деньги.")
}
else
{
show_message("У тебя нет ни гроша!")
}

Происходит проверка есть ли у героя деньги и вывод сообщений по результату.
Команды
Команды "говорят" компьютеру, что должен делать герой, монстр, пуля и т.д.
В языке GML очень много команд так что я перечислю только необходимые для нашей первой игры:
Code
move_towards_point(x,y,скорость) // двигаться к точке x, y с определённой скоростью.
instance_create(x,y,obj)
instance_destroy()

Думаю этого небольшого набора нам должно хватить.
Создание игры "Мясо"
Наконец мы можем при помощи полученных знаний создать игру! По названию игры видно что это будет мясная TDS (игра стрелялка с видом сверху).
Откроем Game Maker и заготовим спрайты (2D картинки):
1. Герой
2. Монстр
3. Стена
4. Труп монстра.
5. Пуля
Все спрайты должны быть повёрнуты вправо!!!
Создадим объект o_hero и назначим ему спрайт героя. Создадим событие создания
и во вкладке control перетащим иконку с листочком на рабочую область
(иконка ). Открылось окно ввода кода. Нам надо объявить в этом окне жизненно важные переменные:
Code

health=100 // 100 здоровья.

Теперь у героя есть 100 здоровья и 30 патронов. Далее научим героя ходить. В событии шага пишем код (опять перетаскиваем листочек):
Code
if keyboard_check(ord("W"))// если нажата клавиша W...
{y-=4} // ...переместится вверх на 4 пк.
if keyboard_check(ord("S"))
{y+=4}
if keyboard_check(ord("A"))
{x-=4}
if keyboard_check(ord("D"))
{x+=4}
image_angle=point_direction(o_hero.x,o_hero.y,mouse_x,mouse_y)// поворачиватся в сторону мышки.

А что такое image_angle=point_direction? Это означает что системная переменная image_angle (угол поворота) равна системной переменной point_direction (определённая директория). Немного отвлечёмся и создадим объекты o_monster, o_stena и o_pula.
Откроем опять объект героя и в событии столкновения с объектом o_stena напишем простой код:
Code

speed=0

А в столкновении с монстром:
Code

health-=4 // здоровье -4
speed=0 // чтобы герой не проходил сквозь монстра.

А в событии глобального нажатия мышкой пишем:
Code
instance_create(o_hero.x,o_hero.y,o_pula) // создаём пулю

И последнее, в событии "нет больше здоровья" поставим кнопочку "рестарт комнаты".
Уффф... Прописали героя.
Теперь пуля. Что должна делать пуля? Лететь к мышке! Ну и сделаем этот "полёт".
Откроем ивент создания пули и перетащив листочек пропишем код обеспечивающий полёт пули:
Code

move_towards_point(mouse_x,mouse_y,10)// движение к мышке.

На этом коде видно что вместо числового значения мы поставили переменную, отмечающую текущие координаты мыши. А в событии столкновения со стеной попробуйте сами сделать уничтожение пули. Так с пулей закончили!
Теперь монстр и его AI. В создании пропишем переменную здоровья:
Code

hp=50

А в событии шага его AI:
Code

if distance_to_object(o_hero)<=200
{
mp_potential_step(o_hero.x,o_hero.y,6,1)// движение к герою
}
image_angle=direction //поворот в сторону движения
if hp<=0
{
instance_destroy()
instance_create(x,y,o_over)
}


P.S. o_over это труп монстра.
Сделать его смертным можно добавив столкновение с пулей:
Code

hp-=10

Вот и всё! Вы создали TDS игру!
Исходник игры
Категория: Создание игр | Добавил: stalker5889 (21 Марта 2011) | Автор: Никита Марков
Просмотров: 33081 | Комментарии: 14 | Рейтинг: 4.3/26 |
Теги: GM, Game Maker, для новичков, Урок, GML, программирование, TDS, основы gml, основы, Изучение
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Курс GML. Часть 1 - введение.», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 141 2 »
+0-
14 camelotos32   (20 Мая 2018 13:42) [Материал]
camelotos32Отлично, буду учиться...
Спасибо! :)

+0-
13 Akopov   (26 Мая 2013 21:32) [Материал]
AkopovУрок супер, спасибо)

+1-
12 zaicev9797   (23 Ноября 2012 12:52) [Материал]
zaicev9797офигенский урок, особенно начало помогло.Пиши еще biggrin

+1-
11 fireday   (22 Ноября 2012 20:06) [Материал]
firedayПожалуйста, заливайте файлы на нормальные файловые обменники, без кучи рекламы и ожидания, например на http://rghost.ru/

+1-
10 goldsphere   (09 Января 2012 16:29) [Материал]
goldsphereКРУТО!Когда будет 2 часть?

+1-
9 as3011   (14 Июля 2011 23:20) [Материал]
as3011Молодчина, так держать!Респект!
Но лучше всё таки не для новичков, а для более опытных
А тут я согласен!

И я тоже.

+2-
8 TheApKoT   (08 Июня 2011 22:17) [Материал]
TheApKoTАвтор, проверь внимательно текст. Ты допустил немало ошибок.

+1-
7 Ltdima   (25 Апреля 2011 11:56) [Материал]
LtdimaCтатья очень интересна.Может,если смогу,попытаюсь сделать игру такую. happy smile

+3-
6 elis1112   (27 Марта 2011 14:12) [Материал]
elis1112Продолжай творить у тебя это хорошо выходит=)

+2-
5 AGENTX001   (27 Марта 2011 12:27) [Материал]
AGENTX001Да ты крут чувак(= Эх видел бы я ентот урок пол-года назад. В обшем молодец + заслужил.
Но лучше всё таки не для новичков, а для более опытных
А тут я согласен!

1-10 11-14
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Harfang 3D
  • Stencyl
  • DzQ
  • Core
  • DreamSDK
  • Arcade Game Studio
  • 3D Rad Rus
  • C4 Engine
  • Platinum Arts Sandbox
  • Metagam
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг