Dreaman Dreaman

Mariya, законченный вариант реально классно выглядит! Молодец :)

Mariya Mariya

Всем привет!
Сегодня хочу показать законченный вариант домика Сырны.

alexprey alexprey

StarPlosion: Битва с пиратами за планету

Wings' might Wings' might

Всем привет)
Добавил на этой неделе начальное окно, новую валюту и достижения:

alexprey alexprey

shadeborn, может быть они нашли способ как обойти полноценный запуск этих сервисов при запуске игры? Если так, то почему бы и не использовать единый клиент?) В любом случае, чем дальше все идет, там это все больше становится похоже на эту шутку

...
shadeborn shadeborn

Это всё круто, но...зачем? Ок есть Стим. Хорошо, теперь еще и ЕГС есть. Благо, комп не зашкварен Оригином...но у людей и он стоит. И для работы игр внутри этих сервисов нужны, собсно, эти сервисы. Так поверх этих сервисов нужно накатить еще один...

Devion Devion

согласен, есть кейсы которые без них вообще не делаются, не знать или избегать их определенно неправильно

Так точно, либо любое изменение в объекте на стороне редактора.

alexprey alexprey

Devion, только рад за дополнение, Спасибо)

хм, а вот это интересно, не пробовал никогда такой кейс.

Devion Devion

лёш, ты же не против если я дополню? )

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

Mariya Mariya

Всем привет!
Начали работу над мебелью в домик Сырны, и первым сделали чайный столик с чайным сервизом. А так же продолжаем работу над анимациями.

Wings' might Wings' might

Всем привет)
За неделю в игру было добавлено меню настроек, переделана старая локация, добавлены новые враги и повышена производительности

alexprey alexprey

А мне кажется это такой особый хитрый ход, хотя с другой стороны как разработчики успеют к этому подготовиться получше 🤔

Dreaman Dreaman

Всем привет!
Для проекта "Mental State" разработано новое устройство, которое уже полностью функционирует внутри игрового мира. Оно носит название "Репульсивер". Совместно с очередными большими воротами это устройство образует новую головоломку...

...
Mariya Mariya

Всем привет!
На этой неделе мы научили Сырну летать!

Tartal Tartal

alexprey, кастомизации - создание внешности персонажа? Я всегда любил это, но не думаю, что это будет к месту в мясном шутере)
EfimovMax, да, есть немного)

Tartal Tartal

Jusper, точно не помню, уже как полгода точно) Я вроде в Дискорде немного обсуждал эту тему. Пока немножко попробовал движок - мне очень нравится. Ну, в конце концов, он идеально подходит под жанры, с которыми я хочу работать...

alexprey alexprey

Первая тема крутая очень!

Логотип проекта Game Maker

GM:S Заскриптованное движение и его запись

Что такое заскриптованное движение?

Начнём с того, что заскриптованным может быть не только движение. Скрипт - это английское слово(script) и переводиться оно как сценарий. Эти самые сценарии хранят информацию о всех событиях, которые поджидают игрока при прохождении игры. Заскриптованное движение - движение по определённому маршруту. В этой статье мы будем реализовать как само чтение этого маршрута, так и его запись во время игры.

Теория

Вспомним уроки информатики. Какие бывают алгоритмы?

  • Линейные
  • Ветвистые
  • Циклические

Только сравнивать скрипты со сценариями из оперы/балета не стоит, а то может образоваться мнение, что все скрипты представляют собой линейные алгоритмы. Скрипт может циклиться и иметь условия. В нашем случае мы будем использовать ветвисто-циклические алгоритмы(кто запретил их комбинировать). Нам понадобится некая таблица. Строками будет координата x, а столбцами y. А в ячейках будет записана информация о движении в этих координатах. Мы будем двигать машинки. Когда они будут в указанных координатах, они возьмут из ячейки направление и будут ему следовать. Поехали!

Практика

Заранее подготовим спрайты машинок и добавим в проект.

GM:S Заскриптованное движение и его запись — Game Maker — DevTribe: Разработка игр

Теперь создадим комнату. Мы будем использовать виды. Размеры комнаты и её вида не важны, но я буду использовать стандартные размер вида и в несколько раз увеличенные размеры комнаты.

Теперь можно перейти к объектам. Для начала создадим таблицу. Для неё мы будем использовать отдельный объект. Назовём его md(у меня проблема с названиями :D). Создадим событие создания и засунем туда следующий код:

//Создаём координатную сетку размером с комнату
dir=ds_grid_create(room_width,room_height);

//Устанавливаем всем ячейкам сетки значение false
ds_grid_add_region(dir,0,0,room_width,room_height,false);

Вы наверное офонарели. Какая координатная сетка? Мы разве не таблицу создаём?
-Да. Мы создаём таблицу
Таблица это способ структурирования данных. Она представляет собой систему ячеек, каждая из которых находится на пересечении столбца и строки. Если подумать, то каждая ячейка помимо хранящегося в ней значения имеет ещё две величины. Это столбец и строка на пересечении, которых находиться ячейка. Так вот в нашем случае этими величинами будут x и y.

Сделаем несколько переносов строки(а то я сам запутался) и продолжим. ds_grid(координатная сетка) это тип данных в gms. Это некая сетка разбитая на ячейки, которые находятся между координатами x и y. Её может заменить и двумерный массив, но мы будем использовать именно ds_grid, т.к. она содержит ряд нужных нам функций. А вот их их описание:

Создаёт координатную сетку и записывает её идентификатор в переменную, который понадобится нам для операций с этой сеткой

переменная=ds_grid_create(ширина,высота);

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

GM:S Заскриптованное движение и его запись — Game Maker — DevTribe: Разработка игр
ds_grid_add_region(идентификатор сетки(или переменная содержащая его),x 1 точки,y 1 точки,x 2 точки,y 2 точки,значение);

Получает значение в указанных координатах

переменная=ds_grid_get(идентификатор сетки,x,y);

И бонусом переменные room_width и room_height это ширина и высота комнаты.
Теперь как сетка создана и всем ячейкам прописано false, можно приступать к созданию машинок.
У нас будет два состояния машинки:

  • Обучение(Запись)
  • Практика(Воспроизведение)

Создадим объект car_edu. Это обучающее состояние машинки. Я использую чуть ли не самую простую систему перемещения, т.ч. комментировать её не буду. Самое интересное ждёт нас в событии движения. В нём мы напишем:

ds_grid_set_region(md.dir,x-64,y-64,x+64,y+64,direction);

И вы должны были узнать, ds_grid_set_region и думаю без труда поймёте, что он тут делает. А он здесь записывает текущее направление в ячейки региона 128x128 центром которого является машина. Теперь при езде наш ученик записывает в ближайшие ячейки сетки своё направлению. Его будет читать второе состояние и следовать ему. А вот и пришло время создать объект для него. Назовём его car_test.
В Step пишем достаточно простой код(половиной которого являются комментарии):

/*
Если в текущей координате сетки не записан false
меняем направление на то, что там записано
*/
if ds_grid_get(md.dir,x,y)!=false
{
    direction=ds_grid_get(md.dir,x,y)
}

Теперь машинка меняет своё направление на значение записанное в ячейке с текущими координатами.
И конечно не забываем поставить ей скорость:

speed=15;

Для смены состояния будем использовать instance_change

instance_change(car_edu,true);

Второй параметр, это сохраняет ли объект переменные.
Последний штрих, это поставить объект с обучающим состоянием машинки в комнату, закрепить за машинкой вид и поставить какой нибудь фон, какую нибудь дорогу. Рекомендую скачать исходники и ознакомиться с системой движения и сменой объектов. Это был мой первый опыт в написании статей. Не судите строго, критикуйте конструктивно. Прошу извинить за возможные пунктуационные ошибки. Всем спасибо за внимание!

GM:S Заскриптованное движение и его запись — Game Maker — DevTribe: Разработка игр

Исходник

DropBox
Google Drive
Яндекс. Диск

Здесь еще никто не оставил комментарий