danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

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

Создание игры-лабиринта

Предисловие

Всем привет!
Этот урок поможет новичкам немного продвинуться в создании игр в замечательной программе game maker
Ну, что же - начнём?

Создание героя

Итак, для начала создаём спрайты движения игрока - вправо, влево, вверх и вниз
Sp_P1, Sp_P2, Sp_P3 и Sp_P4
Далее создаём объект - Obj_Player

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

При нажатии клавиши "влево"
Движение влево = 4
Анимация Влево
При отжатии клавиши "влево"
Движение 0

Сделать для клавиш "Вправо", "Вверх " и "Вниз"
Движения героя готовы!
Создаём стены, ставим в объектах стен галочки на "Твёрдый"
Событие в игроке
При столкновении с Стеной
Движение 0

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Создаём выход
Событие в игроке
При столкновении с выходом
Если есть следующие уровни
{Переход на следующий уровень}
Иначе
{Таблица рекордов}

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Логическая составляющая

Какой лабиринт без головоломок?
Давайте создадим КЛЮЧИ и ДВЕРИ!
Для начала вводим глобальную переменную, обозначающую сколько у нас ключей
В событие для игрока "Старт игры" перетаскиваем иконку кода

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Тем самым вводим переменную key
Далее создаём дверь, прописываем игроку при столкновении с дверью остановку (как в событие со стеной)

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

код гласит:
Если количество ключей больше 0
{
Количество ключей = количество ключей - 1
Удалить свой объект
}

Далее создаём объект ключа, собрав который мы получаем... Ключ!
Создаём объект "Ключ" и пишем в событии при столкновении с игроком

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

И после удаление себя
Всё просто!

Враги

Но одними головоломками сыт не будешь...
Создадим врагов
Для начала - тупой враг!
Движение вверх - вниз, не обращая внимания на игрока
Создаём объект врага, и делаем следующее

Вот и всё)
Осталось настроить отнятие жизней у игрока
И так, для начала устанавливаем 3 жизни в начале игры

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Далее при столкновении с врагом отнимаем одну жизнь и перезагружаем уровень

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

И, если у нас меньше 1 жизни, показываем таблицу рекордов и перезагружаем игру

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Но этот противник скучный и несёт в себе очень мало опасности
Создадим что нибудь посерьёзнее
Например врага, идущего ЗА ВАМИ

И так, в событие врага "ШАГ" вставляем:

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

Враг идёт на координаты!
Вы прекрасны!
Но, допустим, наш враг должен смотреть куда идёт (Что логично)
Заставим его поворачиваться на координаты игрока
ВНИМАНИЕ, координаты спрайта врага должны быть точно ПО СЕРЕДИНЕ

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

ГОТОВО!

Очки, жизни и т. д.

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

Создание игры-лабиринта — Game Maker — DevTribe: инди-игры, разработка, сообщество

(Жирность, курсив и шрифт можно менять на свой вкус)

Далее создаём объект, который будит за всё отвечать
В нём, в событие Draw раскладываем иконки с рисованием

Вот и всё
Осталось разместить все объекты по комнатам и готово!

Файлы

Скачать исходник Gmk
https://devtribe.ru/files/100016/1000566/Fail.gmk

Скачать результат
https://devtribe.ru/files/100016/1000566/Fail.exe

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


Комментарии



  • 1 (Текущая страница)
  • 2

Пожалуйста, проверьте картинки. Они не открываются.

Normanof,

Пожалуйста, проверьте картинки. Они не открываются.

Проверяем, Спасибо.

Normanof, картинки исправлены, файлы для скачивания снова доступны.

Куда можно задать вопрос по поводу игры?
Как сделать так, чтобы карта двигалась за персонажем? т.е. персонаж - всегда в центре, а при движении в любом направлении, карта тоже двигалась так, чтобы персонаж снова оказывался в центре. (сделал карту больше 2000 на 2000 и пропорции стали плохими)

Normanof,

Куда можно задать вопрос по поводу игры?

Автор довольно давно не заходил.

Как сделать так, чтобы карта двигалась за персонажем

Через функцию view не пробовал?

Jusper, пробовал, но не добился нужного результата... появилась идея сделать окно игры, к примеру 1100х600 примерно, чтобы помещалось в экран и сделать пролистывание карты как в браузере например, и сделать это горизонтально и вертикально, чтобы мышкой можно было прокрутить вниз или вправо-влево, но вот это не знаю как реализовать...

Normanof,

чтобы мышкой можно было прокрутить вниз или вправо-влево

Если мышь двигает по принципу края экрана, то:

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


Вариант, когда мышь двигает камеру drag'ом:

Create:  dragging = false;
Step: 
if (dragging) {
    view_xview = view_xview + drag_x - mouse_x;
    view_yview = view_yview + drag_y - mouse_y;
    view_xview = max(0, min(view_xview, room_width - view_wview));
    view_yview = max(0, min(view_yview, room_height - view_hview));
}
Glob left pressed: 
dragging = true;
drag_x = mouse_x;
drag_y = mouse_y;
Glob left released: 
dragging = false;

Куда более правильно вставить код?

Normanof,

Куда более правильно вставить код?

Я не автор статьи, могу только подсказывать функции, которые знаю.
Вставь вот это в step event должно помочь, если я себе правильно представляю, что ты хочешь сделать.

if (mouse_x < view_xview+10)
    view_xview -= 15
if (mouse_x > view_xview+view_wview-10)
    view_xview += 15
if (mouse_y < view_yview+10)
    view_yview -= 15
if (mouse_y > view_yview+view_wview-10)
    view_yview += 15

Вот что у меня получилось:
Созданил объект obj_controller
Добавил событие Step, Код: view_xview[0] += 0;
Добавил объект в комнату
Включить использовать виды (Enable the use of Views на Views вкладке)
Набор Visible when room starts для View 0
Определил видимый квадрат

Что получилось в итоге: когда персонаж доходит до края, то край сдвигается, так и нужно, дошел до левого края, камера подвинулась, всё ок, но захотелось чтобы камера всегда центрировала изображение персонажа т.е. чтобы персонаж был всегда в центре камеры. Как это реализовать? в коде не силен
Вот скриншоты https://dropmefiles.com/BtBXU

  • 1 (Текущая страница)
  • 2
Справка