Дата: Понедельник, 23.01.2017, 14:03 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 2352
Статус: Оффлайн
видео с гейплеем:
Так уж получилось, что мой проект экшен РПГ, который я планировал ранее в соседней ветке, разросся до такой игры, которую мне не осилить за пару лет. Он состоит из нескольких частей, включающих в себя эпизоды в жанре SHMUP, платформера и головоломки с диалоговыми квестами. И я решил разделить игру на несколько частей, в первой я реализую SHMUP и магазин с улучшениями, а во второй или третей объедению его с платформером. Т.е. это будет серия игр, которая усложнится от части к части, и вторая-третья часть будет именно тем, что я изначально планировал.
А этот топик посвящён разработке первой части – скролл-шутер с элементами RPG, типа модификаций и магазина между миссиями. Будет выбор миссий, разные корабли на выбор, виды оружия, разномастные противники и боссы.
Сеттинг будет космический, сай-фай далёкого будущего с необычным сюжетом и общим игровым миром, наполненным неопределённостью обречённого мира, медленно гибнущего под воздействием деятельности людей и их противников. Такого постапокалипсиса ещё не было, т.к. я задействую колорит... пока секрет какой…
Стадия развития:
Сейчас делаю движок, базовые функции. Рисую в основном пока сам, музыку я заказал у одного хорошего человека, он её уже написал и продал мне. Позже я сделаю титры и укажу его. Сам музон уже мною сконвертирован в нужный формат и вставлен, протестирован на мощном звуковом движке v2 от Стефа. Всё авторское и специально для проекта!
Я слабый художник и программист, поэтому реалистично смотрю на проект, однако стараюсь сделать всё качественно, насколько позволяют умения и имеющееся время.
Графон будет отличаться полной картинкой как в Metal Slug, насколько позволяет SMD. Спрайты будут крупные (имеется в виду, что объекты будут состоять из больше чем одного спрайта, максимальный размер которых на SMD – 32x32 пикселя), многослойность фонов, эффект параллакса, крутые партиклы и пр. Это всё я делаю впервые, даже спрайты на SMD я юзал лишь пару раз при разработке мини-игры в статичной визуальной новелле. Посему я тут буду ещё и обучаться по ходу.
Игра планируется к изданию на картриджах, поэтому я её разрабатывать буду примерно год, если всё будет нормально. А затем я отдам права издательству, которое ещё найти нужно будет, оно выпустит карики, а затем уже примерно через год будет выпущен ROM или его к тому времени уже кто-то задампит. Поэтому не обижайтесь, что проект закрыт на стадии разработки. Но скриншоты, видео и, вероятно, демонстрационные ROM’ы я буду выкладывать тут.
Всё делается для себя в свободное время от основной работы, которая меня убивает и не даёт сил и времени на это творчество => проект будет развиваться по полчаса в сутки, медленно. К тому же я уже сильно стар и ленив стал, всё же 29 мне, не так много рвения, как в юности. Но тогда было меньше умений и знаний.
У меня уже есть рабочий прототип! На днях выложу скриншоты. Вот так.
Вставил графику корабля героя. Интегрировал звуковой движок. Добавил систему анимации корабля при манёврах вниз/вверх. Сделал анимацию огня из движка, вставил на таймер. Откорректировал границы экрана для спрайта корабля игрока. Изменил тайл пули и прочие тайлы по мелочи. Конвертировал и вставил 4 музыкальных трека + 2 вариации. Для удобства изменил код подгрузки той или иной мелодии. Добавил дополнительные кадры анимации огня двигателя корабля. Исправил проблему не возврата в исходную позицию, убрав не нужную функцию. Поменял местами анимацию манёвров вверх/вниз. Переназначил размещение спрайтов и фонов в памяти. Нарезал, добавил и прописал задник для первого уровня. Нарезал разновидности спрайтов астеройдов, загрузил в ROM, прописал. Сделал коллизии, реакцию и движение первого астеройда. Заменил задник первой стадии на планету. Добавил параллакс скроллинг для переднего фона. Сделал зачатки паузы. Сделал основу для уничтожения и взрыва корабля игрока. Переделал частицы взрыва 64x64 и палитру, нарезал на 4 спрайта по 32x32. Сделал таймер и анимацию взрыва корабля игрока. Добавил тайлы мусора для переднего слоя параллакса, доделал расположение и смещение. Реализовал расписание событий, доработал метки с указанием минуты и секунды. Таким образом, через 59 минут события пойдут по новому кругу, но этого не должно быть, т.к. уровни будут примерно по 3-5 минут. Добавил в расписание начальный вылет корабля из-за левого края экрана, после чего включается управление и следуют дальнейшие события, стартуют противники и пр. Вот так.
Переделал загрузку спрайтов. Как понял, их лучше в начале сцены создавать и скрывать за границами экрана и в нужный момент перемещать на нужную позицию, а не уничтожать и создавать заново на нужное действие. Иначе возникают артефакты и непонятным образом некоторые спрайты получают свойства других, чем запускается цепочка багов. Наконец-то обошёл баг – взрыв повторяется по нажатию кнопки Исправил баг с переполнением спрайтов после взрыва. Исправил баг пуля не летит. Исправил баг пули - невидна. Добавил эффекты чёрных палитр для затемнения всего и манипуляций с этим, когда не видно. Сделал тоже самое с белой палитрой – для переходов пригодится. Немного изменил загрузку сцены уровня. Добавил в расписание появление большего количества мусора для переднего параллакс слоя. Сделал и нарезал куски спрайтов 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 и некоторые моменты, связанные с этим. Осталось ему отладить хитбоксы. Вот так.
Начал тестировать через флешку на приставке, но теперь у меня флешка показывает экран с надписью: "48K Line 1111 Emulator (START:reset)". Это после всовывания её в SMD1 Euro. Сейчас ищу решение, неужели флеш-картриджу кирдык пришел. Вот так.
Флешка, судя по всему не сгорела, но как-то неправильно прописалась часть ОС и теперь это никак не исправить - в любом случае, я не знаю как это можно исправить без перепрошивки, а она делается из ОС => нужно менять или перезаписывать чип. У меня нет таких возможностей. Вот так, значит, потестил на MD1.
В игре возникли проблемы с детектором пули - объекты мельче 16x16 то срабатывают на коллизии с пулей, то нет. Что-то мне подсказывает, что это связано со скоростью смещения пули. она у меня сейчас по 7 пикселей летит, и в некоторых случаях кратность 7 пролетает мимо зоны обнаружения объекта, который также летит со скоростью навстречу, судя по всему. Даже не знаю, нужно усложнять как-то пулю или снижать скорости... А может, и не в этом проблема.
Короче, сейчас нужно будет найти баксы на флешку, и думать что-то с коллизиями. Вот так.
Дата: Воскресенье, 05.02.2017, 15:16 | Сообщение # 7
Подполковник
Группа: Проверенные
Сообщений: 146
Статус: Оффлайн
TLT, А оживить старую точно нет возможности? Может стоит попробовать вскрыть ее и посмотреть что внутри? Вдруг выйдет самостоятелььно восстановить с минимальными затратами.
Дата: Воскресенье, 05.02.2017, 18:16 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 2352
Статус: Оффлайн
Цитатаneznajka ()
А оживить старую точно нет возможности?Может стоит попробовать вскрыть ее и посмотреть что внутри? Вдруг выйдет самостоятелььно восстановить с минимальными затратами.
Даже производитель Кризз не знает как это исправить ""48K Line 1111 Emulator (START:reset)"" и на форуме у него я видел тему, где он просит прислать ему обратно на замену, если годовая гарантия не кончилась. У меня само собой, такой гарантии давно нет. Она у меня и так в виде PCB открытой. Что там вскрывать-то? Только если отпаять что-то... Придется покупать. Вот только денег пока нет на это. Через месяц куплю, возможно. Вот так.
Дата: Воскресенье, 05.02.2017, 18:18 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 2352
Статус: Оффлайн
Добавил в сцену код сбора A+B+C+Start для удобства в некоторых случаях. Реализовал систему попаданий для астероидов 40x40 и 48x48, поставил 2 и 3 попадания, соответственно. Реализовал систему столкновений с игроком без уничтожения астероида для вариантов 40x40 и 48x48. Добавил отличия начала анимации взрыва. Полностью реализовал и протестировал столкновения для 40x40 и 48x48. Теперь готово 6 видов астероидов, способных быть одновременно на экране. Осталось привести всё к единому формату для удобства, а также откорректировать координаты и прочие мелочи. Доработал все астероиды, кроме 8x8. Заменил пулю игрока на блинный лазер. Был 8x8, стал 32x8. Увеличил длину обнаружения пули, благодаря чему обошёл проблему с пролётами пули сквозь мелкие объекты из-за скорости смещения объектов. Переделал пулю на прозрачную. Нарезал спрайт астероида 128x128 на 16 кусков 32x32, загрузил в ROM. Загрузил в память спрайты гигантского астероида, реализовал спрайт и его основные функции и переменные. Осталось сделать столкновения игрока и пули с большим астероидом. Переделал фон, разрезав его на куски, высвободив 120 тайлов. Доработал фон, сделав дорисовку звёзды из имеющихся кусков для того, чтобы не было пустых пространств.
Дата: Воскресенье, 05.02.2017, 20:47 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 146
Статус: Оффлайн
TLT,
С моим зрением и монитором заметил там только плис из того что можно перепрошить. рядом место под разъем. Вполне возможно что для этих нужд. Можно уточнить по документации и ножкам. Если не ошибаюсь то устройства для работы с плис от альтеры вполне доступны. Байтбластер или както так назывались если память не изменяет.
В игре отстреливать нужно будет только астероиды ?
Вместо флеш-карика заказал программатор и пару платок – пока попользуюсь этим вариантом.
Разработка идёт медленно, т.к. много времени уходит на другие дела. Но стараюсь каждый день что-то делать. Даже мелочь, но делать. По сути, сейчас делаю босса для первого уровня, ну и нужно будет что-то сделать с оптимизацией, чтобы не было проблемы с мерцанием спрайтов сверху или вообще с целыми полосами не отображающими в своей области спрайты. Как понимаю, это связано с тем, что спрайты противников я предпочитаю хранить за пределами экрана, а не уничтожать. Если уничтожать и создавать, то за этим сложнее следить и порой вызываются куда более серьёзные баги. Думаю, неактивные спрайты сместить вниз, за нижнюю границу игрового экрана, а не держать их сбоку слева или справа. Короче, есть рецепт оптимизации, нужно будет его попробовать реализовать, когда сделаю босса и настрою сценарий первого уровня. Затем займусь игровым магазином кораблей и деталей для прокачки. Вот так.
Сделал коллизии большого астероида из 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 практически готов, нужно только тестировать и исправлять недочёты, которые могут выявиться. Запарился с этими непредвиденными проблемами. Пора заняться меню гаража. Вот так.
Сделал локацию магазина, где можно будет настраивать корабль, менять корпус, движок, оружие и пр. Сделал курсор и управление им в комнате магазина. Добавил спрайт корабля. Нарисовал графику 6 блоков: движок, броня, закрылки, дуло пушки, задняя пушка, нижняя пушка. Эти блоки можно будет докупать и улучшать, и значат они, соответственно, следующие параметры: скорость, манёвренность, броня, скорострельность, возможность стрелять назад, возможность стрелять вниз. Нарисовал графику обода монитора. Нарисовал варианты выстрелов на выбор в магазине. Сфотографировал руку, обработал и сделал 27 спрайтов для отображения руки в полном размере в качестве курсора, чтобы визуальном выбирать пункты на экране рукой. Доработал палитру руки. Исправил ряд мелких багов. Отрисовал корабли. Вставил графику видов оружия и отрисовал. Вставил графику модификаций и отрисовал. Дорисовал дополнительные элементы монитора, вставил и отрисовал. Доработал палитру руки – добавил ещё 5 цветов для фона и прочих выделений фона. Нарисовал тип 5 пули, тип 7 модификации, вставил, отрисовал. Изменил расположение элементов на экране монитора, добавил надписи.
Дата: Понедельник, 06.03.2017, 23:10 | Сообщение # 15
Генералиссимус
Группа: Администраторы
Сообщений: 2352
Статус: Оффлайн
Сделал дизайн фона экрана гаража – выбора корабля, оружия, модификаций. Переделал некоторые мелкие элементы и устранил недочёты на экране гаража. Сделал выбираемость пунктов меню: типы кораблей, оружия, модов. Нарисовал и добавил на экран с монитором мелкие элементы декора и значки: очки, скорость, броня, манёвренность. Нарисовал и добавил графику выстрелов. Сделал варианты выстрелов из оружия для стрельбы. 5 шт. Подкорректировал габариты выстрелов, добавив специальные переменные и вставил их в просчёт коллизий. Изменил третий вариант пули на тройной, но не разлетающийся. Добавил для адресной очистки спрайтов, чтобы не возникало ошибки лимита спрайтов при рестарте уровней. Дело в том, что функция очистки конкурентного спрайта или функция очистки всех спрайтов срабатывает только тогда, когда спрайт на экране 320x240. А у меня движок таков, что уничтожать спрайты нужно, когда они выехали за экран. Добавил просчёт коллизий на 1, 2, 3 пули при попадании в каждый объект. Разделил некоторые свойства врагов на модульную подгрузку в разные моменты одного и того же куска кода. Переделал очередь стрельбы, но в некоторых случаях всё ещё возникают проблемы с появлением ускоренных пуль или остановкой стрельбы. Исправил критический баг на боссе, когда происходил зависон из-за возврата к в условие, которое уже изменилось, и не могло сработать условие иначе. Сделал переменный код на 3 типа скорострельности: 1, 2 и 3 пули. Сделал выбираемость модификаций 3 и 5, которые добавляют по 1 пункту к скорострельности. Выбрав 2 мода, получаем скорострельность 3 пули; одну из модификаций – 2 пули. Стандарт – 1 по умолчанию. Исправил баг при стрельбе очередью, когда пули вели себя неадекватно из-за кривого срабатывания удаления спрайтов. Сделал перемещение спрайтов вместо удаления – так надёжнее работает. Исправил баг пули – нужно было изменить адрес графики, на которую накладывались другие спрайты. Исправил баг пуль, когда они исчезали на крупных астероидах – заменил забытый кусок кода. Сделал спрайты пуль под спрайты противников, чтобы лучше смотрелось. Исправил баг Stack UnderRun после уничтожения гигантского астероида. Довольно-таки непонятная ошибка, возникающая из-за того, как я понял, что дополнительный код на GoSub был большой. Разделил на 2 куска – нормально стало. Количество спрайтов на уровне 46/80. Убрал все с мест скопления, чтобы не возникло много тайлов на одной линии, что вызывает мерцания или исчезновения спарйтов. Теоретически 20 на линии поддерживает консоль, но практически проблемы создаются и при меньшем количестве, т.к. у меня цикл и так нагружен, что общая скорость игры тормозится. На меню добавил анимацию нажатия пальцем по дисплею. Добавил соответвующий код, который позже нужно будет ещё оптимизировать. Подправил мелкие графические недоработки в меню выбора орудия и пр.
Всё о хакинге игр, всё о модификации игр, всё о мапинге игр
translation, translations, romhacking, ROM, hacking, ROM hacking utilities, documents, hacks, requests
эмуляция, качать ROM-файлы, старые игры, ретро игры, эмуляция