Денди разработчик, Сколько времени ушло на разработку?
музыка из меню походу клодом была сделана. Он мне подобную мелодию сочинял)
Первый прототип я собрал за день, а вот допиливать его пришлось ещё некоторое количество дней, чтобы всё нормально работало. Плюс пришлось оптимизировать производительность.
Попробуй сам написать что-то подобное, да ещё и запихнуть это в 40 КБ с более качественным артом — тогда поймёшь, что это кровь и пот. Это не JavaScript, где всё пишется в пару промптов.
На «Денди» писать геморно, даже если код генерирует ИИ. Всё приходится по несколько раз перепроверять через Lua-скрипты в эмуляторе, изучать правильность кода, анализировать принятые решения и постоянно думать о бюджете производительности и графики. Каждый байт на счету, каждый тик процессора имеет значение. Это совсем другие условия разработки.
Кстати, Werton привёл в пример Former Dawn. Вы вообще ROM этой игры видели? Там несколько мегабайт и отдельный маппер с Hyper-Fast Bank Switching. На мой взгляд, сравнивать её с простой и дешёвой игрой не совсем адекватно.
Пожалуй, более адекватным сравнением будет Micro Mages. Там действительно те же 40 КБ. Но, блин, чтобы сотворить нечто подобное, нужно минимум месяц полной занятости — по 8–10 часов в день. Над такой игрой придётся пыхтеть, просчитывая каждую команду на ассемблере и вылизывая каждую мелочь. И это даже с помощью ИИ!
Саму же Micro Mages два разработчика создавали около двух лет, причём ещё до эпохи современного генеративного ИИ.
И сравните цену: Micro Mages стоит 10 долларов, а свою игру я продаю более чем в пять раз дешевле.
Насчёт музыки — да, Claude, я не музыкант. Музыка там очень простая, скорее для галочки. Вставлять музыку из чужих игр мне не хотелось, к тому же это уже было бы пиратством.
Добавлено позже:Единственный сильный раздражытель для меня - правая сторона экрана. Всё время пытаюсь проехать туда, ну или пули попадают во што-то невидимое. Перекрасить бы с чёрново на серый, например.
Пофиксил
Добавлено позже:В Battle City лучше сделано перемешивание спрайтов, там при достижение предела в 8 спрайтов на scanline они мигают через кадр и выглядят прозрачными, но здесь один спрайт не отображается по 2-3 кадра и выглядит ужасно. Это заметно, если позволить расплодиться танкам наверху.
Я улучши и сделал похожий прием что в Battle City: направление заполнения OAM переключается каждый кадр (шаг +4/−4), поэтому порядок приоритетов инвертируется — кого «съел» лимит в одном кадре, тот рисуется первым в следующем. Сверх этого — ротация восьми групп отрисовки (6 слотов врагов, взрывы, пули), стартующая с разного элемента каждый кадр.
Почему не выходит точно как в Battle City
У меня больше спрайтов на экране. В Battle City одновременно 4 вражеских танка, у нас 5 (max_act = 5), плюс экипаж-танкисты, мины и больше типов бонусов. На одной строке набегает 14+ спрайтов против 8, которые вытягивает PPU.
Одной инверсии приоритета хватает только при небольшом перегрузе. Она меняет местами тех, кто в начале и в конце очереди отрисовки. Когда спрайтов заметно больше восьми, оказавшиеся в середине очереди отбрасываются в обоих кадрах — они бы не мигали, а пропадали насовсем.
Поэтому добавлена вторая ротация с периодом 8 кадров — она гарантирует, что никто не исчезает навсегда. Но именно она и даёт пропуски по 2–3 кадра вместо честного «через кадр». Замер на специально перегруженной строке (8 танков = 16 спрайтов, PPU оставляет 8): игроки видны 99% кадров, враги — от 24% до 43%, вместо ровных 50%.
Аппаратные лимиты NES обойти нельзя: 8 спрайтов на строку, 64 в OAM.
Сейчас у меня свободно 105 байт PRG и 0 байт RAM — места под более умный планировщик уже нет (если только опять код не переписывать и то что то нужно менять, убирать что бы помогло).