Dreaman Dreaman

Jusper, спасибо! Рад, что понравилось :)

Dreaman Dreaman

В новом помещении космической станции появилось очень важное устройство. По своей сути оно является энергетическим реактором, снабжающим станцию энергией.

...
iRediKurou iRediKurou

Jusper, UE сам движок увесистый это да. При билде требования на много ниже, но если болт забить то видюху пожгет тоже.

Блюпринтами можно реализовать самую элементарную логику. В проекте на С++ можно делать ноды для блюпринтов...

...
Jusper Jusper

С учетом того, каждая поделка на Unreal лагает как тварь если у тебя не топ PC, я бы тут поспорил. Без скиллов оптимизации все это графонистое будет играться только на топовом железе, а поверь, владельцы топового железа будут играть в блокбастеры...

...
iRediKurou iRediKurou

Jusper, если коротко: Unity ушла не туда по развитию.

Если подробнее:

  1. XYZ на курсе GameDesing на обучении используется UE. Потому, что он на много удобен для прототипирования (очень много из коробки).
  2. ...
Jusper Jusper

iRediKurou,

А чем, кстати, Unity не пошла?

iRediKurou iRediKurou

Ynomomento, Добрый день. Переносим игру с Unity на UE4. Потестировать прототип без сервера можно будет всем. Сейчас переписываются игровые механики и делается OutBlock. Подробнее на странице группы в ВК...

Ynomomento Ynomomento

Здравствуйте! можно ли уже поиграть в этот шедевр?) какими либо способами

Jusper Jusper

6 ударов в колокол и 1 крик Вильгельма.
Slash Polygon снова с вами.

Jusper Jusper

Я не до конца уверен, но, вероятнее всего, у тебя каждый раз определяется переменная enemy_hp = 100, потом ты от нее отнимаешь 20 и получаешь всегда на выходе 80. Оператор отрабатывает каждый раз, но при это значение переменной берет дефолтное ...

ternox92 ternox92
Мой новый интерфейс
Мой новый интерфейс
...
ondadesign ondadesign

Я купил, ща буду проходить))))))))))))))))
Если честно, привлекла музыка из трейлера)

Dreaman Dreaman

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

TheDarkestRed TheDarkestRed

Позвали дракона на вечеринку 🎮 🥳 🔥 🐉

https://vk.com/the_darkestred

TheDarkestRed TheDarkestRed

Поработали над окружением 🎮 🏛
https://vk.com/the_darkestred

Zemlaynin Zemlaynin

alexprey, не, все на Java у меня.

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
Яндекс. Диск

Смотрите также:


Комментарии

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

Справка