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

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

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