Вчерашний WarCraft 3 в целом неплохо
Баланса нет конечно, большинство играло за компанию. Собрали 5х5 и я доволен, спасибо за игру. Набрать 10 игроков в классику... думал, что нереально. А если бы пришел еще HeraTuBa, Rakza и Хлорка, то это фул пати на 12-13 игроков.
Ответ на пост «Сквозь боль и страдания: Я сделал игру для денди»1
Ая-яй, в комментариях автора немного пожурили за отсутствие видео геймплея и цену картриджа. Игра на самом деле действительно пока напоминает демку, но потенциал к прикольному хоумбрю у нее есть. Касательно цены карика - это ж все таки коллекционная штучка, однако подобные вещи должны быть правильно оформлены - в своем кастом корпусе, с обложкой и уникальным номером экземпляра. По крайней мере так это вижу я.
Я тоже заказал плату под ROM, буду писать свою игрушку ради фана... Ну и конечно напишу об этом подробную статью, как вы и любите :)
Metal slug 6 жиробасы-терминаторы
metal slug 6 - босс 4 миссии.
Полное прохождение:
Сквозь боль и страдания: Я сделал игру для денди1
Вступление
Давно, когда я еще учился в школе, зимним вечером, пройдя очередной уровень марио я загорелся идеей - сделать свой платформер для игровой приставки.
Примерно через полгода у меня появился персональный компьютер с операционной системой MS-DOS и средой программирования QBasic:
Ну вот! Подумал я, настал мой час и сел писать игру в надежде что как-то придумаю как запихнуть эту игру потом в приставку денди.
Наивно, но тогда не было интернета и узнать, как вообще создавать игры и заливать их на картридж было довольно сложно.
Понятное дело, после некоторых попыток у меня толком ничего не вышло.
Да, у меня получилось сделать какой-то фон, персонажа и даже заставить его двигаться и на этом разработка игры была закончена.
Прошло почти 25 лет, у всех стало модно закрывать какие-то свои гештальты, решил закрыть и я.
Для начала нужно было ознакомиться с платформой и ее особенностями, а их как оказалось довольно много, как и у всей ретро-техники.
Железо
Знакомиться с платформой я начал буквально с "кишков микросхем, заказав плату, изучив схему и собрав это все чудо из рассыпухи, благо опыт работы с паяльником довольно неплохой.
Что мы имеем:
CPU - UA6527P/UA6527, Клон популярного в свое время 8-битного процессора 6502.
PPU - 6538/6528, Видеочип, аналог видеокарты.
RAM - 62256, 2 Кбайт оперативной памяти, которые позволяют использовать горизонтальный или вертикальный скролл по очереди, было бы 4 Кб можно было бы в теории и одновременно.
Звук - 2 прямоугольных канала, 1 треугольный, 1 шумовой и цифровой канал. Да-да, примитивная звуковая карта уже в те времена.
Разрешение экрана 256х240 и 54 цвета (Есть цвет чернее черного и еще некоторые цвета, которые лучше не использовать для избежания глюков на разных телевизорах).
Инструментарий
Писать код для приставки можно на двух языках: на ассемблере и си.
Я решил использовать си для короткого и удобного вида кода, но некоторые вставки ассемблерного кода пришлось писать с нуля (так как скорости процессора в 5,37 МГц всегда не хватало).
Для компиляции кода я использовал компилятор cc65, с опцией --add-source (добавляет ассемблерный код, в котором уже можно найти не очевидные косяки).
Для графики, кроме фотошопа использовал программу YY-CHR:
Для распиливания рома на прошивку, программу NRM.
Для статичных фонов есть очень удобная программа NES Screen Tool, которая позволяет нарисовать и выгрузить экран в массив байтов. Бонусом этом массив можно еще сжать RLE сжатием.
Для написания музыки и звуков я использовал FamiTracker и библиотеку FamiTone2.
Для создания уровней Tiled + самописный конвертер в встроенный формат карты.
Для схемы картриджа Sprint layout.
Для отладки лучше всего подходит эмулятор FCEUX:
Код игры
Но самая попаболь проблема, была в том, что я решил делать платформер а не статичную игру.
Сразу загрузить массив байтов на экран нельзя, потому что длинна уровня может быть от 3 до 256 экранов в длину.
Видеочип за один кадр успевает загрузить только 2 ряда блоков по 8 пикселей.
Еще за этот кадр нужно успеть прочитать состояние джойстиков, проиграть такт музыки, обработать коллизии, передвинуть спрайты на экране и т.п.
Для оптимизации я разработал такую структуру уровня. Где экран разбит на поле 16х16:
const unsigned char LEVEL1[] = {
...
0x75,
2,
ID_OBJECT,
...
};
Первый байт — координаты на экране x = 7, y = 5.
Второй байт — номер экрана уровня.
Третий байт — идентификатор объекта.
У каждого объекта есть атрибут коллизии, может игрок пройти через него или нет. На основе этих атрибутов строиться карта коллизии уровня.
unsigned char COLLISION[64];
Первые 32 байта, это первый экран NAMETABLE, вторые 32 байта для второго экрана NAMETABLE экрана.
Каждый бит, может быть, 0 если игрок может пройти и 1 если стена.
В итоге получаем два поля по 16х16 бит = 32+32 байта.
Картридж
Я не особо хороший художник, рисовать графику, уровни, спрайты, когда у тебя всего 4 цвета на плитку, уходит уж очень много времени.
Было решено упростить задачу и запихать все в один банк памяти.
Это позволяет использовать картридж без маппера и не писать дополнительный код, который переключает эти банки.
Из приставки можно реально выжать намного больше и красивее, но по трудозатратам эта игра будет на уровне современной игры с красивой графикой, стоит ли оно того?
Возможно, кто-то захочет этим заняться, и я поделюсь с ним своими наработками.
В итоге схемотехника картриджа сводиться к плате с 2мя микросхемами памяти, у которой нужно просто подключить ноги к шине данных картриджа.
Можно было бы, конечно, заказать у китайцев картриджи на каплях или флэш-памяти, но я хотел именно винтажного вида картриджа на DIP микросхемах (такие раньше попадались только в старых или дорогих картриджах)
Сами микросхемы найти не составило проблем, сначала я развел схему под w27c512, но как оказалось более объемная память w27c010 стоит дешевле и найти ее еще проще.
После того как пришли платы, я подготовил прошивку через NRM, прошил микросхемы в программаторе XGECU T48 и впаял их на место.
Распространение
Как продвигать игру, продавать картриджи и как их распространять: большой вопрос.
Также спрос на такие игры небольшой, даже если спрос и будет, то большую партию картриджей просто невозможно будет спаять.
Я крайне доволен своей работой, выпустить игру на физическом носителе для приставки 40-летней давности довольно крутая ачивка для разработчика игр.
И по традиции, страница игры... На авито?:





































