Разработка и ромхакинг > Разработка игр

Mega Man Nero (не рабочее не название)

(1/2) > >>

Eugen:
Собственно вот да. Внезапно вкатился в Game Maker Studio (старый, еще 1.4), нарипал спрайтов Зеро (кое-где пришлось из двух старых лепить новый, лол) и пытаюсь воссоздать движок серии игор Mega Man Zero и в то же время прикрутить к нему некоторые несвойственные ему фишки из DMC4. Собственно, из реализованного на данный момент у меня есть

Небоевой мувсет: бег, прыжки, дэш, дэшджамп, воллслайд, воллджамп, воллдэшджамп (идентичный натуральному), даблджамп. Еще можно просто стоять на месте.
TODO: гарпун-snatch с раскачкой на потолке и цеплянием за стены

Боевой мувсет: тройное наземное комбо, апперкот, апперкот с продолжением, тройное воздушное комбо (brand new хрень, которой не было в оригинальных играх линейки Zero) хелмкрашер.
TODO: стрельба с подобием автоприцела, несколько дополнительных комб наземных и воздушных, гарпун-snatch и взаимодействие врагов с ним.

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

Последний видосик: https://www.youtube.com/watch?v=6VBmqoFxpkI

ЗЫ: там же на канале есть несколькоо видосиков с неторопливым прогрессом, то добавил, сё добавил.

Жду ваших гнилых помидоров с нетерпением. Негнилых тоже жду, жрать же что-то нужно.

Werton:
Гнилой коммент: на 5ой секунде последний удар в прыжке явно вифает, да и после через раз :crazy:

Eugen:
Werton, а по-моему - не вифает. Просто у него взаимодействие другое же. Первые два - подбрасывают врага чуть повыше, третий - наоборот, отправляет вниз.
Проверил покадрово - не вифает.
Но в целом ты прав, хитбоксы меча еще править и править. Чтобы визуал с функционалом нормально совмещался.

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

Werton:

--- Цитата: Eugen от 28 Сентябрь 2018, 14:43:17 ---Werton, а по-моему - не вифает. Просто у него взаимодействие другое же. Первые два - подбрасывают врага чуть повыше, третий - наоборот, отправляет вниз.
Проверил покадрово - не вифает.
--- Конец цитаты ---
Может и не вифает, но выглядит именно так, хотя видно, что здоровье уменьшилось. Физика последнего удара не видна, надо чтобы тело ускорялось вниз или по диагонали, а сейчас выглядит как будто оно под силой тяжести просто падает, потому такое ощущение наверное :neznayu:

Eugen:
Werton, да, в этом ты абсолютно прав, поэтому я уже поправил - шарахнул ему ускорения побольше от третьего удара воздушной комбы.
Плюс там систему хитбоксов начал перерабатывать - начинает выглядеть уже лучше. Пришлось хитстан поделить на визуальный и актуальный. Визуальный - для того, чтобы враг корячился, когда его бьешь мечом, а актуальный - чтобы его хитбоксом цепляло только в определенных условиях.

Eugen:
ИИИи....
И таки особого прогресса пока нет, и работы впереди - целые вагоны.
Однако я могу сказать, что боевку, задуманную ранее, я доделал процентов на 90.
Все обычные атаки, которые я хотел добавить - я добавил. Подробности на кривом инглише в дескрипшене видео.


буду рад замечаниям-комментариям.

Sharpnull:
Eugen, я бы рекомендовал сделать тестовый уровень с разными врагами и выложить саму игру, если хотите больше комментариев, при условии что будут желающие.

Eugen:

--- Цитата: Sharpnull от 06 Апрель 2019, 15:57:35 ---Eugen, я бы рекомендовал сделать тестовый уровень с разными врагами и выложить саму игру, если хотите больше комментариев, при условии что будут желающие.

--- Конец цитаты ---

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

Eugen:
Заскочил, чтобы апнуть немножечко тему. Чем чёрт не шутит, вдруг кому интересно.

Разработка, чтоб вы понимали, движется черепашьими шагами: отчасти - потому что я один, отчасти - потому что я тупой, отчасти - из-за того что я прыгаю выше головы (это подпункт второго пункта да).

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

Добавил несколько твиков боевой системы. Теперь комбы можно "отменять". Это не совсем додж-оффсет из байонетты, но я пытался сделать нечто аналогичное. Суть в чем: теперь удар комбинации на кадрах рекавера можно отменить в дэш (или в бросок гарпуна), и потом - отменить дэш (или бросок гарпуна) в продолжение этой же самой комбы. Также теперь можно разворачивать комбы в произвольном направлении при очередном ударе. Добавил мелкий твик для гарпуна - теперь на враге, в которого полетит "почти-самонаводящийся" гарпун появляется кроссхейр.

Последнее, над чем работал - движущиеся платформы. Отдельно горизонтальные и отдельно вертикальные. Скажу так: после гарпуна - это самое сложное, над чем я вообще трудился для проекта, лол. Найденный в интернете туториал по горизонтальным платформам пришлось очень знатно дорабатывать для своих нужд, а вертикальные - вообще делать самому с нуля, ибо там немножко другой подход. И вертикальные еще предстоит немножко фиксить - они не очень хорошо взаимодействуют с гарпуном

Также - пара поздних видео


Globotronik:
выглядит неплохо, главное, чтобы самому создавать нравилось и пользоваться результатом
с удовольствием посмотрю играбельную демку, когда и если будет

Eugen:
Спасибо за отзыв)

Как только забацаю что-то отдалённо похожее на демку - обязательно запощу попробовать для всех желающих. Так-то у меня уже много проходных билдов накопилось, я даже спавнер базовый для тестеров запилил.

Буквально только-только что добавленное видео ещё, раз уж мне сегодня так поперло.
(с вертикальными платформами я возился больше недели, лол)

Eugen:
Запилил всё-таки afterimage (или trail-эффект), прям как было в оригинальном Зеро. Ну конечно же чуть иначе выглядит, и чуть иначе работает, но механически дело своё делает.

(попутно нашёл и пофиксил еще несколько багов коллизий и взаимодействия гарпуна с платформами)

Nereid:
Доделай  trail-эффект. А то странно смотрится, что при последующем касании объекта эффект мигом пропадает.
Какова цель проекта?

Eugen:

--- Цитата: Nereid от 26 Август 2019, 00:44:43 ---Доделай  trail-эффект.
--- Конец цитаты ---
Уже. Перекавардакал так, что трейл преследует персонажа до определенной точки, а потом исчезает постепенно (первый трейл исчезает, второй становится первым, третий вторым) и повторять пока все не исчезнут. Короче, трейл персонажа "догоняет" теперь.


--- Цитата: Nereid от 26 Август 2019, 00:44:43 ---Какова цель проекта?
--- Конец цитаты ---
Честно - определенной цели и нет. Во-первых - захотелось поизучать гамак (ну и подход к геймдизайну в целом), во-вторых - вдруг из этого на выходе получится что-нибудь адекватное, вроде фан-игры, или, чем чорт не шутит, очередной индиподелки.
Ну и мне всегда было интересно смешать мегаменский платформинг с дмэсишной боевкой.

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

А еще выяснил, что прошлая реализация движущихся платформ была сломана настолько, что спавн более чем 30 врагов заставлял двумерную игру проседать. И память утекала.

Утечки памяти починил не без помощи англоязычных ребят, а вот с оптимизацией платформ было сложнее.

Там всё было немножко проклятовато: для нормального определения коллизий требовалось, чтобы в степе обычных платформ тоже выполнялись проверки этих самых коллизий. И когда таких платформ на экране много - ну, сами понимаете. К счастью, я сумел от этого полностью избавиться, и скорость комнаты остаётся стабильной при спавне до 120 врагов. Дальше уже, конечно, могут начаться просадки, но к чему мне на экране более 120 (если уж на то пошло - больше десятка) врагов одновременно? Абсолютно низачем, но стресс-тест провести надо было. Успех короч. Сам создал проблему, сам ее решил.

Короче, видосик с нормальным трейлом.

Eugen:
Небольшой апдейт. К сожалению, визуально тут особо смотреть не на что, поэтому видосик - чистая формальность. Немножко почистил спрайты, немножко пофиксил баги. И очень-очень-очень сильно улучшил поведение (и перфоманс игры, кстати) движущихся платформ - теперь они работают максимально "чисто" и так, как это нужно мне.

И у гарпуна теперь есть почти нормальная цепочка, лол.


А еще у врагов есть лайфбары собранные из двух прямоугольников.

Eugen:
Видео покрупнее - на целых шесть минут.

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

Год работы, да.

В описании ссылка на экзешник, который можно прям пощупать.

Sharpnull:
О, первый билд. Можно чуть подробностей по реализации платформ? Когда-то давно на Unity их часто реализовывали через установку персонажа как дочернего элемента платформы. Я заметил, что вы сделали проверку столкновений платформ с другими объектами, но в таких играх как мне кажется просто заранее задаются пределы движения и столкновения обрабатываются только с персонажами (через матрицу коллизий, например). Ваш подход необходим только если вы хотите чтобы платформы могли то сталкиваться, то проходить, даже в этом случае можно исключить проверку со статическими платформами, пересчитав пределы движения движущихся платформ при добавлении на уровень.

Eugen:

--- Цитата: Sharpnull от 25 Сентябрь 2019, 17:50:02 ---Можно чуть подробностей по реализации платформ?

--- Конец цитаты ---

Да без проблем. Можно на "ты", я не кусаюсь, правда-правда  :)

а) статичные, недвижимые платформы - ничего не просчитывают. Никакого кода, никаких проверок. Их слишком много, и исполняемый код в таком количестве объектов (даже самый простой) превратит производительность в тыкву. Все коллизии движущихся объектов с неподвижными - обрабатываются со стороны движущихся объектов.

б) Матрицу коллизий я не использовал. Как сказал выше - все коллизии обрабатываются со стороны **движщухися** объектов. Бейсикалли, каждый движущийся объект движется одновременно по двум осям - по иксу и по игреку - с какой-то скоростью (ну естессна, если с нулевой, то он по этой оси не движется вовсе). Когда объект движется по вертикали - он проверяет перед собой наличие "твёрдых" предметов (y+vertical_speed) Если в пределах y+vsp есть такой объект - то он к нему "подкрадывается", пока не подойдёт на расстояние одного пикселя. Код очень простой, я его брал из туториала Спалдинга.

Пример кода вертикальной коллизии:


То же самое (но немножко сложнее) для горизонтальных коллизий. Ну, там еще доп.скорость платформы, на которой игрок "стоит", но в целом, идейно - то же самое.

ц) Сложнее, когда движутся оба объекта (и игрок и платформа). Тут уже приходится извращаться. У меня движущаяся платформа (любая) каждый кадр формирует для себя список объектов, которых она касается. Этому списку объектов она передаёт нужную инфу (к примеру, дополнительную скорость или же просто координаты). Если интересует, могу код приложить, потому что описывать словами его - немножко не мой конёк, получается сумбурно.

Sharpnull:

--- Цитата: Eugen от 25 Сентябрь 2019, 19:59:17 ---Если интересует, могу код приложить
--- Конец цитаты ---
Если не сложно.
Насчёт instance_place(), в доках написано, что если не нужен id, использование place_meeting() будет чуть быстрее.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии