Original size 1264x1752

Distant Suns

PROTECT STATUS: not protected
15
The project is taking part in the competition

Техническая реализация 3D-головоломки от первого лица про созерцание звезд

big
Original size 800x450

Логотип, модели Полины Дворянкиной Левел-арт Анны Чертовой

Меня зовут Александра, я работала программистом в проекте «Distant Suns» и здесь расскажу про код, нарратив и 2D-визуал игры.

Loading...

Левел-арт Полины Дворянкиной

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

Взгляд главная тема игры

Original size 800x441

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

Интерфейс видимости

Original size 794x409

Основные интерактивные объекты

Чтобы код не превратился в кашу, для интерактивных объектов был создан общий интерфейс «видимости». При пересечении с лучом игровые объекты получают три сигнала: игрок увидел, игрок перестал видеть, игрок сфокусировался. На основе этого интерфейса было реализовано 4 типа интерактивных объектов: шар, линза, тьма и свет.

0

Версии билда с просмотра и предпросмотра

Шар изначально должен был иметь обычную физику: игрок поднимал его взглядом и мог бросить. Но физика движка конфликтовала с механикой взгляда. Шар должен был весить грамм при поднятии и тонну при броске, иначе он не поспевал за курсором или улетал в стратосферу. Но проблематичней была плавность перемещения, а точнее, её отсутствие. Точность луча, который взаимодействовал с шаром, сильно зависела от FPS. В поисках решения я случайно отключила шару гравитацию. Команде так понравился эффект невесомости, что мы решили его оставить — к тому же это исправило проблемы с физикой.

Версии билда с промежуточной и просмотра

Original size 800x450

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

Original size 2556x1554

Модели и левел-арт Полины Дворянкиной

Тьма и свет. Игре не хватало челленджей, а тема взгляда была раскрыта однобоко. Всё сводилось к вопросу «что, если смотреть на…». А что, если смотреть нельзя? Так в игре появилась тьма, наносящая урон, и целебный свет. Техническую сложность вызвала обратная связь, реализованная через тряску и зум камеры. Чтобы эффекты не накладывались и переход был плавным, две переменные типа float попеременно записывают уровень зума.

Вращение неба

Original size 794x409

Фишка игры — возможность вращать небо. Звучит просто: взять скайсферу, прикрепить звёзды и дать игроку вращать её по локальным осям с помощью WASD.

Original size 2848x1554

Скайсфера

Так я думала, пока всё не начало дёргаться и отказываться вращаться. Движок не поддерживает полноценное многоосевое вращение по локальным осям. Возникает риск слияния кватернионов — проще говоря, оси могут «склеиться», и программа не поймёт, как вращать объект. К тому же, небо должно двигаться относительно направления взгляда игрока, а не вокруг повёрнутой оси.

0

Билд с просмотра, предпросмотра и промежуточной

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

Original size 2486x1357

Схема вращения неба вокруг векторов камеры

Оправы

Original size 1329x394

Изначально в игре был всего один вид оправы, и он выполнял декоративную функцию. Позже команда решила добавить два новых вида: малая оправа для загадок с подбором ракурса и оправа, способная вытягивать из шаров звёзды, превращая их в линзы. Принцип проверки прост — от игрока в центр оправы выпускается луч; если он пересекает коллизию звезды, оправа активируется.

Original size 1243x699

Малая оправа вызвала немало проблем, так как требовала проверки наличия звезды сразу в нескольких зонах, которые, в зависимости от ракурса, меняли своё положение и размер. Мне не пришло в голову ничего лучше, чем превратить оправу в «дробовик», когда игрок подходит достаточно близко. От взгляда игрока к оправе строится несколько лучей с разным оффсетом. Если хотя бы один луч пересекает коллизию звезды, оправа активируется.

Original size 1525x823

Схема работы малой оправы

Нарратив

Original size 2976x1554

Левел-арт Анны Чертовой

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

Original size 800x450

Отрывок катсцены сделанной Анной Чертовой

Кроме этого, в игре есть два NPC с разными нарративными функциями. Путник погружает в сеттинг, даёт экспозицию и обучающие подсказки. Тогда как жрица двигает сюжет вперёд и подводит итоги.

Original size 1560x844

Модель сделана по концепту Анны Чертовой, Система диалогов подготовлена Марией Товмой

2D Арт

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

Original size 794x448

Наша команда

Original size 3508x1064

работа Полины Дворянкиной

Девлог

Loading...