Привет! Мы разработчики из Беларуси, и сейчас делаем масштабный проект - LOST IN. Это игра про путешествие во времени, где вы стали его заложником: из прошлого в будущее и наоборот. И одна из локаций - Полоцкое княжество!
Также, мы решили добавить в игру нашу мифологию! Вы будете путешествовать по территориям Полоцкого княжества и, иногда, встречать нечисть, прямиком из книг Владимира Короткевича 🥶
Вот к примеру Ератник - злостное существо, что в попытках получить вечную жизни стало тем, чем вы его сейчас видите... И конечно, вы сразитесь с ним в нашей игре!
Если вам хочется знать больше о других проектах студии, вот наш тг - t.me/sector13_studio Мы будем очень рады вашей поддержке ❤️
Давно, когда я еще учился в школе, зимним вечером, пройдя очередной уровень марио я загорелся идеей - сделать свой платформер для игровой приставки.
Примерно через полгода у меня появился персональный компьютер с операционной системой MS-DOS и средой программирования QBasic:
QBasic
Ну вот! Подумал я, настал мой час и сел писать игру в надежде что как-то придумаю как запихнуть эту игру потом в приставку денди.
Наивно, но тогда не было интернета и узнать, как вообще создавать игры и заливать их на картридж было довольно сложно.
Понятное дело, после некоторых попыток у меня толком ничего не вышло.
Да, у меня получилось сделать какой-то фон, персонажа и даже заставить его двигаться и на этом разработка игры была закончена.
Прошло почти 25 лет, у всех стало модно закрывать какие-то свои гештальты, решил закрыть и я.
Для начала нужно было ознакомиться с платформой и ее особенностями, а их как оказалось довольно много, как и у всей ретро-техники.
Железо
Знакомиться с платформой я начал буквально с "кишков микросхем, заказав плату, изучив схему и собрав это все чудо из рассыпухи, благо опыт работы с паяльником довольно неплохой.
Готовая приставка
Что мы имеем:
CPU - UA6527P/UA6527, Клон популярного в свое время 8-битного процессора 6502.
PPU - 6538/6528, Видеочип, аналог видеокарты.
RAM - 62256, 2 Кбайт оперативной памяти, которые позволяют использовать горизонтальный или вертикальный скролл по очереди, было бы 4 Кб можно было бы в теории и одновременно.
Звук - 2 прямоугольных канала, 1 треугольный, 1 шумовой и цифровой канал. Да-да, примитивная звуковая карта уже в те времена.
Микросхемы приставки
Разрешение экрана 256х240 и 54 цвета (Есть цвет чернее черного и еще некоторые цвета, которые лучше не использовать для избежания глюков на разных телевизорах).
Приставка Dendy она же NES
Инструментарий
Писать код для приставки можно на двух языках: на ассемблере и си.
Я решил использовать си для короткого и удобного вида кода, но некоторые вставки ассемблерного кода пришлось писать с нуля (так как скорости процессора в 5,37 МГц всегда не хватало).
Для компиляции кода я использовал компилятор cc65, с опцией --add-source (добавляет ассемблерный код, в котором уже можно найти не очевидные косяки).
Для графики, кроме фотошопа использовал программу YY-CHR:
YY-CHR
Для распиливания рома на прошивку, программу NRM.
Для статичных фонов есть очень удобная программа NES Screen Tool, которая позволяет нарисовать и выгрузить экран в массив байтов. Бонусом этом массив можно еще сжать RLE сжатием.
Для написания музыки и звуков я использовал FamiTracker и библиотеку FamiTone2.
Для создания уровней Tiled + самописный конвертер в встроенный формат карты.
Для схемы картриджа Sprint layout.
Для отладки лучше всего подходит эмулятор FCEUX:
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мя микросхемами памяти, у которой нужно просто подключить ноги к шине данных картриджа.
Схема в Sprint layout
Можно было бы, конечно, заказать у китайцев картриджи на каплях или флэш-памяти, но я хотел именно винтажного вида картриджа на DIP микросхемах (такие раньше попадались только в старых или дорогих картриджах)
Сами микросхемы найти не составило проблем, сначала я развел схему под w27c512, но как оказалось более объемная память w27c010 стоит дешевле и найти ее еще проще.
После того как пришли платы, я подготовил прошивку через NRM, прошил микросхемы в программаторе XGECU T48 и впаял их на место.
Готовый картридж для Денди
Распространение
Как продвигать игру, продавать картриджи и как их распространять: большой вопрос.
Также спрос на такие игры небольшой, даже если спрос и будет, то большую партию картриджей просто невозможно будет спаять.
Я крайне доволен своей работой, выпустить игру на физическом носителе для приставки 40-летней давности довольно крутая ачивка для разработчика игр.
За последний год немного подтянул свои навыки в создании игровых механик, разрабатывая прототипы небольших "симуляторов ходьбы" от первого лица. Даже были планы один из них со временем релизнуть. Но в какой-то момент пришло понимание - на рынке сотни абсолютно одинаковых "хорроров от первого лица", поэтому коммерческого потенциала в них я просто не вижу. Но недавно дочка проходила Kena: Bridge of Spirits и спросила: "А сложно сделать такую игру?!". На самом деле Kena - технически сложная игра, с невероятным количеством мелких механик и деталей, но я посчитал это вызовом) Сделать такую же игру, как Kena в соло практически невозможно, но на данный момент у меня уже готово довольно много мелких механик. Помимо элементарных ходьбы, бега, прыжков, приседа, уже готовы порталы, по которым можно мгновенно переместить в разные части локации, бросание магического шара, который используется для активации предметов.
Тут, если обратили внимание, когда Айвин заходит в пещеру, то сопровождающий его дух начинает светиться ярче, освещая герою путь. Мелкая деталь, но думаю приятная. Также недавно протестировал первых врагов Айвина - демонических огненных шаров. Идея с ними следующая: - Айвин попадает на закрытую площадку, на которой его преследуют демоны - попав по ним магическим шаром предка, демоны на короткий период останавливаются - за это время Айвин может сделать что-то, чтобы выбраться из этой ловушки, в видео, например, он должен активировать "батут", который подбросит его выше, чем герой может прыгнуть
На самом деле механик уже много и уже постепенно начал тестировать визуал локаций. Возможно глаз уже замылился, но визуально вроде бы смотрится неплохо:
1/5
Кому будет интересно понаблюдать за процессом разработки, то милости прошу сюда в tg проекта. Название - AIVEEN: Sparks of Souls И да, вы всё правильно поняли - разрабатываю соло, на Unreal Engine 5, денег не прошу, только ваше внимание и интерес, если понравится.
Продолжаю разработку своей игры. Здесь персонаж спускается в кромешную тьму, где освещать себе путь можно будет только с помощью телепорта. Как это работает: — каждая телепортация создает вспышку, которая позволяет увидеть все вокруг; — телепорт переносит персонажа на ~2 метра в любую сторону; — можно преодолевать различные препятствия, но если телепортироваться прямо в твёрдый объект или в стену, то персонажа разорвет на части; — каждая вспышка телепорта может привлекать чье-то внимание.
Хотел бы немного рассказать об игре, которую уже вот вот выпущу, а в конце поста - для сообщества небольшой подарок!
Если интересно - о себе: За моей спиной более 10 лет программирования на C++ и около 7 лет в Unreal Engine. Каждый раз я пытался взяться за гигантский проект, что раз за разом приводило меня к краху, так как нехватка сил, контента и знаний - давала о себе знать. Сейчас, я осознаю свои возможности, поэтому решил сделать простой, но в то же время очень интересный и играбельный проект!
К вашему вниманию: Field of Enemies - рогалик, в который стоит поиграть и сейчас расскажу почему:
Об игре:
Это казуальный экшен-рогалик с видом сверху, где вас ждут бесконечные орды врагов, от неповоротливых зомби до продвинутых роботов. Ваша цель проста — продержаться как можно дольше, окружив себя настоящим адом из монстров, и вписать своё имя в историю таблицы лидеров!
А теперь перейдём к механикам!
Совсем недавно я делал пост с игрой и какие сложности встречались у меня. Сейчас я хочу более делально рассказать вам о большинстве механик, ну поехали...
(я прикреплю под каждым подразделом ссылки с GIF более высокого качества, для тех, кто хочет рассмотреть их поближе, а то помнится, в прошлый раз вы хотели побольше картинок прямо тут, ну... я вас услышал и на этот раз подошёл к оформлению с креативностью)
Главное меню (HQGif): Начнём пожалуй с главного меню! - Вы наверное устали от обычных меню, поэтому я сделал его интерактивным и трехмерным, чтобы кнопочки болтались и хоть как то приятно влияли на вашу психику, а то игра итак, не для слабонервных
Нарастающая сложность (HQGif): Игра динамичная, например вот как выглядит начало игры и спустя 5-7 минут. Чем больше играете, тем сильнее враги и их больше!
Выбор способностей (HQGif): Я сделал удобную систему выбора способностей, вы можете нажать мышкой, либо забиндить любую клавишу (максимум 3 кнопки). Раньше были паузы, но так как игра кооперативная, постоянные паузы всех моих друзей бесили во время тестов, ведь если у кого то повышался уровень, то пауза появлялась у всех, а благодаря такой системе - паузы больше не нужны.
Кооператив (HQGif): Ну раз речь пошла о коопе, то я сделал его в этой игре, максимум 4 игрока. Чем больше игроков, тем больше врагов. Так же я продумал тот момент, что если один игрок играет дольше в текущей сессии, а ты только заходишь, то соответственно враги для тебя будут очень сильные, поэтому для каждого игрока спавнятся отдельные мобы, с которыми игрок должен справиться (ну или нет :D)
Помощь другим игрокам (HQGif): Вы так же можете воскрешать игроков в кооперативе - что продлит ваши мучения в игре
События во время игры (HQGif0, HQGif1): Порой в игре была нехватка экшна, поэтому я сделал некоторые элементы, которые постоянно будут развлекать игрока, например машины, которые проезжают по дороге и сбивают как игроков так и врагов, или метеориты и ураганы, которые заставляют игрока постоянно двигаться!
Наблюдение (HQGif): Оказалось, что просто валяться без сознания - это очень скучно, поэтому пришлось добавлять эту механику и как оказалось на тестах - не зря. Теперь ты можешь наблюдать за всеми игроками в ожидании спасения.
Прокачка (HQGif): Для большего вовлечения игрока, я написал простую систему прокачки в главном меню. За собранный синтез в ваших выживаниях - вы можете немного улучшить некоторые характеристики, пока их 4, но планирую сделать больше
Таблица лидеров (HQGif): Если игрок захочет к чему то стремиться, или доказать кто тут главный - таблица лидеров лучшее место для этого, поэтому я сделал 4 таблицы лидеров!
Скины (HQGif): Система скинов - это действительно базовый минимум для любых инди проектов, ведь всегда кто-то хочет выделиться и в этой игре у него получится, потому что каждый скин имеет свой уникальный цвет, а практически все способности во время игры - будут его использовать, что точно выделит вас на фоне остальных!
Итак, вот мы прошли по основным механикам! Сейчас доступен всего один режим - бесконечного выживания, но в скором времени я добавлю еще. Помимо этих механик, я так же проработал настройки игры, звуковое сопровождение, управление и многое другое. Я даже нашел время, чтобы сделать подключение к игре через Steam Overlay и отображение присутствия используя Steam Rich Presence.
Я надеюсь, что вам понравилась моя статья с более детальным описанием игры. Спасибо, что дочитали её до конца, оставляйте комментарии, делитесь вашим мнением и будьте здоровы!
Отдельное спасибо сайту Pikabu, за предоставленную возможность публиковать свои посты об игре, поэтому специально для вас я выделил 20 ключей для Steam. По возможности, пишите номер ключа в комментариях, который вы активируете!
Товарищи, всё пропало! 😩 Тот самый Ретроградный Меркурий, в существование которого я так истово пыталась не верить, настиг меня…
Всё рухнуло на третьем арте для Inktober. Я решила объединить в одной композиции стиль двух своих фей: Хаос (Ноктуру) и Порядок (Солару). И знаете, что произошло?
Они отказались стыковаться! Категорически.
Мой обычный процесс, где генерация идеи, сборка в Procreate, финальная обводка дал сбой. По отдельности героини смотрелись отлично, а вместе превращались в визуальную кашу. Это был знак.
Моё решение: STOP. План «Б»
Я приостанавливаю бег по граблям и перехожу от интуитивных набросков к системной работе. Моя новая цель создать эталонные концепт-арты для каждой феи. Полноценные кейсы на Behance, которые станут «библией стиля» для всего проекта.
Одно и то же можно нарисовать десятком способов, и этот хаос невыносим. Пора схлопнуть все вероятности в одну стройную систему.
Так в моей голове выглядел творческий хаос, который устроил Меркурий.
Иногда нужно отступить, чтобы сделать уверенный рывок вперёд. В этот раз Порядок должен победить!
А вам доводилось сталкиваться с таким? Когда проект трещит по швам и нужно всё останавливать и переделывать с самого начала? Делитесь своими историями выживания!
Из новостей: Crystal Dynamics провела очередную волну сокращений, Valve представила новые железяки, движок Cocos купили за 72 млн долларов, Unreal Engine 5.7.
Из интересностей: у трупных забегов могут возникнуть проблемы, как устроены зеркала в Sims 4, в Donkey Kong Bananza лучший компаньон.
Обновления/релизы/новости
Crystal Dynamics провела очередную волну сокращений
Procedural Content Generation готов для прода, экспериментальная система Nanite Foliage для рендеринга детализированный окружений, большие улучшения по части работы с анимациями и многое другое.
Похоже, что каждый, изучающий создание воксельного движка, впитывает знания исключительно осмосом информации. Давайте изменим эту ситуацию и напишем воксельный движок сами!
Кевин Шмитт рассказывает о своей работе по проектированию уровней для игры, в том числе о том, как он получил работу в LucasArts в 1995 году, подходе к дизайну уровней Outlaws, советах новым разработчикам и многом другом.
[RU] Проблемы контурных карт: анализ графики Europa Universalis 5
[RU] 1C Игры — с начала до продажи Tencent. Часть 1. «Золотой век» игровой индустрии
В первой части выпуска про историю игрового направления 1С поговорили с Юрием Мирошниковым и Николаем Барышниковым — людьми, стоявшими у истоков российского геймдева.
[EN] Цикл хитового жанра
Никто не знает, когда закончится очередной бум жанров с быстрыми обновлениями. Создание любой игры — рискованное занятие.