Пытался делать графику в стиле PS1
Участвовали в конкурсе коопом, прос@ли все сроки, но я доволен. Горела жЁпа от Unity. А ещё немного использовал нейросеть делая полтора персонажа.
Краткие пояснения кто есть кто: Herman пользователь сайта, где проходил конкурс и мы с ним закоопились, чтобы сделать игру. Luca Nia или же Лиса пользователь того же сайта, но выступает уже организатором конкурса.
Начало
Как решил поучаствовать
Участвую практически в каждом конкурсе Gaminator. Конкурсы это хорошо, весело и полезно! Никогда не гонюсь за победой, важен сам движ, а если вдруг игра понравится, то замечательно же! В основном участвую в solo т.е. делаю весь контент сам, что конечно криво выходит, иногда и забивая на какие-то аспекты, например, музыку.
В этот раз не хотел остаться без участия, ведь в голову ничего не приходило. Какие-то идеи конечно присутствовали, но для начала мне хорошо было бы понять, осмыслить тему и что требуется сделать.
Вопросы вопросы вопросы
И вот голова кипит на тихом огне, но ничего путного не придумывается. Поэтому я пошёл донимать Лису, организатора, всякими вопросами. Говорю, сложна! Непонятна! Примеры мне, примеры!
И всё никак не мог придумать что же нужно было для темы “реальность и фантазия”, да ещё и с добавочным условием про “два геймплея, схожих, но разных”. Два мира, два геймплея, одинаковых, но с отличиями. Ничего не придумывалось! Нужны были ещё большие жесткие рамки, а то мысли слишком растекались: одна эпичность эпичнее другой!
И тогда я решил.
Навязаться в кооперацию!
Дай думаю за-кооп-люсь! Всего один раз удачно кооперировался на конкурс, насколько могу вспомнить, а вот вне конкурсов сколько неудачных уж совсем не помню. Решил, что буду на графике т.к. считаю, что это моя самая сильная сторона.
А тут Herman что-то задумал сделать, дай думаю как хитрый змей предложу графику, напрошусь в проект. И как-то получилось, что договорились и начали обдумывать задумку. Вернее задумка была, а тут пришёл я и давай навязывать некоторые штуки.
Активная фаза разработки, казалось
Столкнулись со своими придумками
У кооперации есть одна проблема перед соло разработкой: собственно нужна кооперация, обсуждения, договорённости! У Herman-а уже была изначальная идея, а я пытался обдумывать её и со своей стороны, добавить или изменить какие-то вещи, напридумывали много.
Текстовый концепт преображался: увеличивался, уменьшался, были разные метаморфозы, идеи и предложения. По плану всё было весьма эпично, но я бы не сказал, чтоне реализуемо. Однако, мой вклад скорее в раздувании концепта, что значительно навредило проекту.
Вот что планировалось:
есть 5 призраков, мы выбираем в какую локацию поехать и там находим призрака, разбираемся, игрок может выбирать способности. А когда разобрались с 5 призраками, то появлялся босс! Последняя версия концепта содержала такие локации: жд пути, поля, парк, магазин видеокассет, кладбище и небоскрёб.
Обговорив основные моменты, какие модели нужны и что использовать будем, то я первым делом обдумал как будет выглядеть персонаж.
Моделирование персонажа, священник
Не так часто моделирую персонажей, поэтому взял бесплатную модель для того, чтобы подсматривать на пропорции и некоторые решения в топологии для low poly (скачал со Sketchfab-а).
Сделал простой Rig и сделал анимации, среди которых: закрыть лицо руками, кинуть банку, читать с книги, молитва и получение урона (на самом деле эта анимация делалась где-то в конце разработки). Забегая вперёд: анимацию бега и прыжка делал НЕ я — это из набора Unity.
Книга кстати это тоже модель со скелетом! И анимациями открывания и верчения страницы туда-сюда.
В итоге модель главного героя выглядит вот так:
Текстуры
Попробовал один подход для создания текстур, как мне кажется интересный: использовал нейросети (уже выбрали свою сторону? За? Против?), а именно Stable Diffusion, моя gtx1050ti кое-как тащит её. Рисовал по текстуре в Blender, а в качестве кисти брал сгенерированную нейросетевую картинку и в режиме трафарета наносил на модель:
Самой сложной конечно получилась текстура священника т.е. главного героя, но это были первые попытки, дальше подобный подход использовал и для других моделей, а именно персонажа призрака. А вот такой мужик получился при генерациях и стал лицом(частью) ГГ:
Несколько подобных картинок были использованы для создания лица. Так же я просил Великую Машину даровать мне изображение джинс, но он ответил как мне кажется достаточно однозначно, что я получу, а не джинсы. Думаю на DTF оценят такие ракурсы!
И так понемногу рисовалась текстура персонажа, даже двух. Для книги я брал бесплатную текстуру с лицензией СС0 и\или комбинировал с сайта текстур вроде textures.com.
Стилизация текстур
В этом участии использовал Krita — бесплатную программу для 2D графики и анимации. Чтобы добиться стиля PS1 в текстурах прибегнул к простым шагам:
- Рисовал\компоновал текстуры в “высоком” разрешении (например, 512х512)
- Добавлял HD текстуры как File Layer в текстуру меньшего размера (128х128)
- Дальше пара Filter Layer для уменьшения количества цветов (пастеризация или соответствие палитре, например) и добавление чёткости (unsharp mask).
- Сохраняю и на этом всё!
File Layer работают хорошо, хотя не хватает обычной трансформации — надо добавлять модификатор слоя для этого. В Photoshop CS6 есть подобная вещь, правда как оказалось, но она встраивает такой файл внутрь документа от чего весь смысл “линковки” теряется. В новых версиях PS кажется это уже работает как надо и файлы связываются ссылками. Это позволяет редактировать HD текстуру и сразу же получать изменения в PSX текстуре, после чего достаточно будет только сохранить её в PNG.
Столкнулся с Unity спустя N лет
Скачиваю Unity 2021.3.15f (хотя Herman предупреждает меня взять именно его версию — 16f), чтобы загрузить модель и проверить как оно будет выглядеть. Оказывается, что у меня ещё и Unity Hub старый от чего нельзя было скачать Template от третьего лица, ну что за?! Скачал через сайт\ассет стор, вроде всё бегается.
Воюю с Unity, чтобы моя модель приняла анимации и контроллер от стандартного персонажа, не помню, что раньше было так всё сложно, а опыт у меня есть с движком, какой-то, но есть! В итоге кое-как понимаю как это всё завести и наконец герой бегает!
Оказалось, что не успеваем
После доделывания анимаций и создания тестовых скриптов для управления ими обнаружилась одна бага: проблема с костями, в которой книжка не отображается как в Blender, что-то с трансформацией кости именно в Юнити.
Дальше я думал собрать себе простую тестовую сцену, но и тут опять не так всё гладко! Оказалось, что так сказать встроенный редактор ProBuilder вообще-то не CSG, но мало того, так оно ещё и из своей коробки не дружит с Юнитявским же URP! Опять эта Юнитя пьёт мою кровь!
Смотря на календарь и общаясь с Herman-ом понимаем, что ничего не успеваем и вообще какая-то микро-паника, что надо всё резать, всё убирать и сокращать. Сначала сошлись на сокращении до трёх локаций, расписали их, но потом сократили мысли до того, что “вот давай сначала одну локацию сделаем хотя бы”. Мне кажется это сильно ударило даже по мотивации, когда ничего неуспевается, игра непонятно какая выходит, да ещё и лично меня Юнити сильно вгоняет в гнев от того, что мешает работать.
Непонимание что делать дальше
В результате обсуждений и сокращений концепции было не совсем понятно что конкретно должен делать я в данный момент. Не видел, что делает со-командник, а он не видел, что делаю я. В итоге сидел я без конкретного дела, хотя уже был главный герой и его анимации, но в моём локальном проекте Unity.
Обновление Unity и проблема с шейдерами или катастрофические слияние
Пришло время совместить Unity разработки. У меня была 2021.3.15f и ничего такого если обновлюсь всего лишь на какую-то очень минорную циферку и будет версия 2021.3.16f и …
Шейдер сломался! Heman предупреждал меня, но я пренебрёг этим. Я уж не думал, что Юнитисты способы сломать что-то между настолько минорныим версиями. У меня прям полыхало в одном месте от всех проблем Unity. Так как сломался шейдер, то пришлось отказаться от одного из важнейших элементов стилизации — дрожание вершин в стиле PS1.
Предупреждение! Быстрые мерцания:
Но этого было мало. От мержа наших разработок и того, что основывалось всё на “шаблоне от третьего лица” всё полетело по одному месту, разные GUID-ы (уникальные идентификаторы, в юнити используется для обозначения ресурсов вроде скриптов, моделей и т.д.) слетели и конфликтовали друг с другом и прям какой-то разработченский кошмар!
Herman принял решение просто сделать проект с нуля и снова экспортировать все наши наработки. И это помогло, но как говорится, осадочек от такого остался.
От одних вещей в шейдере отказался, но другие добавил: “дуновение ветра” и вершины шевелятся словно от ветра меняют позицию. Конечно не особо, если и ствол дерева бы двигался, поэтому использовалась цветовая маска, а цвет хранился в вершинах. Ну хоть это работает как надо!
А ещё однажды на этом проекте Unity настолько болела, что у меня полностью сломался и пропал 3D вид:
Моделирование декораций
Но собравшись было решено конкретно что делать, прямо по списку, как я люблю. В итоге я засел и начал просто делать.
Смотря некоторые референсы, сверяясь с записями (кстати, пытались использовать Trello и Google Docs, а в итоге опять удобнее оказались лично для меня простые *.txt) моделировал декорации к одной локации.
Этой локацией были ЖД пути. Для самих рельсов замоделил один сегмент (с третьего раза правда) и затем через модификаторы и сплайн придал им небольшой радиус поворота — так мне показалось будет интереснее, чем простая прямая дорога.
Модель самого здания вокзала тоже делал где-то раза три. Сначала это был чуть ли не царь-вокзал и пришлось уменьшать его минимум в 2 раза. Оно и правильно, где вы такие большие вокзалы в деревнях видели?
В наполнении outdoor можно увидеть столбы, добавляя к которым простую модель фонаря можно получить фонарный столб:
А просторы заполнены несколькими вариантами деревьев и кустами с травой, всех по две штуки — уже показывал выше в виде анимации.
Первой моделью по декорациям, которую сделал была композиция деревни в дали. Помимо ручного расставления двух-трёх моделей домов там есть генератор частиц-домов, которые являются на самом деле волосами, в терминах частиц Blender-а:
Внутри здания или же indoor (а так же частично outdoor) не столь впечатляет, там есть лишь терминал для билетов, дисплей-строка и по мелочи вещи. Используемые как снаружи, так и внутри здания модели такие: скамейка и мусорное ведро.
Есть даже отдельная секция с туалетными кабинками, где раковины с зеркалами, кабинки с дверью, и сами унитазы. А так же очень важная модель: туалетная бумага!
Призрак Рейко
Последней моделью, которую делал это призрак*, которую зовут Рейко.
* На самом деле модели делались вперемешку и по факту последней моделью была модель светильника для столба.
Так сказать был небольшая фора в том, что ног у персонажа нет! Ха-ха, халява! Правда это потом аукнется в анимации. Взял модель-болванку для соблюдения пропорций, но в этот раз такой моделью был уже наш главный герой. Хотя тут есть интересная вещь: дело в том, что я прямо взял всю голову священника и слега подредактировав её наваял лицо женского персонажа.
В отличии от Священника для Рейко использовал чуть иной подход в референсах для моделирования. Если у первого персонажа лицо и голова делалась скорее в соответствии пропорциям болванки и по наитию, то для второго решил подойти старым методом “чертежей” т.е. поставить 2 изображения\фотографии лица спереди и сбоку. Разумеется снова на помощь мне пришла нейросеть:
Сам образ “при жизни” призрака я не придумал, попросил нейросеть “нарисуй человека в казуальной городской одежде”. Сначала он выдал, как мне кажется, непристойный результат! Потом уже лучше, но словно не подходило персонажу, поэтому я лишь использовал пиксели, что он сгенерировал: текстуру футболки и текстуру кожи для рук.
А вот то, что игроки не увидят или увидят только “вскрыв”/“рипнув” ассеты с игры, так это часть текстуры, где видно мясцо и немного позвоночника — эту графику я уже рисовал рукам, даже не на планшете, а мышкой! Ну или просто посмотрят на это вот изображение, шок контент!
Анимации призрака это особая сложность. Дело в том, что ног-то нет! Но до моделирования и при обсуждении идеи я уже знал как будет двигаться этот персонаж. Бег на локтях! Поэтому сами руки я старался сделать у модели чуть больше, но побоялся переусердствовать, поэтому это не заметно даже.
В качестве дополнительно анимации сделал бег на руках, что напомнило мне персонажа Orbb из Quake3:
Какое оружие должно было быть у призрака было изначально известно тоже, а вот какая анимация атаки — нет! Поэтому я сделал какую-то анимацию, которая похожа на атаку. Честно говоря всё это ещё подгонялось дедлайном, а с ним и мыслями “ничего не успеваем!!1”, так что тут могу точно сказать, что схалтурил.
А ещё сделал вот такой шейдер-эффект появления призрака, правда, увидеть его в игре думаю и невозможно.
Промежуточный вариант:
Итоговый вариант шейдера:
Пока готовил эту статью и некоторые изображения, то в цифровой мир ворвалось более страшное существо, чем мой текущий призрак:
Паника что ничего не успеваем, жесть. Всё делает Герман.
Совсем забылось и Herman говорит, что нужны иконки способностей главного героя! Непонятно как делать, а делать надо было быстро — дедлайн на носу! Сначала я подумал нарисовать их вручную, но это долго. Может нейросети? Ну нет — дольше с ними провожусь. И тогда придумался простой, но как мне кажется действенный вариант: взять пре-рендер (или же просто из редактора) скриншоты и подретушировать их. Таким образом получились вот такие вот иконки:
Дальше была Паника. По ощущениям ничего не успеваем, бессилие что по сути всё доводит до конца Herman, а я лишь графику сделал и тут проще “не лезть под руку”. В этот момент не зная чем занять себя я потихоньку доделывал и свою поделку на Godot, так сказать переложил волнение на конкретные действия.
Всё это конечно же усугублялось некоторыми багами (о которых сообщал товарищ) и нерешёнными вопросами реализации. И свой максимум в ситуации наверно был момент, когда оказалось, что опоздали в точный дедлайн и технически мы опоздали выложить игру. Но слава организатору Лисе и заявка прошла как успевшая!
Затишье
Игра выложена
Выложили игру, можно было выдохнуть. Хотя это мнимое чувство завершённости т.к. был ещё один день, когда можно найти баги и исправить их. Я смог поиграть только в конце этого самого дня и когда нашёл (как мне кажется) критически баг, то уже было поздно что-то править. Ощущал какую-то опустошенностьот завершения игры, мне казалось, что и у Herman-а уже нет сил даже открывать Unity, куда уж с багами сражаться.
Оценки
Понимаю насколько важны честные отзывы игр, как они полезны разработчику. Могу говорить только за себя и свои ощущения, но мне показалось, что Herman переживал по поводу отзывов и что, игра людям не понравится.
Так же получали отзывы, которые можно было считать как “а где игра?”, что в купе с багами и тем, как раскрывается тема (непонятно) вызывало странные ощущения.
Хвалили атмосферу, что как мне кажется действительно в игре было хорошо. Словно взяли какую-то игру и попытались из неё сделать то, чем она не является.
Итоговые выводы
Если говорить честно и откровенно, то вышло не очень. Это лучше, чем совсем ничего, но очевидно оригинальную нашу задумку мы не смогли реализовать. Даже имея всего одного призрака не вышло создать нужное геймплейное направление действий игрока, да ещё и баги там, ух. Но как говорится, первый блин комом!
Что касается моей конкретной реализации т.е. моделей и текстур, я ими в целом доволен, но можно было ещё лучше сделать. Они конечно влияют на атмосферу, которую хвалят, но явно тут не вся заслуга их, а важна ещё настройка в движке всего этого.
Небольшой итог по тому, что делал НЕ Я в плане графики: автомобиль + текстура его, тайловые текстуры т.е. стены здания (хотя это мой перекрас), крыша, пол, бетон и т.д.
Некоторые другие текстуры были созданы из свободных CC0 текстур и фотографий: тайловая текстура синего дерева (стены здания), текстура железной дороги.
Всё остальное это своё, домашнее! А именно:
Сделал модель персонажа, текстуру, анимации, модель призрака с текстурой и аномалиями и некоторую пачку декора.
Будет ли проект как-то развиваться, менять направление и что его вообще ждёт — не знаю, тут больше голоса у Herman-а, как мне кажется.
Скачать билд игры с конкурса можно по вот этой ссылке:
Моё лицо после разработки этой игры:
Практически всё, что можно не так. Детализация слишком большая, такие лица и для PS2 нормально смотрелись бы. Пальцы для большинства моделей это роскошь. Полигоны дрожат неправильно. На PS1 они дрожали при движении и замирали в статике. Здесь - наоборот. Так же причина приводила к тому, что многие прямые линии ломались.
Стоило поглядеть пару статей на тему графики PS1.
https://habr.com/ru/articles/594655/
Можно было просто запостить это!
Думал использовать эту картинку для превью статьи, но не стал байтить ДТФеров!
Даже если ничего не вышло и результат не тот, что ожидали, не страшно. Зато вы получили клевый опыт и дозу своеобразного адреналина. Ну и я теперь тоже захотел вкатиться в джем какой-нибудь. Спасибо за статью!
Именно так! Это всё опыт, даже если не получилось. Как говорят, умный учится на чужих ошибках, а вот я могу исключительно на своих и то не всегда!
Каеф! Люблю современные стилизации под пс1