The Goonies | Zanac | Circus Charlie
Здравствуйте! Свежая серия ретро-игрового сериала “Другая Новая Реальность" уже на канале. В этом выпуске нас ждёт встреча с отвязными Балбесами, ловким трюкачом Чарли и технически навороченным космолетом Zanac. Приятного просмотра!
Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»?
Совсем недавно ярассказывалвам о такой популярной в прошлом консоли, как Тетрис и подробно описал возможности процессора, который в нём использовался. Думаю вам, моим читателям, тематика с разбором «подкапотки» различных редких девайсов как минимум достаточно интересна. Полагаю, многие мои читатели, которые увлекаются играми, а особенно ретро-геймингом, видели на маркетплейсах типа AliExpress «новодельные» игровые консоли с названиями X7, X12 и т. п, которые внешне повторяют Nintendo Switch и предлагают кучу пиратских ромов прямо из коробки! Сегодня мы с вами: выясним, что из себя представляют эти консоли изнутри, на каком чипсете они работают, узнаем немного об их программной платформе и разберемся, причём здесь MP5-плееры из нулевых. Интересно? Тогда жду вас в статье!
❯ Небольшая предыстория
Честно сказать, игровые консоли с эмуляторами ретро-систем были популярны всегда, это отнюдь не какой-то современный тренд. Начиная с их появления в середине-конце нулевых, эти девайсы постоянно сметались с полок магазинов благодаря какой-то неадекватной дешевизне, огромному количеству предварительно загруженных игр и неплохому функционалу, помимо, собственно, эмуляции игр. Основной ЦА таких девайсов предполагаются дети: в более юном возрасте все мы были не искушены вариативным геймплеем или крутой графикой, для многих из нас за счастье было попрыгать, играя за Марио, хотя среди пользователей очень часто находились и взрослые люди, которые хотели бы испытать те же эмоции, что испытывали когда-то сидя перед экраном советского телевизора.
Вообще, принято считать, что основными устройствами на рынке портативных систем являются консоли от Nintendo и Sony. Однако в наше время, это не совсем так: сейчас производители ретро-консолей создают свои собственные бренды и выходят на рынок с гораздо более интересными устройствами: вспомнить хотя-бы Miyoo, которые работают на базе собственного дистрибутива Linux, для которого можно писать свой нативный софт помимо запуска эмуляторов, или устройства от Anbernic, которые совмещают в себе функционал Android-смартфона и портативного игрового гаджета. Можно также вспомнить Sup GameBox — нашумевшая ультрадешёвая (~800 рублей или ~8$ на момент написания статьи) консоль с кучей игр для NES (Денди), возможностью подключения к телевизору, а также игры вдвоём с помощью дополнительного геймпада.
История «эмуляторных» консолей достаточно богата на события и устройства. Те, кто крутится в теме эмуляции достаточно давно, помнят такие легендарные устройства как Dingoo A320: очень популярная в своё время консоль с возможностью запуска сторонних эмуляторов и нативных игр (в основном, от китайских студий). Известна большим количеством несовместимых с ней клонов. Толчок популярности дал порт Linux: энтузиасты портировали ядро на MIPS-чипсет Ingenic JZ4760, благодаря чему появилось большое количество эмуляторов и портов игр, которые используют библиотеку SDL. Вышла в 2009 году.
Также была популярна консоль Ritmix RZX-50, которая являлась духовным наследником A320 и работала на базе того же чипсета от Ingenic. Отличия заключались в увеличенном объёме ОЗУ и более удобном дизайне: «кирпичик» A320 нравился не всем. Вышла в 2012 году.
Ближе к 2012-2013 году, стали появляться «эмуляторные» консоли на базе планшетного железа и ОС Android. Эти устройства работали на базе самых разных чипсетов: чаще всего использовались чипсеты Amlogic AML8726-M3 (1 ядро, 1ГГц, Cortex-A9, Mali 400), где-то использовались процессоры AllWinner (я видел только A10: одно ядро, 1ГГц, Cortex A8, Mali 400), в совсем топовых устройствах использовались чипы от Rockchip (и эти устройства были самыми ненадежными). Можно сказать, это было «новое дыхание» для этого рынка: во первых, помимо эмуляторов они тянули большинство Android-игр тех лет. В 2012 году, далеко не у всех были устройства на Android, многие ещё продолжали ходить с тачфонами или кнопочниками а-ля Samsung SGH-E250 и игры на смартфонах для них создавали вау-эффект. А во вторых, эти устройства вполне заменяли планшеты: у них был Wi-Fi, а иногда и 3G, благодаря чему покупатель потенциально получал сразу два устройства: консоль с эмуляторами и физическими кнопками + планшет для серфинга в интернете. Из подобных устройств вспоминаются устройства от JXD и их локализации в РФ: Exeq, Func, Smaggi и иные бренды.
Подобные устройства могут представлять игровую ценность и сейчас: на вторичке они очень быстро дешевеют до «шапки сухарей» — рабочий девайс можно взять в пределах 500 рублей.
И это я не говорю об огромном количестве «безымянных» устройств, которые просто выходили на рынок, локализовывались и продавались за довольно небольшой прайс. Относительно недавно рынок заполонили очень дешевые игровые консоли, которые формой и расцветкой напоминают PS Vita и Nintendo Switch. Брендов у этих устройств нет: обычно используются названия X7, X12 и т. п. — каждая обозначает, видимо, размер дисплея. При этом в программном плане они отличаются, в устройствах с одинаковым корпусом могут встретиться разные прошивки. Производитель обещает тысячи встроенных игр, а также кучу мультимедийных возможностей типа видео-плеера и даже… камеры. На «алике» и российских маркетплейсах стоят они достаточно недорого: в среднем 2-3 тысячи рублей за новое устройство. На барахолках новое или почти новое устройство можно взять за 1.000-1.500 (~10$) рублей — вполне лояльный прайс. Так поступил и я: взял X12 Plus за 1.000 рублей с интересующей меня прошивкой.
Правда я взял девайс с небольшим нюансов: левый аналоговый стик не работал по направлению вниз и на дрифт это не было похоже.
И вот, консоль пришла. Самое время её распаковать!
❯ Распаковка
Устройство поставляется в небольшой коробочке, где вкратце описаны характеристики устройства. Весьма забавляет маркетинг производителя: заявляется о «профессиональном» игровом чипе, большом количестве игр и т. п. В целом, производитель нигде не лукавит: в девайсе действительно предустановлено большое количество ромов, некоторые из них даже вынесены в основное меню.
Комплектация девайса не особо богатая: зарядка, кабель для подключения к телевизору (TV-Out, однако чипсеты этого производителя точно умеют HDMI и возможно на других ревизиях консоли он тоже распаян), инструкция и конечно же сама консоль. Сам девайс ощущается действительно большим, после классического форм-фактора PSP.
У девайса есть кнопка включения и рычажок питания, который видимо напрямую коммутирует массу с аккумулятора: дабы не портить АКБ при долгом простое.
❯ Что внутри?
Предлагаю разобрать девайс и узнать что у него внутри. Как я уже говорил, продавец заявил о нерабочем направлении «вниз» на левом стике, помимо этого, у консоли также туго нажимался левый триггер. Самое время посмотреть, на чем она работает под капотом и обслужить консоль! Разбирается девайс довольно просто — выкручиваем 4 винтика и снимаем крышку с клипс.
Разобрав девайс мы увидим следующую картину: приклеенный к плате аккумулятор, припаянный динамик (причём на корпусе есть место под второй динамик, а на плате пятачки под него — зависит от ревизии), на некоторых устройствах припаянный коаксиал с антенной. В целом, сборка консоли и разводка платы нареканий не вызывает — процесс производства таких консолей отлажен более 10 лет назад.
У устройств подобного плана высокая ремонтопригодность: резинки для кнопок можно попытаться найти в донорских устройствах, спикеры подходят от некоторых планшетов, в качестве АКБ вообще можно использовать хоть BL-4C, а про дисплеи мы поговорим немного позже.
А вот и причина плохой работоспособности нашего триггера. Боковые SMD-кнопки имеют свойство отваливаться, если их сильно и часто нажимать. Кнопки имеют два сигнальных контакта с обратной стороны и две крепежных ножки — именно они чаще всего выламываются. Пофиксить легко: некоторые снимают шелкографию и добавляют дополнительный припой для лучшего крепления, некоторые садят на клей. Я чаще капаю клей под «пузо» кнопки и запаиваю — работает нормально.
Переходим к стикам, которые взаимозаменяемы и их без проблем можно выпаять из донорских китайских консолей — они полностью идентичны. Конструкция их довольно простая: по сути, это два переменных резистора, которые выдают напряжение от 0в до 3.3в (референсное, может быть любым) по каждой оси. Разбираются они легко: поддеваем металлические крепления с длинной стороны (не с короткой!) и аккуратно разбираем стик. Здесь его достаточно почистить и всё будет работать нормально.
Однако несмотря на то, что стик фактический аналоговый, в большинстве подобных устройств он обрабатывается какцифровой— т. е. влево, вправо, вниз и вверх. Причём далеко не всегда есть возможность одновременно зажать несколько кнопок направления — что может стать проблемой в некоторых играх.
Самое интересное у устройства находится с обратной стороны. Отпаиваем аккумулятор, откручиваем винтики, крепящие плату, отсоединяем шлейфы и вытаскиваем материнку. Характеристики нашего устройства следующие:
Чипсет: ATJ2279B.
ОЗУ: Одна банка DDR1 NANYA на 64Мб. Эти чипы уже очень давно не производятся.
NAND: Infineon 29FI6808CCMEI. На чипе стоит маркировка ©'09. Потенциально, этот чип лежал на складе аж с 2009 года — более 14 лет! Даташит на этого чип не нашлось, на этикетке консоли написано 16Гб, по факту система видит 8Гб.
Дисплей: На этот раз, довольно «свежая» матрица MLHD5 2022 года выпуска.
Сам по себе ATJ2279B — это полноценная система на кристалле, которая уходит корнями аж в 2010 год. Да, никаких изменений за 13 лет в этих устройствах не произошло, кроме портирования новых эмуляторов. На данный чип естьподробный даташит, который описывает его возможности.
Вычислительное ядро: MIPS, на частоте до 450МГц с 16Кб кэша данных и 16Кб кэша инструкций.
GPU: 2D-графический ускоритель с поддержкой OpenVG 1.0. В прошивке, похоже, не используется — анимации тормозные.
Память: Контроллер DDR1/DDR2 памяти с максимальным объёмом до 256Мб и контроллер NAND-памяти с автоматической коррекцией ошибкой и ремаппингом бэдблоков. Теоретически, на данном чипсете можно запустить Android — поддерживаемый объём ОЗУ и производительность ядра позволяли это сделать, но производительность была бы достаточно низкой.
Дисплей: Поддержка TTL-матриц с разрешением до 1024x1024.
Ввод: Матричная клавиатура + резистивный тачскрин
ТВ: TVOut + HDMI в чипсете (однако на самой плате, HDMI не разведен).
USB: OTG хост + ведомое устройство.
Питание: 3.3-4.2в, встроенный контроллер для зарядки литий-ионных АКБ + ADC для мониторинга вольтажа аккумулятора при зарядке.
В начале статьи я говорил о том, что данные консоли имеют кое-что общее с MP5-плеерами нулевых. Процессоры компании Actions Semiconductor когда-то использовались в подобных устройствах именно как мультимедийные — они включали в себя DSP-сопроцессор для декодирования звука и работы с видео. Компания славилась тем, что предоставляла исходный код прошивки (на базе RTOS UCOS-II) с готовым плеером, драйверами и.т.п — благодаря чему, на рынке появилось много дешевых устройств, где производителям оставалось лишь кастомизировать интерфейс под себя. Со временем, производители портировали на эту прошивку различные эмуляторы, а сама прошивка научилась запускать сторонние бинарники — мне на флешке попадались so-библиотеки эмуляторов.
Так и появилось кучу самых разных мультимедийных игровых консолей за копейки. Процессоры Actions Semiconductor понемногу развивались — была даже вариацияG1000, которая имелся даже отдельный 3D GPU — Vivante GC и тянул игры уровня PS1, однако серьезного буста в производительности он не давал.
JXD5000 на базе G1000.
Производитель предлагал собственный SDK для разработки игр и эмуляторов под устройства на базе этих чипов. Китайские студии делали игры под эти устройства, но в публичный доступ утекало только SDK на Dingoo A320 и есть homebrew SDK для SPMP8k (консоль на котором я ищу). Естьнекий SDKс частичным исходным кодом прошивки: инструкций по сборке нет, но попробовать разобраться можно.
Отдельно хочется сказать про дисплей — их можно было найти в бюджетных планшетах 2010-2014 годов, в основном на базе чипов WM8650, AllWinner A10/A13, AMLogic AML8726-M и дешевых Rockchip. Поскольку родной дисплей по качеству очень «так себе», можно провести апгрейд, взяв матрицу с какого-нибудь нерабочего планшета за 100 рублей с юлито. 100% подходят матрицы от китайских реплик первого iPad с диагональю 7". Это повышает ремонтопригодность гаджета — битые планшеты на всяких скупках можно найти почти в каждом городе. Главное обращайте внимание на форму шлейфа, перед покупкой гуглите "<модель планшета> матрица" и сверяйте с своим. В остальном они должны быть совместимы.
Родная матрица.
Подкинул дисплей от реплики iPad.
Общение с дисплеем идёт по протоколу RGB, 60 пиновый шлейф, распиновка стандартная: её я прикладываю ниже. Дисплеи 40pin (навигаторы), 50pin (планшеты), 60pin (чуть более свежие планшеты с отдельной подсветкой) хорошо стандартизированы и обычно без каких либо проблем взаимозаменяемы:
Собираем девайс обратно. Самое время протестировать устройство в играх!
❯ Играем
При включении устройства, нас встречает забавная анимация и главное меню, которое предлагает следующие возможности:
Какие эмуляторы у нас есть? Давайте смотреть:
NES
SNES
SMD
GB
GBA
В целом — весьма неплохо. Но как у них с производительностью? Давайте посмотрим:
Эмулятор GBA идёт отлично. Даже довольно тяжелые 3D-игры типа NFSU2 идут без каких либо проблем и «рваного» звука. Не могу ничего сказать насчет серьезного пропуска кадров, но в целом этот ром играется неплохо, как и например Street Fighter II:
Эмулятор SMD идёт плюс-минус нормально. Видны кое-где корректировки пропуска кадров, но в целом вполне играбельно. Что странно: при таком объеме встроенной памяти, в консоли всего чуть больше 40 ромов для NES и среди них нет ни Earthworm Jim, ни Sonic The Hedgehod! Ну как так-то! 2.5D игры идут неплохо.
Эмулятор SFC (SNES) идёт сносно. Ромов реально довольно много и среди них попадаются такие занимательные игры, как Metal Warriors: Run & Gun сайдскроллер про огромного меха. Игры идут вполне хорошо, правда я не тестировал более тяжелые игры для SNES, которые могут использовать альфа-канал, например.
Ну и эмулятор NES, с учетом того, что SNES и GBA здесь идут нормально, тоже работает хорошо. Для этой консоли здесь больше всего ромов: как минимум, несколько сотен. Возможности поиска (вроде-бы нет), поэтому навигация по играм может быть не очень удобной.
В целом, консоль весьма неплохо справляется с прямым предназначением — эмуляцией. Кое-где есть слабые места, но это не так критично. Консоль умеет прикидываться USB-флэшкой, благодаря чему на неё можно залить новые ромы или, например, музыку, видео или электронные книги (дисплей здесь очень «так себе» для чтения, глаза быстро устанут). С музыкой есть нюанс: возможно мне попался брак, илиу моих наушников джек слишком короткий, но в моей консоли работает только один канал на звук. Качество вполне неплохое, на уровне MP3-плееров начала 2010х готов, но с Hi-Fi плеерами очевидно не сравнится.
❯ Заключение
Лично как по мне, платформа сама по себе перспективная, как и вся задумка в целом, но подкачала реализация. Если бы китайцы выпустили нормальное SDK для инди-разработчиков, то авось выходили бы порты новых эмуляторов и весьма интересных игр. Конечно на этой консоли можно без проблем поменять дисплей на более качественный, или поставить АКБ побольше (благо места в корпусе просто завались), но экспиренс от игры улучшается совсем незначительно. Если у вас небольшой бюджет, я порекомендую смотреть в сторону старых консолей на Android: у них обычно и дисплеи гораздо лучше, и производительность отличная и они вполне могут послужить и планшетом: клиенты ВК и YouTube на Android 4.x есть.
Вот так работают игровые консоли «под капотом». Эти устройства практически не поменялись за 10 лет, да и зачем? Свою функцию ультрадешевых устройств они выполняют нормально, а это самое главное. Конечно хотелось бы иметь версию с чуть-более качественным IPS-дисплеем и нормальным аналоговым стиком, но если так посмотреть — они уже есть и от более именитых производителей. Причем в разных форм-факторах: кому-то нравится GBA, а кому-то PSP.
Покупать ли такой девайс себе? В качестве основного устройства для игры — я бы не стал, ребенку — вполне возможно. Решайте сами :)
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud , чтобы не пропускать новые статьи каждую неделю!
Написал свою первую игру для Dendy (NES) - The Iron Steam
Всем привет. В этом посте я расскажу о своем первом опыте разработки игры для моей любимой консоли из детства под гордым названием денди (хотя раньше мы их приставками называли, но сейчас уже терминология устоялась). Далее вас ждет много интересного, так что заготавливайте вкусняшки.
Логотип консоли Dendy
История создания игры
Идея создать свою собственную игру для денди появлялась у меня довольно давно, но плотно занялся я этим вопросом только в конце 2022го года.
Основным стимулом для разработки игры послужило мое желание создавать свои модули расширения для консоли, так как для денди их практически не выпускалось, а у меня по этому поводу есть много идей и планов (модуль подключения обычно клавиатуры, модуль выхода в интернет и т.д.).
Изначально была поставлена задача написать хотя бы "Hello, World", который я мог бы запустить на эмуляторе. Но, начав читать переводной курс по разработке игр для денди на языке Си на хабре, мне удалось написать простейшую программу всего лишь за полчаса. И этого мне показалось слишком мало.
Более-менее освоив курс статей с хабра за 2-3 недели, в конце января 2023го было принято решение разработать пошаговую стратегию про стимпанковых мехов для закрепления навыков. Думал, что ограничусь созданием минимального геймплея, но разработка зашла немного дальше.
Такой сеттинг и жанр я выбрал, так как люблю пошаговые стратегии, стимпанк и игры про мехов (фронт мишн ван лав). Тем более у меня были наработки на эту тему в плане механик и немного лора (я делал наброски подобной игры для современных компов, но забросил).
В итоге с начала февраля 2023го началась активная разработка игры и продолжалась она до середины апреля (далее у меня появились более важные дела и игру пришлось отложить до лучших времен).
Игру я хотел анонсировать еще летом, так как базовые механики уже работоспособны и она проходима (хотя конкретно концовки у игры нет, можно просто пройти все уровни и прокачивать меха). Есть даже примерочный открытый мир, но он будет полностью перерисован и доработан.
Скриншот боевого геймплея актуальной версии игры
Особенности разработки игры для Денди
Разработка игр для NES/Famicom консолей является крайне специфическим занятием, так как требует понимания работы приставки на аппаратном уровне, что для многих является отталкивающим фактором. Но, так как у меня есть опыт разработки софта для микроконтроллеров, эта особенность для меня была не слишком критична.
Далее стоял вопрос о инструментах для разработки игры. Традиционно игры для денди пишут на ассемблере, так как ресурсы консоли очень ограничены и важен каждый такт процессора и каждый байт памяти. Я мог бы писать и на ассемблере, но это затянуло бы проектор и увеличило шансы к его забрасыванию на свалку истории.
В итоге я выбрал компилятор CC65, который позволяет писать код для денди денди на языке си. Этот компилятор поддерживается до сих пор и регулярно выходят обновления.
В качестве среды для разработки я выбрал Visual Studio Code. Для удобной сборки и запуска проекта был написан батник и добавлены горячие клавиши (но это тоже тема для отдельного поста). Так я собираю проект и запускаю его в эмуляторе нажатием одной клавиши на клавиатуре.
Глубоко закапываться в технические особенности консоли и разработки под нее я не хочу, так как ресурс все-таки развлекательный. Хочу отметить только несколько основных особенностей.
Вся графика состоит из тайлов 8х8 пикселей. При этом каждый тайл может использовать только 3 цвета и один прозрачный цвет (прозрачный цвет отображает цвет фона, а цвет фона определяется определенными битами регистров палитр).
Это значит, что требуется сводить все используемые спрайты к трем цветам, но если если спрайт состоит из нескольких тайлов, каждый тайл может использовать разные палитры (примерно так же это работает и для фона, но там немного сложнее).
Поэтому, если вы хотите вывести случайную картинку в формат NES, то ее нужно свести в формат 4 цветов и до нужно разрешения (256×240 пикселей). Вот пример преобразования картинки в формат, который уже можно вывести в вашу игру:
Реальное фото я преобразовал в денди формат (фото использовано с разрешения автора)
Подготовку изображения в почти автоматическом режиме легко сделать в фотошопе или гимпе (я использую гимп).
Но самая сложная часть разработки - это рисования пиксель арта в условиях очень низкого разрешения и ограниченности в количество цветов.
Для первых версий игры я использовал готовые спрайты из Front Mission без дополнительной подготовки. Они выглядели так себе, так как игра выходила на 16-битных консолях. Вот так это выглядело:
Спрайты меха в разных положениях
Когда я показывал людям эти спрайты и не уточнял, что это такое, большинство говорило, что похоже больше на месиво пикселей (я с этим согласен, меха там разглядеть сложно).
Но для тестов мне таких спрайтов хватало. И после рисования сетки поля я решил ее немного украсить травой, что в итоге породило вот такое кислотное чудо:
Скриншот режима битвы одной из ранних версий игры
На скриншоте выше видно, что трава действительно вышла даже немного симпатичная и в меню я тогда использовал некрасивые рамки.
Помимо режима битвы в игру был добавлен режим открытого мира. Карту мира я набросал довольно быстро и больше ее особо не переделывал. Выглядит она на данных момент вот так:
Временная карта мира
На карте мира каждая локация обозначена постройкой и войти в нее можно с помощью нажатия кнопки "A" на геймпаде. Локация в верхнем-левом углу - это локация-хаб с магазином, а остальные запускают сценарий битвы при входе (в каждой локации разный набор врагов, они отличаются комплектацией мехов и их количеством).
После того, как основные механики были реализованы, был начат процесс перерисовки мехов.
Как я уже говорил, одновременно можно использовать 3 цвета и один прозрачный цвет, который использует цвет фона. 3 цвета на при разрешении 16х24 пикселя на одно меха - это очень мало.
Поэтому я использовал решение, которое дало мне дополнительный цвет. Для этого я отказался от травы на экране и залил весь экран черным фоном. Это дало мне черный четвертый цвет для рисования мехов. Т.е. если я делаю прозрачный пиксель в спрайте, он выглядит как черный. Это позволило нарисовать более-менее адекватных мехов, которые выглядят как мехи. Вот так это выглядит в редакторе:
Спрайты мехов с использования прозрачных пикселей с черным фоном
Уже намного интереснее, но для анимации ходьбы нужно нарисовать для каждого положения по два спрайта (этим я пока не занимался, так как такой мелкий пиксельарт приходится рисовать буквально по пикселю, это очень муторно).
Многие технические ограничения консоли можно обойти за счет использования мапперов, но я пока обхожусь без него, так как хочу сделать создание реального картриджа максимально дешевым и простым. Стараюсь уложиться в стандартные 32 килобайта (место я потратил еще не все, музыка и прочее туда должно поместиться, тем более многое можно оптимизировать).
Резюмируя особенности разработки, можно сказать, что разработка игр для ретро-консолей особо ничем не отличается от разработки программ для микроконтроллеров. По этой причине постоянно приходится смотреть даташиты, описывающие разные узлы консоли.
Механики и ЛОР игры
Игра представляет собой классическую пошаговую стратегию, основанную на механике использования очков действия (AP). Каждое действие тратит очки действия, примерно как в лучшей в мире игре Fallout 2 (только у меня клетки квадратные). Система с фазами (как в X-COM) мне нравится меньше.
Панель, которая отображает состояние деталей меха и количество очков действия.
В режиме битвы игрок управляет своим мехом и пытается уничтожить вражеские мехи. Мех считается уничтоженным, если он лишается тела или обеих рук (без рук мех бесполезен). При этом, если мех лишается головы, он сильно теряет в точности, а если у него взрываются ноги, то он не может передвигаться. Битва заканчивается уничтожением всех вражеских мехов или гибелью игрока. Если игрок побеждает, он получает деньги за каждую сохраненную деталь вражеского меха.
Все оружие в игре делится на 4 типа:
Рукопашное оружие (может атаковать на одну клетку и есть возможность выбора точки атаки)
Пушки (наносят урон по случайной части меха с расстояния)
Снайперское оружие (наносят урон с расстояния и имеют возможность выбрать деталь вражеского меха для атаки)
Дробовики/картечницы (наносят урон по нескольким случайным частям меха)
Возможно будут еще какие-то типы оружия.
Вот пример меню выбора части меха для атаки:
Меню выбора части меха для нанесения по ней урона
Еще есть режим осмотра мехов (отображает имя, состояние частей меха и вооружение):
Режим осмотра меха, очки действия не тратит (Но может должно тратить?)
В режиме перемещения вы перемещаете меха курсором (каждый шаг тратит одно очко AP). Кнопка 'A' подтверждает перемещение, а кнопка 'B' возвращает меха на начальную точку (отменяет перемещение).
Механика использования экипировки пока не реализована.
Следующей важной частью игры является прокачка меха.
Вот так выглядит список доступных мест в локации-хабе:
Выбор места для посещения в хабе
А вот для примера магазин оружия:
Магазин оружия
Кнопка А покупает оружие в правую руку, В в левую, а Select возвращает вас на карту мира.
Вот мы и рассмотрели все основные особенности игры. Остальное вы можете попробовать сами используя эмулятор (ссылку на скачивание эмулятора и рома игры я дам в конце, если пикабу ссылки не уберет).
Планы по развитию игры
Планов по развитию игры у меня довольно много. Давайте приведу основные планы в виде списка:
Создание нормальной карты мира и проработка локаций на ней
Динамические анимации движения мехов в режиме битвы
Создание возможности ходить персонажем по хаб-локации и общаться там с людьми (но это сильно упирается в 32 килобайта памяти)
Написание лора с сюжетом и добавление его в игру
Создание диалоговой системы
Добавление звуков и музыки в игру (музыка на денди особенно специфическая штука)
Добавление новых спрайтов для мехов
Добавление различных построек и препятствий в режиме битвы (для оживления поля битвы)
Улучшение ИИ и добавление новых механик в битву
Расширение количества доступных частей и оружия для мехов
Режим игры для двоих игроков (PvP и PvE)
Для первого поста и анонса игры, я думаю, информации более-чем достаточно. Очень жду ваших предложений и замечаний по игре. Весь этот текст был написан в первую очередь ради получения обратной связи от потенциальных игроков, так как я не могу знать, что нравится другим людям, а исходить только из собственных соображений - это путь в никуда.
Поэтому жду вас в комментариях, готов ответить на все ваши вопросы. Спасибо за внимание.
Список основных ресурсов, которые я использовал при разработке:
Цикл статей по разработке игры для денди - https://habr.com/ru/articles/348022/
Википедия по разработке для NES (там все оч подробно описано и с примерами кода, но английским) - https://www.nesdev.org/wiki/NES_reference_guide
Живой форум по разработке ретро-игр (и не только) - emu-land.net
Сайт компилятор СС65 - https://www.cc65.org/
Еще несколько хороших статей про устройство консоли (на русском) - http://dendy.migera.ru/nes/g00.html
Эмулятор который я использую для отладки игры - fceux.com
Страница проекта. Там можно скачать ROM-файл для эмулятора (Нужно ли делать отдельный паблик для игры?) - http://73-it.ru/the-iron-steam.html
Видео-версия статьи с геймплеем и моими комментариям
Castlevania: another Simon's Quest
Будучи поклонником серии игр Castlevania и имея опыт писанины со времен паскаля и ассемблера, решил сваять альтернативную историю похождений Саймона Бельмонта.
С нуля и до того, что есть в видосе (практически завершенный движ) накатал за три недели вечеров, периодически впихивая разные посетившие идеи (зомбаки видны ток когда задом к ним, например, а так - тени)). Shadow Waltz назвал. Не юзал исходники, ток своё. Дольше всего мудился со спрайтами и тайтлами, пожалуй. И... Не выдумав сюжета, обнаружил, что заскучал)) Закинул прожект до времени, когда игрательное настроение сменится на созидательное.