russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 212»
Форум ромхакеров » Около темы » Геймдев » В разработке скролл-шутер на SMD (Sega Genesis)
В разработке скролл-шутер на SMD
TLTДата: Понедельник, 23.01.2017, 14:03 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Так уж получилось, что мой проект экшен РПГ, который я планировал ранее в соседней ветке, разросся до такой игры, которую мне не осилить за пару лет. Он состоит из нескольких частей, включающих в себя эпизоды в жанре SHMUP, платформера и головоломки с диалоговыми квестами. И я решил разделить игру на несколько частей, в первой я реализую SHMUP и магазин с улучшениями, а во второй или третей объедению его с платформером. Т.е. это будет серия игр, которая усложнится от части к части, и вторая-третья часть будет именно тем, что я изначально планировал.

А этот топик посвящён разработке первой части – скролл-шутер с элементами RPG, типа модификаций и магазина между миссиями. Будет выбор миссий, разные корабли на выбор, виды оружия, разномастные противники и боссы.

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

Стадия развития:

Сейчас делаю движок, базовые функции. Рисую в основном пока сам, музыку я заказал у одного хорошего человека, он её уже написал и продал мне. Позже я сделаю титры и укажу его. Сам музон уже мною сконвертирован в нужный формат и вставлен, протестирован на мощном звуковом движке v2 от Стефа. Всё авторское и специально для проекта!

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

Графон будет отличаться полной картинкой как в Metal Slug, насколько позволяет SMD. Спрайты будут крупные (имеется в виду, что объекты будут состоять из больше чем одного спрайта, максимальный размер которых на SMD – 32x32 пикселя), многослойность фонов, эффект параллакса, крутые партиклы и пр. Это всё я делаю впервые, даже спрайты на SMD я юзал лишь пару раз при разработке мини-игры в статичной визуальной новелле. Посему я тут буду ещё и обучаться по ходу.

Игра планируется к изданию на картриджах, поэтому я её разрабатывать буду примерно год, если всё будет нормально. А затем я отдам права издательству, которое ещё найти нужно будет, оно выпустит карики, а затем уже примерно через год будет выпущен ROM или его к тому времени уже кто-то задампит. Поэтому не обижайтесь, что проект закрыт на стадии разработки. Но скриншоты, видео и, вероятно, демонстрационные ROM’ы я буду выкладывать тут.

Всё делается для себя в свободное время от основной работы, которая меня убивает и не даёт сил и времени на это творчество => проект будет развиваться по полчаса в сутки, медленно. К тому же я уже сильно стар и ленив стал, всё же 29 мне, не так много рвения, как в юности. Но тогда было меньше умений и знаний.

У меня уже есть рабочий прототип! На днях выложу скриншоты.



Вот так.
 
TLTДата: Понедельник, 23.01.2017, 23:55 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Скрины тестирования разрешения 32CELL-DOUBLE 32CELL-INTER (т.е. 256x224 пикселя)



Скрины первого уровня с фоном, игроком и объектом противника - астеройд.


Прикрепления: 4853739.png(6Kb) · 5310482.png(11Kb) · 3387225.png(17Kb) · 5150828.png(17Kb)



Вот так.
 
TLTДата: Вторник, 24.01.2017, 19:55 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Что на данный момент сделал:

Вставил графику корабля героя.
Интегрировал звуковой движок.
Добавил систему анимации корабля при манёврах вниз/вверх.
Сделал анимацию огня из движка, вставил на таймер.
Откорректировал границы экрана для спрайта корабля игрока.
Изменил тайл пули и прочие тайлы по мелочи.
Конвертировал и вставил 4 музыкальных трека + 2 вариации.
Для удобства изменил код подгрузки той или иной мелодии.
Добавил дополнительные кадры анимации огня двигателя корабля.
Исправил проблему не возврата в исходную позицию, убрав не нужную функцию.
Поменял местами анимацию манёвров вверх/вниз.
Переназначил размещение спрайтов и фонов в памяти.
Нарезал, добавил и прописал задник для первого уровня.
Нарезал разновидности спрайтов астеройдов, загрузил в ROM, прописал.
Сделал коллизии, реакцию и движение первого астеройда.
Заменил задник первой стадии на планету.
Добавил параллакс скроллинг для переднего фона.
Сделал зачатки паузы.
Сделал основу для уничтожения и взрыва корабля игрока.
Переделал частицы взрыва 64x64 и палитру, нарезал на 4 спрайта по 32x32.
Сделал таймер и анимацию взрыва корабля игрока.
Добавил тайлы мусора для переднего слоя параллакса, доделал расположение и смещение.
Реализовал расписание событий, доработал метки с указанием минуты и секунды. Таким образом, через 59 минут события пойдут по новому кругу, но этого не должно быть, т.к. уровни будут примерно по 3-5 минут.
Добавил в расписание начальный вылет корабля из-за левого края экрана, после чего включается управление и следуют дальнейшие события, стартуют противники и пр.



Вот так.
 
TLTДата: Вторник, 31.01.2017, 15:47 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Пока показывать нечего...

Ченджлог:

Переделал загрузку спрайтов. Как понял, их лучше в начале сцены создавать и скрывать за границами экрана и в нужный момент перемещать на нужную позицию, а не уничтожать и создавать заново на нужное действие. Иначе возникают артефакты и непонятным образом некоторые спрайты получают свойства других, чем запускается цепочка багов.
Наконец-то обошёл баг – взрыв повторяется по нажатию кнопки
Исправил баг с переполнением спрайтов после взрыва.
Исправил баг пуля не летит.
Исправил баг пули - невидна.
Добавил эффекты чёрных палитр для затемнения всего и манипуляций с этим, когда не видно.
Сделал тоже самое с белой палитрой – для переходов пригодится.
Немного изменил загрузку сцены уровня.
Добавил в расписание появление большего количества мусора для переднего параллакс слоя.
Сделал и нарезал куски спрайтов 64x64 анимации взрыва астероида, прописал в ROM.
Прописал адреса спрайтов и сделал воспроизведение анимации взрыва астероида.
Немного откорректировал в некоторых моментах уничтожение спрайтов.
Нарисовал и добавил вторые варианты всех спрайтов 8, 16, 24 и 32 пикселя габаритами, чтобы использовать радомные варианты для видимого разнообразия.
Сделал рандомизацию загрузки спрайта астероида 32x32 - выбирается из двух вариантов при старте или при залёте астероида за левый край экрана.
Реализовал спрайт A24 – астероид 24x24 и все моменты, связанные с этим.
Сделал переменную для типов разлёта спрайта взрыва астероида: если большой, то больше, если меньше, то меньше.
Реализовал спрайт A16 – астероид 16x16 и некоторые моменты, связанные с этим. Осталось настроить.
Нарисовал и добавил ещё вид корабля игрока, сделал функцию для будущего выбора. Теперь всего 2 корабля.
Нарисовал и добавил ещё вид корабля игрока. Теперь всего 3 корабля. Достаточно для игры.
Подправил общую палитру корабля и астероидов, чтобы один из градиентов был виден, не сливался с другим цветом.
Реализовал спрайт A8 – астероид 8x8 и некоторые моменты, связанные с этим. Осталось настроить. Осталось ему и другим отладить хитбоксы.
Исправил баг с пропиской спрайта астероида 8x8, заменив адрес.
Отладил столкновения с астероидами 8x8, 16x16, 24x24.
Заменил тайл пули, изменил её габариты столкновения с астероидами 8x8, 16x16, 24x24, 32x32.
Заново нарезал и добавил в графику спрайты для астероида 40x40, 48ч48.
Реализовал спрайты A481, A482, A483, A484 – астероид 48x48 и некоторые моменты, связанные с этим. Осталось ему отладить хитбоксы.



Вот так.
 
TLTДата: Вторник, 31.01.2017, 21:55 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Начал тестировать через флешку на приставке, но теперь у меня флешка показывает экран с надписью: "48K Line 1111 Emulator (START:reset)". Это после всовывания её в SMD1 Euro. Сейчас ищу решение, неужели флеш-картриджу кирдык пришел.


Вот так.
 
TLTДата: Четверг, 02.02.2017, 23:54 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
В общем, возникли проблемы:

Флешка, судя по всему не сгорела, но как-то неправильно прописалась часть ОС и теперь это никак не исправить - в любом случае, я не знаю как это можно исправить без перепрошивки, а она делается из ОС => нужно менять или перезаписывать чип. У меня нет таких возможностей. Вот так, значит, потестил на MD1.

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

Короче, сейчас нужно будет найти баксы на флешку, и думать что-то с коллизиями.



Вот так.
 
neznajkaДата: Воскресенье, 05.02.2017, 15:16 | Сообщение # 7
Подполковник
Группа: Проверенные
Сообщений: 134
Статус: Оффлайн
TLT, А оживить старую точно нет возможности?
Может стоит попробовать вскрыть ее и посмотреть что внутри?
Вдруг выйдет самостоятелььно восстановить с минимальными затратами.
 
TLTДата: Воскресенье, 05.02.2017, 18:16 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Цитата neznajka ()
А оживить старую точно нет возможности?Может стоит попробовать вскрыть ее и посмотреть что внутри? Вдруг выйдет самостоятелььно восстановить с минимальными затратами.


Даже производитель Кризз не знает как это исправить ""48K Line 1111 Emulator (START:reset)"" и на форуме у него я видел тему, где он просит прислать ему обратно на замену, если годовая гарантия не кончилась. У меня само собой, такой гарантии давно нет. Она у меня и так в виде PCB открытой. Что там вскрывать-то? Только если отпаять что-то... Придется покупать. Вот только денег пока нет на это. Через месяц куплю, возможно.



Вот так.
 
TLTДата: Воскресенье, 05.02.2017, 18:18 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Добавил в сцену код сбора A+B+C+Start для удобства в некоторых случаях.
Реализовал систему попаданий для астероидов 40x40 и 48x48, поставил 2 и 3 попадания, соответственно.
Реализовал систему столкновений с игроком без уничтожения астероида для вариантов 40x40 и 48x48.
Добавил отличия начала анимации взрыва.
Полностью реализовал и протестировал столкновения для 40x40 и 48x48.
Теперь готово 6 видов астероидов, способных быть одновременно на экране. Осталось привести всё к единому формату для удобства, а также откорректировать координаты и прочие мелочи.
Доработал все астероиды, кроме 8x8.
Заменил пулю игрока на блинный лазер. Был 8x8, стал 32x8.
Увеличил длину обнаружения пули, благодаря чему обошёл проблему с пролётами пули сквозь мелкие объекты из-за скорости смещения объектов.
Переделал пулю на прозрачную.
Нарезал спрайт астероида 128x128 на 16 кусков 32x32, загрузил в ROM.
Загрузил в память спрайты гигантского астероида, реализовал спрайт и его основные функции и переменные.
Осталось сделать столкновения игрока и пули с большим астероидом.
Переделал фон, разрезав его на куски, высвободив 120 тайлов.
Доработал фон, сделав дорисовку звёзды из имеющихся кусков для того, чтобы не было пустых пространств.

Прикрепления: 1044951.png(24Kb) · 3279229.png(11Kb)



Вот так.
 
neznajkaДата: Воскресенье, 05.02.2017, 20:47 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 134
Статус: Оффлайн
TLT,

С моим зрением и монитором заметил там только плис из того что можно перепрошить. рядом место под разъем. Вполне возможно что для этих нужд. Можно уточнить по документации и ножкам. Если не ошибаюсь то устройства для работы с плис от альтеры вполне доступны. Байтбластер или както так назывались если память не изменяет.

В игре отстреливать нужно будет только астероиды ?
 
TLTДата: Воскресенье, 05.02.2017, 22:36 | Сообщение # 11
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Цитата
В игре отстреливать нужно будет только астероиды ?


Нет, естественно. Это первый обучающий уровень. Враги с пулями появятся дальше...



Вот так.
 
TLTДата: Четверг, 09.02.2017, 02:13 | Сообщение # 12
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Вместо флеш-карика заказал программатор и пару платок – пока попользуюсь этим вариантом.

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



Вот так.
 
TLTДата: Пятница, 17.02.2017, 23:43 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Сделал коллизии большого астероида из 5 прямоугольных хитбокса.
Сделал поведение большого астероида.
Сделал уничтожение A128, осталось сделать куски для продолжения.
Доработал расписание уровня для динамической подгрузки тайлов и расстановки кусков спрайта A128.
Исправил баг A8, когда один тайл прописывался 4 раза.
Добавил клон A82, скопировал все функции.
Добавил клон A32 – A322, скопировал все функции.
Нарисовал спрайты A323, A324, A325 по 2 варианта каждый.
Реализовал в игре спрайты A323, A324, A325.
Задал особые поведения A322 и A324 – падение поперёк: вверх и внизу.
Сгенерировал спрайты партиклов для взрыва синего и золотых астероидов.
Нарезал 2 новых вида частиц для синих и золотых астероидов на спрайты по 32x32, по 15 кадров на 4 куска = 60x2.
Модифицировал код типов взрывов.
Вставил новые спрайты в ROM.
Включил анимацию новых взрывов.
Сместил начальные координаты всех спрайтов ниже экрана, учёл это в сценарии появления спрайтов, задав там не только включение, но и выставление начальной позиции.
Нарезал и загрузил графику астероидов A56, A562, A64, A642.
Изменил координаты спрайтов взрывов после окончания анимации, чтобы оптимизировать.
Доработал расписание, добавив к с условиям таймера не только учёт минуты и секунды для действия, но и фрейм, чтобы действие не происходило 60/50 фреймов, тем самым замедляя систему.
Сделал код разлёта гигантского астероида на куски.
Настроил босса (большой астероид) и расписание на весь уровень – 3 минуты геймплея.
Нарисовал графику/спрайты босса и нескольких кораблей с вариантами выстрелов для ещё одного уровня.
Протестировал уровень, оптимизировал расписание и появление элементов.
Исправил несколько мелких багов и недосмотров.
Добавил проверку сложности и поставил дополнительный астероид, если уровень сложности будет выбран выше Normal.
Исправил баг, когда пуля была поверх гигантского астероида.
Решил проблему: Если астероид не успел зайти за левый край и игрок постоянно его стреляет, то он не исчезает.
Основательно переделал систему появления противников и их удаление, что теперь зависит от задаваемого количества появлений. Когда заканчивается, становится 0, то спрайт удаляется и его можно будет включить вновь задав количество появлений в таймере.
Добавил шрифт для отображения дебаг параметров в Паузе.
В очередной раз переделал инициализацию спрайтов. Не пойму, почему спрайты глючат, если их сделать во время игры. Приходится делать оные в начале загрузки уровня и скрывать. Видимо, какие-то упущения в BEX или я не знаю тонкостей.
Ускорил гигантский астероид.
Исправил проблему, года при разлёте вверх, спрайты кусков гигантского астероида исчезают на несколько пикселей раньше границы.
Сделал расписание уровня на 1 минуту 30 секунд с учётом босса.
Сделал код вылета корабля из сцены после окончания уровня.

Уровень 1 практически готов, нужно только тестировать и исправлять недочёты, которые могут выявиться. Запарился с этими непредвиденными проблемами. Пора заняться меню гаража.



Вот так.
 
TLTДата: Четверг, 23.02.2017, 23:51 | Сообщение # 14
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Сделал локацию магазина, где можно будет настраивать корабль, менять корпус, движок, оружие и пр.
Сделал курсор и управление им в комнате магазина.
Добавил спрайт корабля.
Нарисовал графику 6 блоков: движок, броня, закрылки, дуло пушки, задняя пушка, нижняя пушка. Эти блоки можно будет докупать и улучшать, и значат они, соответственно, следующие параметры: скорость, манёвренность, броня, скорострельность, возможность стрелять назад, возможность стрелять вниз.
Нарисовал графику обода монитора.
Нарисовал варианты выстрелов на выбор в магазине.
Сфотографировал руку, обработал и сделал 27 спрайтов для отображения руки в полном размере в качестве курсора, чтобы визуальном выбирать пункты на экране рукой.
Доработал палитру руки.
Исправил ряд мелких багов.
Отрисовал корабли.
Вставил графику видов оружия и отрисовал.
Вставил графику модификаций и отрисовал.
Дорисовал дополнительные элементы монитора, вставил и отрисовал.
Доработал палитру руки – добавил ещё 5 цветов для фона и прочих выделений фона.
Нарисовал тип 5 пули, тип 7 модификации, вставил, отрисовал.
Изменил расположение элементов на экране монитора, добавил надписи.

Прикрепления: 4610265.png(78Kb) · 4072543.png(20Kb) · 5728903.png(10Kb) · 2701319.png(8Kb) · 0842885.png(22Kb) · 7005141.png(21Kb)



Вот так.
 
TLTДата: Понедельник, 06.03.2017, 23:10 | Сообщение # 15
Генералиссимус
Группа: Администраторы
Сообщений: 1615
Статус: Оффлайн
Сделал дизайн фона экрана гаража – выбора корабля, оружия, модификаций.
Переделал некоторые мелкие элементы и устранил недочёты на экране гаража.
Сделал выбираемость пунктов меню: типы кораблей, оружия, модов.
Нарисовал и добавил на экран с монитором мелкие элементы декора и значки: очки, скорость, броня, манёвренность.
Нарисовал и добавил графику выстрелов.
Сделал варианты выстрелов из оружия для стрельбы. 5 шт.
Подкорректировал габариты выстрелов, добавив специальные переменные и вставил их в просчёт коллизий.
Изменил третий вариант пули на тройной, но не разлетающийся.
Добавил для адресной очистки спрайтов, чтобы не возникало ошибки лимита спрайтов при рестарте уровней. Дело в том, что функция очистки конкурентного спрайта или функция очистки всех спрайтов срабатывает только тогда, когда спрайт на экране 320x240. А у меня движок таков, что уничтожать спрайты нужно, когда они выехали за экран.
Добавил просчёт коллизий на 1, 2, 3 пули при попадании в каждый объект.
Разделил некоторые свойства врагов на модульную подгрузку в разные моменты одного и того же куска кода.
Переделал очередь стрельбы, но в некоторых случаях всё ещё возникают проблемы с появлением ускоренных пуль или остановкой стрельбы.
Исправил критический баг на боссе, когда происходил зависон из-за возврата к в условие, которое уже изменилось, и не могло сработать условие иначе.
Сделал переменный код на 3 типа скорострельности: 1, 2 и 3 пули.
Сделал выбираемость модификаций 3 и 5, которые добавляют по 1 пункту к скорострельности. Выбрав 2 мода, получаем скорострельность 3 пули; одну из модификаций – 2 пули. Стандарт – 1 по умолчанию.
Исправил баг при стрельбе очередью, когда пули вели себя неадекватно из-за кривого срабатывания удаления спрайтов. Сделал перемещение спрайтов вместо удаления – так надёжнее работает.
Исправил баг пули – нужно было изменить адрес графики, на которую накладывались другие спрайты.
Исправил баг пуль, когда они исчезали на крупных астероидах – заменил забытый кусок кода.
Сделал спрайты пуль под спрайты противников, чтобы лучше смотрелось.
Исправил баг Stack UnderRun после уничтожения гигантского астероида. Довольно-таки непонятная ошибка, возникающая из-за того, как я понял, что дополнительный код на GoSub был большой. Разделил на 2 куска – нормально стало.
Количество спрайтов на уровне 46/80. Убрал все с мест скопления, чтобы не возникло много тайлов на одной линии, что вызывает мерцания или исчезновения спарйтов. Теоретически 20 на линии поддерживает консоль, но практически проблемы создаются и при меньшем количестве, т.к. у меня цикл и так нагружен, что общая скорость игры тормозится.
На меню добавил анимацию нажатия пальцем по дисплею. Добавил соответвующий код, который позже нужно будет ещё оптимизировать.
Подправил мелкие графические недоработки в меню выбора орудия и пр.

Прикрепления: 5387679.png(21Kb) · 2718419.png(23Kb) · 9313354.png(20Kb) · 4480782.png(13Kb)



Вот так.
 
Форум ромхакеров » Около темы » Геймдев » В разработке скролл-шутер на SMD (Sega Genesis)
Страница 1 из 212»
Поиск: