Суббота, 26.05.2012, 18:21


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

Меню сайта
Категории каталога
Создание игр [170]
Статьи об общих понятиях связанных с созданием игр
Движки и Гейммейкеры [85]
Статьи о программах для создания игр
Игры [39]
Статьи об играх, в том числе и сделанных на гейммейкерах
Софт [25]
Различные программы, в том числе в помощь игроделам
Разное [61]
Статьи, которые не вошли в определённые разделы
Наш опрос
Кто вы?
Всего ответов: 15578
Главная » Статьи » Создание игр

Курс 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.03.2011) | Автор: Никита Марков
Просмотров: 2230 | Рейтинг: 4.6/7
Теги: GM, Game Maker, Для новичков, Урок, GML, программирование, TDS, основы gml, Основы, Изучение
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Курс GML. Часть 1 - введение.», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями. Для этого воспользуйтесь предлагаемой ниже кнопкой:
Всего комментариев: 10
0  
10 goldsphere   (09.01.2012 16:29)
КРУТО!Когда будет 2 часть?

0  
9 as3011   (14.07.2011 23:20)
Молодчина, так держать!Респект!
Но лучше всё таки не для новичков, а для более опытных
А тут я согласен!

И я тоже.

+1  
8 TheApKoT   (08.06.2011 22:17)
Автор, проверь внимательно текст. Ты допустил немало ошибок.

0  
7 Ltdima   (25.04.2011 11:56)
Cтатья очень интересна.Может,если смогу,попытаюсь сделать игру такую. happy smile

+2  
6 elis1112   (27.03.2011 14:12)
Продолжай творить у тебя это хорошо выходит=)

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

0  
4 GameMix   (24.03.2011 17:22)
Хорошая статья для новичков. Молодец! thumb

0  
3 daGamer   (23.03.2011 23:45)
Да не, думаю полный курс будет кстати. Автор, молодец, продолжай smile

+1  
2 stalker5889   (22.03.2011 13:09)
А задумал целый курс, а это только введение.

+3  
1 Deniiel   (22.03.2011 11:59)
Но лучше всё таки не для новичков, а для более опытных,
потому-что все делают уроки для новичков, и их стало слишком много,
а вот если-бы ты написал например о там как применять физику в играх, это было бы многим полезно.
Но за проделанную работу +.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки по теме
Поиск
10 случайных движков
PixelLight
GameCore
Mezona
Horde3D
ezRPG
Odamex
GameBryo
Empty Clip
Aether3D
GZDoom
Друзья сайта
Игровой форум GFAQ.ru Перевод консольных игр Разработка игр в СНГ Loadka.ru – загрузка файлов Игорный бизнес в России Реклама и заработок
Все права сохранены. GcUp.ru © 2008-2012 Рейтинг