Из ASCII в Pixel Art и обратно

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Новую игру Coin-Op Vice я делаю на своем старом движке текстового режима. Однако это псевдотрехмерная (2.5D) пиксельная игра с перспективой. Оказалось, что символьный ASCII движок может справиться с этой задачей, нужно только сделать пару апгрейдов.

Апгрейд первый: кастомный шрифт

Каждый символ шрифта - это просто картинка. В моем случае пиксельная. Если символы заменить на произвольные картинки, то можно создавать крутой Pixel Art из этого шрифта. В таком методе есть два ограничения:

  1. Шрифт у меня изначально монохромный. Буква может состоять из пикселей только одного цвета. Информация о цвете символа есть, но информации о цвете каждого пикселя внутри символа - нет. Это связано со способом создания шрифта в движке. Эту часть движка я решил не менять.

  2. Набор символов ограничен. Если в шрифте символ «/» заменить на спрайт правой ноги, то теперь все символы «/» на экране станут правой ногой. И если с помощью этого символа сделана рука (как на анимации ниже), то она превратится в ногу. На данный момент я уже использую символы из всего диапазона ASCII для формирования картинки и частично залез в символы кириллицы. Например, символы «ф», «ч», «я», «ы» участвуют в формировании ускоряющих дорожек в уровне (как в аэропортах).

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Сделал эту анимацию в подарок будущей жене

Из-за монохромности символов картинка получается в стиле Спектрума. А из-за ограничения набора символов я могу редактировать и тестировать различные конфигурации прямо в коде с помощью клавиатуры. Ведь, по сути, каждая картинка в игре соответствует клавише на моей клавиатуре. Одни плюсы.

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Апгрейд второй: несколько алфавитно-цифровых слоев с переменным размером сетки

Представим, что сейчас 1978 год, и вы сидите перед алфавитно-цифровым дисплеем (VT100, например). Допустим, он может отображать 24 строки по 80 символов. Символы располагаются строго по сетке с фиксированным и одинаковым для каждой ячейки размером.

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Теперь создаем несколько алфавитно-цифровых слоев, как если бы несколько компьютеров (или видеоадаптеров) передавали сигнал на ваш дисплей. Сигналы складываются, и вы видите совмещенное изображение - несколько текстовых слоев.

Позволим теперь каждому текстовому слою иметь свое собственное плавное смещение на экране, а также свой собственный размер ячейки под символы. Все. Теперь можно делать 2.5D Top-Down игру с перспективой. Нужно только правильно рассчитывать смещения алфавитно-цифровых слоев и задавать размеры их сеток.

Апгрейд третий, не аутентичный

Не устоял перед желанием добавить в игру графику с CGA палитрой. Очень нравятся цвета, а лица получаются особенно живописными. Надеюсь, что ощущение ретро стиля не пострадает из-за такой эклектики. Каково ваше мнение?

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Обратно в ASCII

Как-то раз, в процессе бесконечного тестирования и отладки игры, у меня кастомный шрифт переключился на изначальный - символьный. Картинка мне очень понравилась. Прямо как в другом мире. Матрица.

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Решил сделать специальный режим. Если подойти к терминалу в игре, то можно переключиться в такой режим «матрицы». Поскольку название «Матрица» лучше не использовать, то назвал режим «Нео-Н». Есть отсылка к главному герою фильма, а так же название подчеркивает, что все светится неоном. Жена придумала.

Нахождение в этом режиме дает много преимуществ: монстры не наносят урон (а я им еще как могу), становятся видны скрытые проходы, и можно собирать специальные картриджи для построения колоды. После 15 секунд происходит автоматическое «выныривание» из этого режима.

В процессе перехода в такой расширенный текстовый режим я попробовал плавно менять параметры параллакса. Картинка стала, как бы, раздвигаться. Интересно же получилось?

Из ASCII в Pixel Art и обратно Gamedev, Разработка, Ретро-игры, Инди, Инди игра, Unity, Unreal Engine, Pixel Art, ASCII, Гифка, Длиннопост

Такой вот камбэк в ASCII, пусть и всего на 15-и секундные интервалы. Решил вам рассказать. Надеюсь, вам понравился стиль. Заходите на страничку игры в Steam, там уже доступна демка с этой фичей.

Пока!

Лига Разработчиков Видеоигр

6.7K поста22.2K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"