Серия «ASCIILL - экшн-головоломка в сумасшедшем ретро-арт»

Сделал новый баннер на Стиме для своей символьной игры - стало лучше?

Сделал новый баннер на Стиме для своей символьной игры - стало лучше? Ретро-игры, Roguelike, Сапер, Asciill, Баннер, Игры, Разработчики игр, ASCII

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

Посмотрите, пожалуйста, на новый вариант. Хочется по нему тыкнуть и посмотреть, что за игра или нет?)) Что подправить?

Страничка игры на Стиме: store.steampowered.com/app/1878770/ASCIILL/

Символьный инопланетный храм с минами

Символьный инопланетный храм с минами Инди игра, Steam, Скидки в Steam, Сапер, Видеоигра, Инди, ASCII, Гифка

В соревновании на самую нишевую игру, моя игра ASCIILL была бы, как минимум, в призерах. При том, что геймплей прикольный (судя по отзывам), саундтрек классный и история с юмором и сюжетным поворотом.

Символьный инопланетный храм с минами Инди игра, Steam, Скидки в Steam, Сапер, Видеоигра, Инди, ASCII, Гифка

Заходите на страничку Стима посмотреть: https://store.steampowered.com/app/1878770/ASCIILL/

Там еще и скидка сейчас.

Показать полностью 1

Трейлер ретро игры ASCIILL - что подправить?

Привет ребята! Сделал трейлер своей игры для Стима и нужен совет. Что подправить? Что добавить? Буду рад любым мыслям. Спасибо!

Скринсейвер пиксельными текстовыми символами из ретро игры

История в моей ретро-инди-игре ASCIILL предполагает, что все уровни инопланетного храма находятся в зоне сильного радио-магнитного излучения.

Скринсейвер пиксельными текстовыми символами из ретро игры Инди игра, Ретро-игры, Инди, Разработка, Скринсейвер, Видеоэффекты, Видео

В попытке сделать подходящий фоновый эффект пришел к такому матричному эффекту. Дополнительно разместил некоторые объекты параллаксом.

Скринсейвер пиксельными текстовыми символами из ретро игры Инди игра, Ретро-игры, Инди, Разработка, Скринсейвер, Видеоэффекты, Видео

Стал ловить себя на том, что иногда не играю в игру, а смотрю на случайные переливы фонового эффекта. Более того, захотелось вообще убрать уровень и просто смотреть под музыку за трансформациями текстовых узоров.

В результате решил сделать отдельный режим в игре - «скринсейвер». Запустив из главного меню и включив любимую музыку, просто оставляю на мониторе фоном. На видео в начале поста можно посмотреть, что получилось. Как вам?

Саму игру, для которой сделал обновление со скринсейвером, можно посмотреть на страничке на Стиме.

Показать полностью 2

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL Ретро-игры, Инди игра, Старое железо, Гифка, Видео, Длиннопост

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

Одна такая игра только что вышла на Стиме. Буду рад показать вам основные ретро компоненты, которые я использовал, а также первую реакцию игроков на них.

Графика

«От графики свело олдскулы :)», — из отзыва на Стиме.

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL Ретро-игры, Инди игра, Старое железо, Гифка, Видео, Длиннопост

Со временем воспоминания легко могут исказиться. Кажется, что трава раньше была зеленее, а светящиеся буквы на мониторе красивее и волшебнее. Если сейчас включить древний компьютер, то картинка будет не та. Раньше было круче на этом же мониторе!

Моя задача — попробовать передать в игре то самое волшебное ретро чувство. Я аккуратно добавил красок и плавность перемещения в текстовый режим. Как вам?

Механика

«Геймплей интересный - такая смесь action и puzzle. Микс побегать и подумать», — из отзыва на Стиме.

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL Ретро-игры, Инди игра, Старое железо, Гифка, Видео, Длиннопост

Core-механику игры ASCIILL задумывал, как Metal Gear на Roguelike-поле с ловушками из Сапёра. Возможно, такая смесь звучит диковато, но получилось весьма играбельно, судя по отзывам. В основном режиме на разгадывание ловушек по цифрам тратится в среднем 20 % времени. В режиме «Челленж» (ежедневный случайный уровень, один для всех игроков) — до 70 %.

История

«Да, тексты огонь! Короткие, ненапряжные, и посмеялась местами от души», — из отзыва на Стиме.

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL Ретро-игры, Инди игра, Старое железо, Гифка, Видео, Длиннопост

Тайный агент Эскилл направляется в инопланетный храм, напичканный ловушками. Сильнейшее электромагнитное излучение препятствует прохождению видеосигнала, поэтому вся информация проходит лишь в виде текстовых символов.

Вот так нарратив объясняет графический стиль. Если бы не это электромагнитное излучение, то игра безусловно была в VR. Но условия, блин, сложные, поэтому пропускной способности канала хватает лишь на передачу картинки в расширенном текстовом режиме.

Задание на каждую миссию выдает Б.О.С.С. Нужно расхищать сокровища, уничтожать инопланетных тварей, нейтрализовывать охранную технику.

С каждым новым уровнем приходит понимание, что Б.О.С.С. не тот, за кого себя выдает, а Земля и агент Эскилл — лишь пешки в игре могущественных сил Вселенной.

Несмотря на пародийный стиль диалогов, решил добавил несколько сюжетных поворотов. Кстати, как бы вы расшифровали аббревиатуру Б.О.С.С.? Расшифровку дает агент Эскилл в финальных титрах.

Название

Самый сумасшедший ретро стиль + микс игровых механик в игре ASCIILL Ретро-игры, Инди игра, Старое железо, Гифка, Видео, Длиннопост

Графика в игре сделана из символов кодировки ASCII, что и определило первые пять букв названия. Как бы вы произнесли ASCIILL? Возможно как «Эсс Килл» или «Ass Kill». В игре действительно нужно надрать (Kill) кое-кому задницу (Ass). Хотя, возможно это лишь случайность, и такой интерпретации нет. Однако финальная схватка с галактическим гадом точно есть.

Буду очень рад, если вы зайдете на страничку игры в Стиме, чтобы посмотреть на графику/фишки и/или добавить в Wishlist на будущее. Спасибо!

Показать полностью 4 1

Графика пиксельным шрифтом для Сапёра от третьего лица

Графика выполнена в ASCII стиле. Символы стилизованы под текстовый режим на CRT мониторе.

Графика пиксельным шрифтом для Сапёра от третьего лица Pixel Art, Инди игра, Ретро-игры, Coub, Гифка, Длиннопост

Интерфейс и вся графика сделана из символов.

Графика пиксельным шрифтом для Сапёра от третьего лица Pixel Art, Инди игра, Ретро-игры, Coub, Гифка, Длиннопост

Экран загрузки.

Графика пиксельным шрифтом для Сапёра от третьего лица Pixel Art, Инди игра, Ретро-игры, Coub, Гифка, Длиннопост

Посмотреть на игру ASCIILL, для которой делалась графика в таком стиле, можно на странице в Стиме.

Показать полностью 3

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

Всем привет! Уже больше 30 лет я занимаюсь разработкой видеоигр и регулярно экспериментирую с различными игровыми механиками. В результате я пришел к идее создать игру по типу сапёра, но от третьего лица и на roguelike подобном уровне.


Исследуя большое пространство, нужно собирать сокровища, разбираться с обитателями и охранной системой. При этом важно избегать ловушек, которые можно вычислить по цифрам. Как в игре «Сапёр».


Игра получилась на удивление иргабельной, извините за тавтологию. Интересное сочетание экшена/аркады и паззла/адвенчуры. Разрешите рассказать вам о паре алгоритмических задач, возникших при генерации уровней. Сами алгоритмы простые. Однако интересно именно то, что их можно использовать в игре.


По мере написания статьи я делал анимированные иллюстрации и тестовый уровень, который вставил в игру. Получилось, что в результат этой статьи можно поиграть. Буду рад, если вам будет интересно, весело и/или полезно.

Механика

Уже несколько лет я занимаюсь разработкой пазл-платформера с открытым миром в стилистике текстового режима. В различных местах игры расставлены компьютерные консоли, к которым можно подойти и запустить имеющиеся там программы и игры. Одной из таких игр и является ASCIILL. Механику игры можно легко понять по этой анимации:

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

На поле расставлены ловушки. Каждое число показывает количество ловушек в восьми клетках вокруг него. Ловушки можно вычислить, как в игре «Сапёр». Однако в отличии от последней разминировать ничего не нужно. Главное — не попасться в ловушку! Цели каждого уровня могут быть разными: собрать все монеты, прибить всех инопланетных жуков, разрушить все лазеры и т.д. Таким образом, ловушки — это часть ландшафта, местность, которую надо учитывать при исследовании уровней инопланетного храма.

Генерация ловушек и монет

Что будет, если просто случайно раскидать по полю ловушки и монеты? Вот так, например:

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

Обозначения на схеме: «@» - персонаж, «$» - монета, «x» - ловушка. Перемещая персонажа по полю, на этом уровне необходимо собрать все монеты. Но случайное расположение ловушек заблокировало проход в правую часть поля. Уровень невозможно пройти.


Алгоритм генерации должен обеспечивать проход к каждой монете вне зависимости от конфигурации поля. Как бы вы это сделали? Уверен, что есть много способов. Мой вариант можно описать одной фразой:

Генерируем случайный лабиринт. На стенах случайно расставляем ловушки, а в проходах — монеты.

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

Такой способ гарантирует доступ ко всем монетам, минуя ловушки. При этом сам лабиринт игроку не виден. Он не обязан ходить по дорожкам. На картинке сверху, например, можно сразу же взять монету, сдвинувшись на две клетки вправо.


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

Лабиринт

Итак, лабиринт нужен для того, чтобы помечать, в каких клетках генерировать ловушки, а в каких — монеты. Поэтому и стенки, и проходы должны быть клетками. Лабиринты, где стенками являются границы клеток, не подходят.


Главное же требование к структуре лабиринта: он должен быть связанный. В каждую клетку дорожки должна быть возможность попасть из любой другой клетки-дорожки.


Среди множества алгоритмов построения подобного случайного лабиринта внутри заданной формы, наиболее подходящим показался вот такой:

1. Начинаем с ячейки, на которой стоит курсор в начале игры. Закрашиваем ее. Закрашенные клетки будут дорожкой лабиринта.


На каждом шаге:


2. Выбираем случайное направление (вверх, вниз, вправо, влево) по которому свободны две ячейки по прямой.


3. Если такое направление нашлось, то двигаемся на эти две клетки, закрашивая их.


4. Если тупик, то откатываемся назад до того момента, пока не встанем на ячейку, где еще есть варианты направлений движения.


5. Если больше вариантов нет — все, лабиринт построен!

Вот эта анимация хорошо иллюстрирует алгоритм построения:

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

На этой иллюстрации проходы помечены закрашенными клетками, потому что именно они расставляются алгоритмом. Возможно, это непривычно, так как обычно закрашивают стенки. Прошу прощения!


После того, как я определил такое случайное расположение объектов на уровне для иллюстрации алгоритма, мне захотелось посмотреть, как уровень будет выглядеть в игре. Вот, что получилось:

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

А теперь давайте добавим на уровень жуков!

Жуки

Жуки — это микро-боссы, которые перемещаются по своим траекториям. Они слепые в отличие от большого босса. Жуки не видят, где находится игрок. Однако если на них наткнуться, то проиграешь.


Траектория жуков состоит из сегментов. Каждый сегмент — отрезок прямой под определенным углом. Так как игра сильно завязана на клетки, то жуки должны перемещаться по клеткам. Игрок должен четко представлять клетку, где в настоящий момент находится жук.


Таким образом, перемещаясь по игровому полю, жуки как бы закрашивают клетки двумерного растра.

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

Забавно, но для расчета клеток по которым двигаются жуки можно использовать алгоритм Брезенхэма. В Википедии он отлично объясняется с примерами:

https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма

Такое вот применение алгоритмов машинной графики из 70-х. Применение кажется, кстати, весьма аутентичным в игре, стилизованной под текстовый режим.


Что ж, жуков добавили, можно и сыграть в уровень. Ниже запись прохождения. Уровень маленький и простой — подойдет для обучения в начале игры!

Как видите, я добавил еще и тротил, чтобы избавляться от инопланетных жуков, двигающихся по алгоритму Брезенхэма.

Заключение

При каждом проигрыше алгоритм генерации ловушек и монет запускается по новой. Ландшафт уровня, видимый в виде чисел на поле, каждый раз разный.


Однако можно генерировать и случайную форму уровня, а также наличие и расположение жуков, лазеров, воды, предметов и т.д. Сделал в игре режим «Челлендж», в котором такой новый случайный уровень генерируется каждый день. Причем, этот уровень одинаковый для всех игроков по всему миру.


Можно сказать, что случайные параметры генерации уровня являются хэшем текущей даты. Дата однозначно определяет параметры датчика случайных чисел, что гарантирует одинаковость случайных уровней на любом устройстве.


Если вам интересно, то буду рад позже поделиться способом, который выбрал для реализации такой генерации, так как это отдельная история.

Игру ASCIILL вынес из основной игры и оформил в виде отдельного проекта. Очень уж прикольно получилось. Вы можете посмотреть на игру вот здесь: https://store.steampowered.com/app/1878770/ASCIILL/

Алгоритм спокойно отрабатывает и на очень больших уровнях в несколько экранов.

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема Инди игра, Разработка, Gamedev, Инди, Ретро-игры, Гифка, Видео, Длиннопост

Благодарю за прочтение. Пока!

Показать полностью 7 1
Отличная работа, все прочитано!