NO RETURN: Мои 3д-поползновения

Я снова и снова обращаюсь к околотрёхмерной графике. Ещё в 2014 году я предпринял попытку сделать свою игру в 3д. Это был протомариуполис. В общем, если считать релиз мариуполиса не с первой сценарной версии, а с первой стилистической, когда это была просто игра про роботов, сценарий которой писал я, то игра делалась не 3.5, а четыре года. Это демка из тех времён.

LGRKFt0

Тогда всё упёрлось в то, что если со стенами всё было нормально, графический стиль идеально подходил (в комнаты ещё можно было заходить — игрока «выталкивало» в следующую комнату), то для окружения подходили только «округлые» вещи, которые могли прокручиваться перпендикулярно виду игрока без потери естественного вида при повороте. Для остальных вещей нужно было несколько видов спрайтов с разных ракурсов. Нарисовать это было довольно сложно. Я забросил эту версию, но всё же был очень доволен тем, что смог что-то в 3д (несмотря на то, что это выглядит как рейкастинг, гамак всё делает в честном 3д).

I1WEo65

Снова 2014. Я думал, что делаю какую-то необычную вещь, сделав пакмена в 3д, а оказалось, что это ещё в id Software проворачивали. Призрак был только один, и он просто преследовал игрока по стандартному гамаковскому алгоритму поиска пути. Киллер фичей этой технодемки было передвижение как в играх жанра dungeon crawler новой волны (Legend of Grimrock), т. е. движение фиксировано по клеткам, но разворот осуществляется в полном 3д.

H4C8pqq

Вы слышали про MegaKerma? Да, это GameMaker наоборот. Когда-то автор этого движка начинал с надстроек над гамаком, а в итоге сделал свой конструктор трёхмерных игр с бейсикоподобным языком для скриптинга. Эту штуку я сделал в 2015, кажется, году. Нужно подобрать коробку и прочитать текст. Игра была сделана на день рождения Etc Yc, который является автором графики и сценария для игр Team Mariupolis. Штука не очень гибкая, но для коротких зарисовок без лишних кастомных скриптов подойдёт. К сожалению, нет поддержки кириллических шрифтов.

QSX5dYd

К трёхмерности я вернулся спустя три года, после релиза Мариуполиса. Это было на одном из гаминаторов. Игра развивала концепцию первой части. Я только что запустил эту демку, чтоб сделать скриншот, и могу сказать, что кроме того, что там нет игры, сама навигация в 3д довольно криво сделана, а модель аппарата, улавливающего звуки из прошлого, которая и без того похожа на какой-то готический крест, улетает при взгляде вверх чуть ли не за пределы видимости. С другой стороны, сама идея мне нравится, у меня есть некоторые наметки по сюжету и геймплею. В общем, итч глубок и разнообразен и тут, как и в случае с пакменом, меня могли опередить, но всё же среди известных игр никакая ещё не использовала то, что я задумал. Возможно, эта идея не выдержит проверки геймплеем и будет отброшена, но мне интересно её попробовать. Если я продолжу работать в этом направлении, то расскажу об этом подробней.

Sr7dn5Z

Последней попыткой отрёхмерить собственную игру было неуверенное ковыряние движка GZDoom… для создания технодемки Dark Grim Mariupolis в 3д. Меня в какой-то момент так сильно увлекла идея, что я на неделю забросил работу над Армагеддополисом. Суть ремейка в том, чтобы перенести квест на экшен движок. Убрать многословность, добавить экшена, адаптировать головоломки. Благодаря игре Strife GZDoom умеет делать диалоги, думовский редактор весьма удобен и позволяет делать довольно сложную архитектуру, через костыли реально сделать некоторые головоломки из игры, а некоторые можно убрать и/или заменить. Но самому такой проект сделать тяжело, особенно в перерывах между работой над основным Армагеддополисом, плюс оказалось, что игре нужны персонажи, отрисованные с разных ракурсов — и тут мы возвращаемся к проблеме из 2014 года. Конечно, можно сделать трёхмерные модели всех персонажей Мариуполиса, анимировать, отрендерить их в разных ракурсах и т. д. Но для этого нужна уйма времени и сил, а я даже чайник в блендере без туториалов сделать не могу.

К дум-ремейку мариуполиса, как и к NO RETURN, меня привело чтение книги Д. Кушнера Masters of Doom. История id Software меня вдохновила на создание игр посильнее Indie Game: The Movie в разы.

k78GnvP

Сделать рейкастинг в 2д совсем не сложно, но когда началась тригонометрия с трёхмерным проецированием отброшенных лучей, я решил обратиться к туториалам. Самый простой (и на русском) — вот. Я адаптировал туториал с Python на lua, плюс учёл особенности TIC-80. С коллизиями на TIC-80 всё оказалось очень просто — я проверяю тайлы, уже расставленные в существующем редакторе карт встроенной функцией mget. Фактически каждый тайл — трёхмерный блок с равной длиной и шириной. Я планировал ввести в игру спрайты, но с ходу даже с учётом туториала не понял, как реализовать это на TIC-80. Суть в том, что спрайты, как и стены, нужно отрисовывать по кусочкам, где каждый луч — один такой кусочек, отрисованный согласно расстоянию игрока от объекта. Первое пришедшее в голову решение — извлекать посредством poke-функций значения пикселей спрайтов из видеопамяти показалось переусложнённым и костыльным.

На TIC-80 есть игра с рейкастингом и спрайтами, но она сильно тормозит, а её исходники со множеством манипуляций по созданию z-буфера очень уж запутаны. У меня не было времени, около трёх часов дня воскресенья я уже должен был ехать на работу. Я принял самое простое решение — сделать блоками всё. В итоге это оказалось не лучшим решением, т.к. собирание монеток превращается в ад толкания в стены. Увы, у меня было не так уж много вариантов.

OisSg6L

Изначально игра была более хоррорной, а красные блоки преследовали игрока. Это была самая первая идея. Мне пришлось отказаться от этого по нескольким причинам. Первая — когда блок настигал игрока, игра намертво повисала. Видимо, была какая-то ошибка, связанная с тем, что все лучи уже были внутри стены. Конечно, это было решаемо. Но вот причина два — если блок двигался очень медленно, он не представлял никакой опасности, а если быстро — игрок просто очень быстро умирал, не имея представления о дальности опасного блока. Тогда я решил сделать так, чтоб игрок сам оставлял свой след, который убивал бы его в случае возвращения. Игра демонстрировала, что нельзя войти в одну реку дважды. Это решало обе указанные выше проблемы и подходило под тему конкурса. Но времени было в обрез, нужно было выдать хоть какие-то уровни. Я успел сделать до работы несколько уровней, но если пользоваться картой (мне очень хотелось добавить карту, как в старых идовских играх), они легко проходятся. Но делать было нечего, время близилось к трём, так что я решил показать игру в таком виде. Судя по тому, что я прочитал от игроков, игра без карты с оставлением следов имеет весьма хорроровый оттенок (плюс я нагнал жути отвратно гудящими звуками — это намеренно, прошу прощения у всех завявших ушей). Возможно, стоило работать в этом направлении, но меня осенило в другом. У меня есть монеты, но они геймдизайнерски не работают. Можно не прикоснуться к монетам и пройти дальше. За них не купить бонусов, а очки, которые они давали, выглядели рудиментом аркадной эпохи. Тогда я решил переделать уровни, чтоб можно было собрать все монеты не убиваясь и поставил условия собирания всех монет. Теперь увеличилось влияние карты, а хоррорность заменилась головоломностью. И это тоже неплохо, но вот головоломка оказалась не очень удобная и простая. У меня есть идеи по поводу добавления ролевых элементов и ограниченного использования карты, но беда с идеями в том, что на базаре их можно купить за рупь штуку.