Out of Insight

Джем: Siberian Game Jam 05.10.2019

Тема: „Start with nothing”.

Страница игры на itch.io ← можно поиграть в браузере, но только на компьютере, мобильные устройства не поддерживаются.

Ничего не понятно
Ничего не понятно

Пустота. Чёрная пустота. Ничего не получается вспомнить. Но нужно вспомнить, пустота невыносима. Вперёд, вперёд, что-то мелькает на границе сознания. Хватать по крупицам, набирать смысл, цвет. Вспоминать. Что же произошло? Ладно, пока не важно. Пока нужно собирать себя, чтобы поймать инсайт. Собирать нужный цвет.

Игрок управляет бесформенной, бесцветной сущностью, которая летит сквозь коридоры подсознания, собирая цветные крупицы. Чтобы пробраться на следующий уровень, придётся собрать нужный цвет и не разбиться о препятствия. Управление в игре — только с клавиатуры, поэтому смартфоны и планшеты оказались не у дел.

Создание игры

На этом джеме к команде присоединился Скоба, специалист по программированию визуальных эффектов. Мэвен и Ника, к сожалению, принять участие не смогли, так что мы решили рискнуть и сделать игру в 3D, чего никогда раньше не делали (да, жизнь нас не учит).

Однажды, за несколько недель до джема, Дина нашла в интернете вот такую штуку. Очень просто: надо смешать указанный цвет из базовых цветов. Механика цветового смешивания показалась нам необычной. После нескольких обсуждений мы решили соединить её с горизонтальным скролл-шутером (от шутера там, правда, ничего не осталось). Так родилась концепция: летишь, собираешь нужные цвета, уворачиваешься от ненужных.

Поскольку из художников у нас осталась только Эви, мы позвали Оксану, а так же рассчитывали поискать прямо на джеме художника и 3D-моделлера. Артур с Анхелем не пришли к консенсусу по поводу движка, и Артур присоединился на этот джем к другой команде (они сделали шикарную игру про вендинговый автомат, который сражается с другими вендинговыми автоматами).

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

Мозговой штурм перед началом работы (фото Марины Утки)
Мозговой штурм перед началом работы (фото Марины Утки)

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

Наши прекрасные художницы (фото Алисы Писаревой)
Наши прекрасные художницы (фото Алисы Писаревой)

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

Скоба и прототип (фото Марины Утки)
Скоба и прототип (фото Марины Утки)

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

Большая. Ошибка.

Оказалось, что решения нет. Ну, на самом деле как бы есть, но прямой синтез цвета нам не подошёл — ни аддитивный, ни субтрактивный. Хотелось, чтобы было так: жёлтый + синий = зелёный, красный + синий = фиолетовый, и так далее. Как на уроках рисования в школе учили. Выяснилось вот что: наиболее адекватный на сегодняшний день метод смешения цвета, кторый используют Krita и последние версии Photoshop — это так называемая модель Кубелки-Мунка. Она происходит из теории спектроскопии и описывает физическую модель преломления и отражения света реальными телами. Вот, например, научная работа, которая как раз применяет модель Кубелки-Мунка непосредственно к цветовому смешению.

Короче, после подробного изучения вопроса мы отказались от этой идеи и начали экспериментировать с более простыми моделями. Конечно, физику не обманешь, и получалось в любом случе не совсем то, что хотелось бы. Остановились мы на аддитивном синтезе в цветовой модели RYB (красный-жёлтый-синий). В ней хотя бы жёлтый с синим давали зелёный. Времени на эту задачу ушло гораздо больше, чем мы рассчитывали.

Второй проблемой стало определение попадания текущего цвета в целевой. Поскольку времени у нас было уже мало, игра просто считает декартово расстояние между точками в цветовом кубе. Это приводит к странностям. Дело в том, что человеческое зрение нелинейное. Например, два далеко друг от друга находящихся зелёных оттенка кажутся почти одинаковыми, в то время как два отличающихся на небольшую величину синих оттенка выглядят абсолютно разными. Желающие могут ознакомиться, к примеру, с этим материалом. Так что не важно, что вам кажется, важно, сколько процентов совпадения показывает игра 😜️.

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

А вот такие были бы кат-сцены, если б мы успели их сделать. Автор — Оксана Рар.

Главный  герой в коме
Главный герой в коме

Победа! Главный герой очнулся!
Победа! Главный герой очнулся!

А это плохая концовка
А это плохая концовка

Мораль

Итоги

Мы отлично провели время, познакомились с чудесными людьми, поставили кучу интересных экспериментов и выяснили, как не надо делать. Нам понравилось.

Фото Марины Утки
Фото Марины Утки

Фото Марины Утки
Фото Марины Утки

Фото Марины Утки
Фото Марины Утки

Фото Марины Утки
Фото Марины Утки

Фото Анны Ларченко
Фото Анны Ларченко

Команда

Дина Грико
гейм-дизайн, нарратив, управление проектом, звуковое оформление
Оксана Рар
графика, организация работы художников
Анастасия „Ода” Купцова
3D-моделирование
Эвелина „Эви” Майер
графика
Софа Егорова
графика
Анатолий „Анхель” Грико
программирование игровой логики
Антон „Скоба” Сердитов
программирование 3D-графики и эффектов
Дмитрий „Blazze Di” Алдагаров
музыка, звуковое оформление

Техническая информация