russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум ромхакеров » Около темы » Геймдев » WIP "Space flies attack" for Sega MD / Genesis (проект в разработке)
WIP "Space flies attack" for Sega MD / Genesis
TLTДата: Среда, 16.09.2020, 00:32 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Проект "Space flies attack" (временное название) для 16-битной игровой приставки Sega Mega Drive / Genesis будет представлять из себя космический шутер, что-то типа смеси "Space Invaders" и "Galaga". Пока на очень ранней стадии разработки. Игра будет реализована для сборника игр, который пока только в планах...

Прикрепления: 2602920.png(82.1 Kb) · 9433829.png(12.5 Kb)



Вот так.
 
TLTДата: Пятница, 22.01.2021, 22:00 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Начал рисовать спрайты и формировать движок. Пока есть проблемы с лимитом спрайтов, но эти ошибки будут решены после определения структуры данных.

Прикрепления: 1689899.png(2.3 Kb) · 9874225.png(2.3 Kb)



Вот так.
 
TLTДата: Среда, 27.01.2021, 14:31 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Пока что всё получается, удалось решить серьезную проблему, которая стопорила разработку.

Ченджлог:

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

Разрешение экрана будет 256x224(240), поэтому на скриншотах чёрная область (так фоткает эмулятор Regen). Консоль и эмулятор показывают растянутое до 320 по ширине изображение.

Прикрепления: 2921800.png(18.1 Kb) · 8635797.png(1.7 Kb) · 6922262.png(12.9 Kb) · 9949832.png(25.0 Kb) · 2022464.png(25.5 Kb)



Вот так.
 
wertonДата: Четверг, 28.01.2021, 11:46 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 2
Статус: Оффлайн
Цитата TLT ()
Пока есть проблемы с лимитом спрайтов

На сколько я помню, в фамиком версии проблему с лимитом спрайтов решили, используя, для отображения врагов задник вместо спрайтов (когда они в строю). А когда они начинали пикировать, там уже использовались спрайты. Думаю здесь такой же подход будет уместен.
 
TLTДата: Четверг, 28.01.2021, 14:41 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Цитата werton ()
На сколько я помню, в фамиком версии проблему с лимитом спрайтов решили, используя, для отображения врагов задник вместо спрайтов (когда они в строю). А когда они начинали пикировать, там уже использовались спрайты. Думаю здесь такой же подход будет уместен.


Очень точное наблюдение. Я это прокручивал в голове, но на SMD достаточно мощности, поэтому решил отказаться от этого метода.

На SMD стандартный 40 mode лимит спрайтов - 80 шт. В разрешении 256 на 224 (32 mode) - ещё меньше (64). (на SGDK, вроде, alkosha как-то обходил этот лимит? Не помню уже... или он как-то юзал 80 при разрешении 256x224...) Если юзать тайлы, то они будут дёргано двигаться со скоростью тайла (8 пикселей), если не скроллировать фон (но тогда проблема с коллизиями - нужно дополнительно писать код с учётом смещений). Я использую спрайты для плавности, и мой движок оптимизирован под одновременное движение максимального количества спрайтов, в этом нет проблем. Проблема была (я её уже исправил) в том, что код создания спрайтов вызывался лишний раз из-за неправильного использования интеграции функции в vblank. В предыдущем ченджлоге я написал:

Цитата TLT ()
Исправил ошибку с дублированием создания спрайтов врагов.


Т.е. теперь всё ОК. Двигаюсь дальше.



Вот так.
 
TLTДата: Воскресенье, 31.01.2021, 20:34 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Тест на железе показал, что со спрайтами творится какая-то каша в 32 mode. А в 40 mode всё, вроде как, нормально. В общем разработка останавливается и начинаются эксперименты - пытаюсь понять, в чём проблема. Т.к. на всех эмуляторах проблема не выявляется, а отображается только на консоли (Genesis 2 сейчас юзаю), то приходится билдить и проверять, строя догадки... Муторно. Что-то мне подсказывает, что в режиме 32 mode обработка слабее и консоль не справляется. из-за чего спрайты неправильно двигаются, меняют адреса. Вероятно, в один цикл так много активных спрайтов не вывозит. Короче, как обычно - эмуляция весьма неточная, и я страдаю.

Решил не тратить время, делать в 320x224/240. Жаль, хотелось как-то укрупнить спрайты за счёт разрешения... Увы, движок вышел глючный, не работающий корректно на уменьшенном разрешении. Придётся переделать интерфейс, перепроектировать HUD. Так или иначе, главное сделать игру максимально корректно работающую на железе, а не просто на эмуляторах.



Вот так.
 
wertonДата: Вторник, 02.02.2021, 10:45 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 2
Статус: Оффлайн
Цитата TLT ()
Т.к. на всех эмуляторах проблема не выявляется, а отображается только на консоли (Genesis 2 сейчас юзаю), то приходится билдить и проверять, строя догадки... Муторно.

А на Blastem пробовал тестить? Я обычно использую GensKMod, но только из за того, что там в комбинации с sgdk можно ставить брейкпоинты и логировать. Но он глючный, и неточный, поэтому периодически запускаю билды на Blastem, он крашится там, где gens работает. Пока Blastem не подводил, ещё как вариант Exodus попробовать.
Если нужна помощь в тестировании на железе, могу потестить на md model 1 va0, va7


Сообщение отредактировал werton - Вторник, 02.02.2021, 10:54
 
TLTДата: Вторник, 02.02.2021, 17:44 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Цитата werton ()
Blastem пробовал тестить?

Пробовал. Blastem хорошо показывает белые точки (и линии шума) и прочие артефакты, когда загоняешь графику в память. Но в остальном - эмулятор неточный и неудобный. Я уже не говорю про его отстойный интерфейс. Сейчас у меня есть 3 консоли, в т.ч. пиратка MD2 из 90-ых с переключателем, поэтому хватает.

Я уже забил и поставил разрешение 320, закрыв брешь HUD'ом вот так:

Прикрепления: 8982890.png(26.7 Kb)



Вот так.
 
Genesis16Дата: Четверг, 11.02.2021, 13:04 | Сообщение # 9
Майор
Группа: Проверенные
Сообщений: 80
Статус: Оффлайн
Графика неплохая получается, хоть и мелко всё.
 
TLTДата: Воскресенье, 14.02.2021, 21:46 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Ченджлог:
Переделал создание и уничтожение спрайтов пуль игроков.
Переделал создание и уничтожение спрайтов пуль врагов.
Добавил счётчик интервала выстрелов игроков.
Проверил на железе: выявил серьёзные проблемы с отображение спрайтов и зависанием.
Устранил ошибку зависания при использовании эффекты затенения. Убрал Interlace.
Оптимизировал и переделал весь цикл движка.
Сделал основу HUD фоном и спрайтами.
Добавил на HUD готовность выстрела, прописал отображение этого перед и после выстрела. Для двух игроков.
Добавил индикатор жизней (попаданий) для двух игроков, реализовал алгоритм изменения размера спрайта индикатора после попадания.
Сделал систему взрыва противников на две пули от двух игроков.
Нарисовал и сделал анимацию взрыва.
Сделал два отдельных спрайта взрыва для двух игроков.
Прописал анимацию взрывов игроков.
Сделал проверку на наличие жизней игроков, чтобы они не управлялись, если взорвались уже.
Сделал проверку уничтожение двух игроков, чтобы производится переход на экран Game Over, либо игра не останавливалась при уничтожении одного из игроков.
Сделал возможность игрокам немного маневрировать по вертикали.
Сделал экран GameOver с выбором продолжить (если есть Конты) или сбросить игру.
Добавил фон в экране GameOver.
Изменил уничтожение противников: вместо удаления спрайтов сделал перемещение их в невидимую область.
Убрал возможность двигаться вверх вниз.
Устранена проблема: Одна пуля убивает двух игроков.
Добавил дополнительно противника, который будет двигаться за колонной, и из которого можно выбить бонус.
Нарисовал 6 типов бонусов: L – жизни (не более 9, отображается максимум 4), P^ – скорость пуль (начальная 3, максимум 5), B – включение защитного барьера (максимум 1), > - скорость смещения вправо-влево (начальная 1, максимум 3), C – континиус (максимум 9), S – очки.
Прописал алгоритм выбивания рандомного бонуса.
Прописал алгоритм падения бонуса.
Прописал коллизии столкновений игрока с бонусом.
Протестировал, исправил ошибки связанные с бонусом и бонусным противником.
Сделал доработку: Завершение уровня быстрее анимации взрыва последнего противника.
Устранил проблему: Пули активируются на удалённых за сцену противниках.
Сделал 2 типа поведения смещения врагов.
Сделал на кнопку "B" использование барьера. Прописал таймер и отображение наличия.
Сделал поведение для врагов: 2 движения.
Сделал появление для путь врагов, увеличил количество до 7.
Подправил спрайт бонусного врага.
Добавил мерцания защитному барьеру перед кораблём игроков.
Сделал основу выхода и алгоритма движения бонусного корабля противников.
Переделал и перерисовал бонусный корабль в контейнер.
Сделал движение бонусного контейнера и рандомный выход его из сцены.
Исправил баг: когда оставалось 2 противника, они не стреляли.
Сделал рандомное положение по X при появлении бонусного контейнера.
Продублировал эффекты от взятия того или иного бонуса для второго игрока.

Прикрепления: 8797127.png(26.1 Kb) · 4038086.png(25.5 Kb) · 9750007.png(26.5 Kb) · 0481314.png(24.5 Kb)



Вот так.
 
TLTДата: Пятница, 19.02.2021, 11:40 | Сообщение # 11
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Ченджлог Космо:

Сделал сабы многих процессов: HUD, отрисовка уровня, расстановка спрайтов и пр.
Сделал локацию для включения настроек перед стартом уровня, исходя из переменной уровня.
Исправил баг с лимитом спрайтов после продолжения с экрана GameOver.
Исправил баг: игрок 1 при включении барьера умирает от пуль.
Подправил палитру для второй планеты.
Доработал удаление спрайтов с экрана.
Сделал взрывы поверху кораблей игроков, чтобы взрыв одно игрока не закрывался тушкой корабля другого.
Сделал отдельные очки для двух игроков.
Сделал отдельные рекордные очки для двух игроков.
Сделал экран перехода между уровнями и систему переключения уровней.
Сделать экран и подсчёт очков в конце уровня для двух игроков.
Сделал основу для рандомного выбора одного из активных противников и перехода его в режим нападения на игрока.
Исправил ряд багов в алгоритме атаки врагов.
Сделал алгоритм запуска и поведения атаки рандомного противника на одного или двух игроков (в т.ч. с переключением с одно на другого, либо с отсутствием игроков).
Исправил бесконечное добавление очков, если очков по пункту 0.
Добавил пункты добавления очков на за количество жизней (попаданий).
Исправил баг: если сердец 0, при взятии бонуса L не происходит отображение сердца на HUD.

Прикрепления: 6423670.png(26.2 Kb)



Вот так.
 
TLTДата: Четверг, 04.03.2021, 14:24 | Сообщение # 12
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Ченджлог:

Добавил в завершение уровня вывод из поля зрения новых спрайтов, чтобы не мешали подсчёту очков.
Нарисовал и сделал спрайт слова «Pause».
Сделал вывод спрайта сбоку слева или справа, в зависимости от игрока, нажавшего на Start.
Сделал флипы некоторым спрайтам взрывов для разнообразия.
Переставил взрывы противников выше спрайтов кораблей противников.
Доработал алгоритм рандомного выбора цели для атакующего противника, чтобы была больше вероятность нападения на второго игрока, если он есть.
Добавил стартовый экран, титульный экран с меню и опциями.
Изменил выбор сложности в опциях на 3 варианта: легкий, нормальный и сложный.
Добавил звуковой движок.
Добавил в меню на титульник выбор на 1 или 2х игроков.
Углубил появление пуль в игроках, чтобы ближние противники уничтожались, срабатывала коллизия противники и пули игрока.
Сделал вывод противников разным: чем больше уровень, тем ближе 144+(1…32).
Сделал проверку на включенность второго игрока для того, чтобы показывать/не показывать подсчёт очков второго игрока.
Добавил рандомный счётчик для определения – дать возможность выводить новый бонусный контейнер, если игрок не взят приз, и он улетел вниз.
Сделал плотность огня противников зависимым от уровня сложности 4+(0…2 / Легкий=0, Нормальный=1, Сложный=2) пули.
Добавил в алгоритм обработки пуль проверку на максимум доступных пуль, чем исправил баг: Пуля висит в воздухе.
Сделал алгоритм мощности огня противника, в зависимости от уровня.
Исправил несколько багов в меню на титульнике.
Убрал ненужно отключение экрана в сабе уборки спрайтов.
Добавил время паузы после смерти или выигрыша, увеличил период чёрного экрана на переходах между уровнями и смертью.
Сделал экстра жизнь, если какой-то игрок мёртв в режиме на двух игроков, чтобы воскресить игрока без потери континиуса.
Доработал спрайт корабля второго игрока, убрал 15-ый цвет, который не затемняется.
Переработал алгоритм выбора случайного нападающего противника, че исправил баг: один или несколько противников выбиваются из строя, могут выходить за пределы игрового поля и т.д.
Сделал выход игроков в начале раунда.
Доработал момент: после экстра жизни остаются сердечки у игрока после смерти.
Сделал титульный экран в разрешении 256x240, и переключение на 320x240 при включении уровня.
Сместил текст меню титульного экрана на 3 знака влево, чтобы центрировать.
Сократил и подправил текст копирайтов.
Сделал фон на титульном экране – синий портал.
Добавил анимацию портала за счёт эффекта скроллинга с использованием таблицы синусов.
Сделал название и арты противников на основе скринов 3D-моделей, летящих из портала позади.
Подправил палитру названия игры на титульном экране.
Вручную отредактировал название и некоторые неровные края противников на титульном арте.
Сделал отключение экрана при выполнении кода при старте геймплея, после страта игры с титульного экрана.

Прикрепления: 2370298.png(24.1 Kb) · 0653608.png(14.7 Kb) · 2072798.png(16.4 Kb) · 3962735.png(26.5 Kb) · 5811408.png(22.0 Kb) · 6310437.png(23.1 Kb)



Вот так.
 
TLTДата: Четверг, 18.03.2021, 18:51 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Ченджлог:

Добавил ещё фоны с картами отрисовки для уровней и палитры к ним: 4-19
Добавил отрисовку фонов по картам для всех уровней.
Сделал некоторые оптимизации перед титульным экраном.
Исправил баг перемещением установки начальных параметров: после перехода на следующий уровень теряется эффект скорости (обнуляется взятый бонус).
Добавил саб для обнуления строк по горизонтали и вертикали при режиме hscroll_line,vscroll_2cell
Убрал проверку отпущены ли кнопки в локациях Пазы двух игроков, чтобы всё срабатывало даже при нажатых других кнопках, кроме Start.
Сделал коррекцию палитры и отрисовки для уровней 4-10.
Протестировал на железе, проверил имеющийся функционал, выявил баги.
Сделал коррекцию палитры и отрисовки для уровней 11-21.
Протестировал и обозначил палитры и фонов 21 уровню.
Удалил 2 лишних саба на разные обозначения спрайтов врагов. Будет использоваться один.
Сделал 9 вариантов загрузки спрайтов врагов, прописал для каждого уровня.
Добавил вариант 0 загрузки спрайтов врагов для уровня 21.
Удалил саб ShipBuild_1, который дублировал код, который делал в начале игры для создания спрайтов врагов и прописи им свойств.
Сделал 5 фонов для экрана подсчёта очков, добавил в игру, отрисовал, отредактировал палитры и протестировал.
Сделал рандом для загрузки того или иного экрана на экране подсчёта очков.
Вроде (нужно проверить на железе) решил баг: на титульном экране эффект желе фона мерцает линиями.
Исправил баг: если взят бонус барьера, есть в наличии, то игрок неуязвим. Прописал проверку правильного значения переменной.
Переместил обнуление переменной барьера в начале каждого уровня.
Исправил баг: если проходишь уровень с 0 сердцами, то на следующем на интерфейсе показывается 1, но на самом деле – 0 (умираешь с одного попадания). Добавл проверку больше ли переменная жизней 1 или нет, чтобы во время инициализации HUD выводить спрайт жизни.
Добавил увеличение скорости пуль врагов с увеличением уровней от 2 до 5 с учётом трёх сложностей.
Баг исправил: пишется цифра при использовании барьера. Осталось от отладки.
Подкорректировал вычет очков за промах, чтобы вычет не мог быть выше вычетаемого.
Добавил заготовку экрана предыстории и туториала с управлением.
Изменил обработку пуль игрока по нажатию выстрела, подправил начальную и максимальную скорость.
Вроде, исправил баг: иногда пули проходят сквозь летящих на игрока противников. Сделал лучшую проверку столкновения по Y. Но увеличилась нагрузка на цикл.
Обленил обработку пуль первого и второго игроков.
Провёл оптимизацию кода, упразднил ряд сдвоенных условий.
Частично протестировал имеющий вариант на разных эмуляторах до 7 уровня.
Протестировал на железе.
Оптимизировал управление.
Добавил основу для экрана концовки.
Сделал концовку, добавил текст, очерёдность его вывода, добавил спарйты кораблей игрока, их полёт, фон, скроллинг фона.



Вот так.
 
TLTДата: Среда, 31.03.2021, 23:36 | Сообщение # 14
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Занимаюсь звуком, тестирую и попутно исправляю баги, делаю различные доработки.

Ченджлог:

Сделал корректировки текста в меню опций.
Изменил код нажатия кнопки на тесте мелодий, чтобы не требовалось ждать отжатия.
Добавил зелёную палитру для текста, добавил её во все локации с текстом: на титульном экране, на геймовере, при подсчёте очков и на конечной заставке.
Провёл тесты с конвертированием мелодий и их звучанием.
Подкорректировал звуковой движок для меньшего конфликта дорожек одновременно играющей мелодии и звука.
Сделал 2 типа пуль, отличающихся по скорости: если 4-5 – 1, если 6 – 2. Прописал при получении бонуса обоими игроками и в начале каждого уровня.
Сделать обнуление взятых улучшений на экране Game Over, чтобы после использования континиуса игрок начинал с начальными параметрами: скорость пуль=4, скорость кораблей=1, барьер=0. Сделал саб для использования при страте игры и продолжении с экрана Game Over.
Исправил баг с выводом спрайтов игроков в режиме на двух игроков в начале уровня.
Вновь добавил зелёный свет в начале уровня на HUD, т.к. код был удалён по ошибке.
Добавил инициализацию палитры HUD и противника на локации начала уровня, т.к. поверх записывается палитра текста с Game Over и экрана подсчёта очков.
Уменьшил HUD внизу, чтобы не отрисовывалось в невидимой зоне экрана.
Добавил загрузку тайла щита, который почему-то был закомментен.
Сделал отрисовку обозначений бонусов перед началом игры, переместил загрузку тайлсета в начало игры.
Перерисовал геймпад со схемой управления в начале игры.
Добавил текст правил игры в начале.
Добавил фон для туторила, настроил палитры.
Дополнил описание бонусов и перегруппировал расположение текста.
Добавил лого разработчика вначале.
Сделал высокий приоритет и палитру зелёного цвета для текста на экране Game Over.
Сделал надпись Mission X до старта уровня.
Нарисовал графику для анимированной заставки.
Добавил графику, палитры и фоны в ROM.
Отрисовал элементы и их последовательность для анимации.
Сделал скроллинг корабля противника и палитровую анимацию его выстрела.
Протестировал на железе Genesis 2, выявил некоторые проблемы:
Исправил баг: В конце текст создателей не правильно отображается. Добавил в отдельный саб и в vdp код скроллинга. Протестировал на желез.
Исправил баг: Противники в фазе налёта не спускаются вниз. После заставки переменная tik почему-то не инициирована.
Продублировал выстрел на кнопку «C» для двух игроков. Вывел повторный код на отдельные сабы.
Исправил баг: замедленное начало геймплея. Вложив двойные условия в поочерёдную проверку, а не в одну.
Добавил саб управления кораблями игроков в обработку ВДП, облегчив цикл для ЦПУ.
Исправил баг: проскакивает вводная информация, если зажать или нажимать одновременно кнопки на экране туториала.
Сделал и добавил звук выстрелов врагов.
Сделал и добавил звук выстрелов игроков.
Сделал и добавил звук взрывов врагов.
Сделал и добавил звук взрывов игроков.
Сделал и добавил звук ввода в меню.
Сделал и добавил звук ввода в меню 2.
Сделал и добавил звук ввода в меню 3.
Прописал имеющиеся звуки на действия.
Оптимизировал проверку на возможность завершения уровня.
Добавил звуки на нажатие и отключение Паузы двум игрокам.
На эмуляторе прошёл игру от начла до конца в режиме двух игроков, прокачивая первого игрока, и обращая на него внимание. Нужно будет пройти и за второго игрока.
Сделал, добавил и прописал звук взятия бонуса для двух игроков.
Исправил баг: на 16 уровне неправильно отрисовался фон при прохождении. Недогружался тайлсет фона.
Исправил баг: После Game Over осталось управление
Исправил баг: После Game Over осталось проблемы с лайтингом.
Исправил баг: при переходе на следующий уровень теряется взятый бонус барьера.
Исправил баг: При переходе на следующий уровень продолжается управление кораблями и паузой, т.к. нет запрета на interrupt vblank.

Прикрепления: 2276882.png(25.2 Kb) · 9898219.png(23.6 Kb) · 1808242.png(29.9 Kb)



Вот так.
 
TLTДата: Среда, 07.04.2021, 13:17 | Сообщение # 15
Генералиссимус
Группа: Администраторы
Сообщений: 2180
Статус: Оффлайн
Первое видео записал:




Вот так.
 
Форум ромхакеров » Около темы » Геймдев » WIP "Space flies attack" for Sega MD / Genesis (проект в разработке)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: