RedHelium RedHelium

Jusper, Планируется в стим, но под издательством кого-нибудь. На счёт портирования на мобильные платформы пока не планировал

Jusper Jusper

RedHelium,

Игра планируется на стим? Если на телефон, то пост-эффекты будут лагать как сволочь)

RedHelium RedHelium

Jusper, Также немного переработан персонаж, некоторые объекты окружения. Помимо этого планируется ещё добавление различных интерактивных предметов и дополнительная работа над дизайном уровня! Также есть дополнительные пост...

Jusper Jusper

Я большую разницу в работе со светом.
Не понимаю, наверное это еще постэффекты.

alexprey alexprey

А вот и результаты первого забега.

...
Dreaman Dreaman

TheDarkestRed,

Красивый и атмосферный получился :)

RedHelium RedHelium

alexprey, Спасибо, рад стараться :)

TheDarkestRed TheDarkestRed

Концепт арт лесной локации The Darkest Red 🎮 🌲 🌘

...
id66243826 id66243826

Первый трейлер игры, больше похоже на нарезку но все же =) Так же было выпущено обновление, и теперь есть возможность покупать персонажей.
Решил немного разнообразить механики, добавлены двери и ключи,...

...
alexprey alexprey

RedHelium, стиль необычайно хорош)

RedHelium RedHelium

Вновь взялся за свой проект под названием "Stalkmech". Понемногу начал перерабатывать уровни, а также интерфейс.
Моя группа ВК: https://vk.com/redheliumgames

Jusper Jusper

Закрепили с GenElCon успех боем на островной карте.

  • Против нас были: Турция и Россия (на сложности Невозможный)
  • Время ненападения: Отсутствует
  • ...
ruggaraxe ruggaraxe

alexprey, будем ждать фидбэк! Я надеюсь вы заметите множество улучшений! 😎

alexprey alexprey

Ура! Обязательно поиграем. Но блиииннн... Опять пауки... Арахнофобия и в играх не дает покоя 😂
Режимы это круто, мне не хватало лайт версия для побродить!

Jusper Jusper

alexprey,

надеюсь в мою хату завезут нормальный интернет и у меня получится постримить :D

Jusper Jusper

Перенес в проект, вместо раздела game-design. Завтра заценим, че как :)

alexprey alexprey

ruggaraxe, это вообще одна из моих первых игр, после дума конечно же 😂😂😂

Сейчас в стиме по скидосу, прикупил,надеюсь свезет и поучавствую в подобной движухе)

Jusper Jusper

ruggaraxe, они, собственно, и сделаны были на основе 1-й части, можно сказать энтузиастами студии, которые топили за геймплей первой части. Вторая радикально отличалась и темпом геймплея, и сложностью освоения...

ruggaraxe ruggaraxe

Крутяк! 15 лет назад была любимой стратегией. 3 часть выглядит круто, стиль такой же как и во всех первых частях.

Логотип проекта 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 (Текущая страница)

Как насчет такого:

scr_camera_create(resolution_width,resolution_height,scale_factor)
// переменные
globalvar camera, camera_lookat, camera_projection;
 
// переменные разрешения
globalvar res_width, res_height, game_width, game_height, scale_factor;  // scale factor should be set to a power of 2 as it divides the width/height by the scale factor
 
// Разрешение
res_width = argument0; 
res_height = argument1; 
scale_factor = argument2; // соотношение должно быть 2, 4, 6, 8, etc.  
game_width = res_width / scale_factor
game_height = res_height / scale_factor
 
// Камера
camera = camera_create(); // init the camera
camera = camera_create_view(0, 0, game_width, game_height, 0, self, -1, -1, game_width/2, game_height/2);
view_set_camera(0, camera);
camera_lookat = matrix_build_lookat(x,y,-10,x,y,0,0,1,0);
camera_projection = matrix_build_projection_ortho(game_width,game_height,1,9999);
camera_set_view_mat(camera,camera_lookat);
camera_set_proj_mat(camera,camera_projection);
view_camera[0] = camera;
 
obj_camera:
Create Event:
// Инит Камеры
 
scr_camera_setup(640,480,1);
camera_follow = obj_player;
 
xto = x;
yto = y;
 
xto = lerp(x,camera_follow.x,.1);
yto = lerp(y,camera_follow.y,.1);
 
Step Event:
// Скорость движения камеры
x += (xto - x)/32;
y += (yto - y)/32;
 
camera_set_view_pos(camera,-(camera_get_view_width(camera)/2)+x,-(camera_get_view_height(camera)/2)+y);
 
if (camera_follow != noone) {
    xto = camera_follow.x;
    yto = camera_follow.y;
}
 
// Центрирование камеры на цели
camera_lookat = matrix_build_lookat(x,y,-10,x,y,0,0,1,0);
camera_set_view_mat(camera,camera_lookat);
 
// keep camera in the room!
if (camera_follow.x <= 16) {
    camera_follow.x = 16;
}
if (camera_follow.x >= room_width - 16) {
    camera_follow.x = room_width - 16;
}
if (camera_follow.y <= 16) {
    camera_follow.y = 16;
}
if (camera_follow.y >= room_width - 16) {
    camera_follow.y = room_width - 16;
}
// Подрезание камеры только в рамках 1 Room
camera_set_view_pos(camera,
                    clamp( camera_get_view_x(camera), 0, room_width - camera_get_view_width(camera) ),
                    clamp( camera_get_view_y(camera), 0, room_height - camera_get_view_height(camera) ));
  • 1
  • 2 (Текущая страница)
Справка