russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Форум ромхакеров » Около темы » Геймдев » WIP "Space flies attack" for Sega MD / Genesis (проект в разработке)
WIP "Space flies attack" for Sega MD / Genesis
TLTДата: Среда, 16.09.2020, 00:32 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Проект "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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Начал рисовать спрайты и формировать движок. Пока есть проблемы с лимитом спрайтов, но эти ошибки будут решены после определения структуры данных.

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



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

Ченджлог:

Исправил ошибку с дублированием создания спрайтов врагов.
Увеличил количество врагов до 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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Цитата 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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Тест на железе показал, что со спрайтами творится какая-то каша в 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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Цитата 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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Ченджлог:
Переделал создание и уничтожение спрайтов пуль игроков.
Переделал создание и уничтожение спрайтов пуль врагов.
Добавил счётчик интервала выстрелов игроков.
Проверил на железе: выявил серьёзные проблемы с отображение спрайтов и зависанием.
Устранил ошибку зависания при использовании эффекты затенения. Убрал 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
Генералиссимус
Группа: Администраторы
Сообщений: 2168
Статус: Оффлайн
Ченджлог Космо:

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

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



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

Добавил в завершение уровня вывод из поля зрения новых спрайтов, чтобы не мешали подсчёту очков.
Нарисовал и сделал спрайт слова «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)



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