Как две минуты первой сессии предсказывают судьбу вашей игры (и 4 SQL-запроса для анализа)
Анализ первой сессии -- это "момент истины" для твоей игры.
Представь, что игрок только что установил твою игру. У него нет лояльности, нет эмоциональной связи с проектом. Его первая сессия -- это как первое свидание: либо возникает магия, либо вы больше не увидитесь.
Ниже я расскажу, как на основе длительности этого "свидания", можно давать оценку и строить гипотезы. А еще прикреплю SQL запросы и поделюсь аналитикой по своей веб-игре Ферма на острове (https://yandex.ru/games/app/336608).
Что показывает длительность первой игровой сессии
1. Эффективность онбординга
Короткая сессия (менее 3-5 минут) часто означает, что игрок "уперся в стену" -- не понял механики, запутался в интерфейсе или столкнулся с техническими проблемами
Оптимальная длительность (5-15 минут) говорит о плавном вхождении в игру
Длинная сессия (15+ минут) — игрок "зацепился", он получил достаточно мотивации продолжать
2. Прогноз долгосрочного удержания
По моим данным (я их округлил для наглядности), игроки с первой сессией:
Менее 2 минут — 80% никогда не возвращаются
5-10 минут — 45% возвращаются на следующий день
15+ минут — 65% играют через 7 дней
3. Качество маркетингового трафика
Разная длительность сессии по источникам:
Рекламные сети — часто короткие сессии, если реклама не соответствует геймплею
Рекомендации друзей — более длинные сессии, так как есть социальное доверие
Органический поиск — самые вовлеченные пользователи
Сбор данных и SQL запросы
Данные я собираю в Unity Analytics.
Анализ длительности первой сессии за последние 90 дней
WITH first_sessions AS (
SELECT
USER_ID,
EVENT_JSON:sessionID::STRING as session_id,
MIN(EVENT_TIMESTAMP) as first_session_start
FROM EVENTS
WHERE EVENT_JSON:eventName::STRING = 'newPlayer'
GROUP BY USER_ID, EVENT_JSON:sessionID::STRING
),
session_durations AS (
SELECT
fs.USER_ID,
fs.session_id,
fs.first_session_start,
MIN(e.EVENT_TIMESTAMP) as session_start,
MAX(e.EVENT_TIMESTAMP) as session_end,
DATEDIFF(second, MIN(e.EVENT_TIMESTAMP), MAX(e.EVENT_TIMESTAMP)) as duration_seconds
FROM first_sessions fs
JOIN EVENTS e ON fs.USER_ID = e.USER_ID
AND fs.session_id = e.EVENT_JSON:sessionID::STRING
WHERE e.EVENT_DATE > CURRENT_DATE-90
GROUP BY fs.USER_ID, fs.session_id, fs.first_session_start
),
percentiles AS (
SELECT
APPROX_PERCENTILE(duration_seconds, 0.1) as p10_seconds,
APPROX_PERCENTILE(duration_seconds, 0.5) as p50_seconds,
APPROX_PERCENTILE(duration_seconds, 0.9) as p90_seconds,
AVG(duration_seconds) as avg_duration_seconds,
COUNT(*) as total_sessions
FROM session_durations
WHERE duration_seconds >= 0 -- исключаем отрицательные значения
)
SELECT
ROUND(p10_seconds, 2) as p10_duration_seconds,
ROUND(p50_seconds, 2) as median_duration_seconds,
ROUND(p90_seconds, 2) as p90_duration_seconds,
ROUND(avg_duration_seconds, 2) as average_duration_seconds,
total_sessions
FROM percentiles;
Анализ длительности первой сессий по платформам за последние 90 дней
Если аналитика по твоей игре собирается сразу для нескольких платформ, то будет полезно посмотреть на них отдельно.
WITH first_sessions AS (
SELECT
USER_ID,
EVENT_JSON:sessionID::STRING as session_id,
MIN(EVENT_TIMESTAMP) as first_session_start,
EVENT_JSON:platform::STRING as platform
FROM EVENTS
WHERE EVENT_JSON:eventName::STRING = 'newPlayer'
GROUP BY USER_ID, EVENT_JSON:sessionID::STRING, EVENT_JSON:platform::STRING
),
session_durations AS (
SELECT
fs.USER_ID,
fs.session_id,
fs.platform,
fs.first_session_start,
MIN(e.EVENT_TIMESTAMP) as session_start,
MAX(e.EVENT_TIMESTAMP) as session_end,
DATEDIFF(second, MIN(e.EVENT_TIMESTAMP), MAX(e.EVENT_TIMESTAMP)) as duration_seconds
FROM first_sessions fs
JOIN EVENTS e ON fs.USER_ID = e.USER_ID
AND fs.session_id = e.EVENT_JSON:sessionID::STRING
WHERE e.EVENT_DATE > CURRENT_DATE-90
AND fs.platform IS NOT NULL
GROUP BY fs.USER_ID, fs.session_id, fs.platform, fs.first_session_start
)
SELECT
COALESCE(platform, 'Не указана') as platform,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.1), 2) as p10_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.5), 2) as median_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.9), 2) as p90_duration_seconds,
ROUND(AVG(duration_seconds), 2) as average_duration_seconds,
COUNT(*) as total_sessions
FROM session_durations
GROUP BY platform
ORDER BY total_sessions DESC;
Анализ длительности первой сессии понедельно за последние три квартала
Иногда может быть полезно посмотреть как изменилась длина первой сессии с течением времени.
WITH first_sessions AS (
SELECT
USER_ID,
EVENT_JSON:sessionID::STRING as session_id,
MIN(EVENT_TIMESTAMP) as first_session_start,
EVENT_JSON:platform::STRING as platform,
YEAR(EVENT_TIMESTAMP) as session_year,
WEEK(EVENT_TIMESTAMP) as session_week
FROM EVENTS
WHERE EVENT_JSON:eventName::STRING = 'newPlayer'
GROUP BY USER_ID, EVENT_JSON:sessionID::STRING, EVENT_JSON:platform::STRING,
YEAR(EVENT_TIMESTAMP), WEEK(EVENT_TIMESTAMP)
),
session_durations AS (
SELECT
fs.USER_ID,
fs.session_id,
fs.platform,
fs.first_session_start,
fs.session_year,
fs.session_week,
MIN(e.EVENT_TIMESTAMP) as session_start,
MAX(e.EVENT_TIMESTAMP) as session_end,
DATEDIFF(second, MIN(e.EVENT_TIMESTAMP), MAX(e.EVENT_TIMESTAMP)) as duration_seconds
FROM first_sessions fs
JOIN EVENTS e ON fs.USER_ID = e.USER_ID
AND fs.session_id = e.EVENT_JSON:sessionID::STRING
WHERE e.EVENT_DATE > CURRENT_DATE-270
AND fs.platform IS NOT NULL
GROUP BY fs.USER_ID, fs.session_id, fs.platform, fs.first_session_start,
fs.session_year, fs.session_week
)
SELECT
session_year,
session_week,
CONCAT(session_year, '-W', LPAD(session_week, 2, '0')) as year_week,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.1), 2) as p10_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.5), 2) as median_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.9), 2) as p90_duration_seconds,
ROUND(AVG(duration_seconds), 2) as average_duration_seconds,
COUNT(*) as total_sessions
FROM session_durations
WHERE session_year IS NOT NULL
AND session_week IS NOT NULL
GROUP BY session_year, session_week
ORDER BY year_week ASC;
Анализ длительности первой сессии по версиям за последний год
И еще интереснее сравнить длительность первой сессии для каждой версии игры за последнее время.
WITH first_sessions AS (
SELECT
USER_ID,
EVENT_JSON:sessionID::STRING as session_id,
MIN(EVENT_TIMESTAMP) as first_session_start,
EVENT_JSON:clientVersion::STRING as version
FROM EVENTS
WHERE EVENT_JSON:eventName::STRING = 'newPlayer'
GROUP BY USER_ID, EVENT_JSON:sessionID::STRING, EVENT_JSON:clientVersion::STRING
),
session_durations AS (
SELECT
fs.USER_ID,
fs.session_id,
fs.version,
fs.first_session_start,
MIN(e.EVENT_TIMESTAMP) as session_start,
MAX(e.EVENT_TIMESTAMP) as session_end,
DATEDIFF(second, MIN(e.EVENT_TIMESTAMP), MAX(e.EVENT_TIMESTAMP)) as duration_seconds
FROM first_sessions fs
JOIN EVENTS e ON fs.USER_ID = e.USER_ID
AND fs.session_id = e.EVENT_JSON:sessionID::STRING
WHERE e.EVENT_DATE > CURRENT_DATE-360
AND fs.version IS NOT NULL
GROUP BY fs.USER_ID, fs.session_id, fs.version, fs.first_session_start
)
SELECT
version,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.1), 2) as p10_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.5), 2) as median_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.9), 2) as p90_duration_seconds,
ROUND(AVG(duration_seconds), 2) as average_duration_seconds,
COUNT(*) as total_sessions
FROM session_durations
WHERE version IS NOT NULL
GROUP BY version
ORDER BY version DESC;
Пример например
На примере веб-игры Ферма на острове (https://yandex.ru/games/app/336608), я собрал следующий запрос (ниже опишу разницу):
WITH first_sessions AS (
SELECT
USER_ID,
EVENT_JSON:sessionID::STRING as session_id,
MIN(EVENT_TIMESTAMP) as first_session_start,
EVENT_JSON:clientVersion::STRING as version
FROM EVENTS
WHERE EVENT_JSON:eventName::STRING = 'newPlayer'
GROUP BY USER_ID, EVENT_JSON:sessionID::STRING, EVENT_JSON:clientVersion::STRING
),
session_durations AS (
SELECT
fs.USER_ID,
fs.session_id,
fs.version,
fs.first_session_start,
MIN(e.EVENT_TIMESTAMP) as session_start,
MAX(e.EVENT_TIMESTAMP) as session_end,
DATEDIFF(second, MIN(e.EVENT_TIMESTAMP), MAX(e.EVENT_TIMESTAMP)) as duration_seconds
FROM first_sessions fs
JOIN EVENTS e ON fs.USER_ID = e.USER_ID
AND fs.session_id = e.EVENT_JSON:sessionID::STRING
WHERE fs.version IS NOT NULL
GROUP BY fs.USER_ID, fs.session_id, fs.version, fs.first_session_start
)
SELECT
version,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.1), 2) as p10_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.5), 2) as median_duration_seconds,
ROUND(APPROX_PERCENTILE(duration_seconds, 0.9), 2) as p90_duration_seconds,
ROUND(AVG(duration_seconds), 2) as average_duration_seconds,
COUNT(*) as total_sessions
FROM session_durations
WHERE version IS NOT NULL
GROUP BY version
HAVING total_sessions > 100
ORDER BY version DESC;
Номер версии генерируется автоматически при сборке -- могу рассказать другим постом, если интересно...
1. Я исключил данные по версиям, в которых было менее 100 первых сессий, чтобы убрать всплески:
2. Выгребаю данные за всё время, чтобы вот вообще всё увидеть :D
Вот, что получилось:
Релиз 1.1.2 от 30 октября 2024 года каким-то образом сломал первое впечатление об игре.
Тогда я об этом узнал не сразу, а только через неделю, потому что только-только настраивал аналитику. Это было мега печально, потому что эти игроки были привлечены рекламой за кровные.
Протестировав игру через инкогнито самостоятельно и привлекая друзей, удалось определить причину отвала: аналитика собиралась некорректно.
В браузерных играх, Unity Analytics складывает идентификатор пользователя в куки, а как только они протухают, то обновляет его. Получалось, что каждый раз, игра идентифицировала игрока по новой и считала, что это его первая сессия.
Решение было простым: генерировать случайный идентификатор и сохранять его в данных игрока, а затем использовать в качестве UnityServices.ExternalUserId.
20 октября была выпущена версия 1.2.0, в которой игра начала идентифицировать игроков корректно:
Это позволило адекватно оценить продолжительность первой игровой сессии и составить ряд гипотез. Первое, что бросилось в глаза после плейтестов: игра дарит игроку снаряжение, но не объясняет, как им пользоваться.
Спустя еще неделю игра начала обучать игрока экипировать и прокачивать снаряжение, и вот результат:
Это дало прирост в две минуты или ~28%!
После нескольких релизов летом, начиная с реализации защиты от накруток при переводе времени на устройстве, медиана начала падать:
Возможно, механики просто наскучили и игроки хотят чего-то нового.
Гипотезы закончились, проект наскучил и я переключился на новый.
Заключение
Надеюсь, что мне удалось рассказать что-то интересное и поделиться опытом аналитики.
Спасибо за внимание! Жду вопросы в комментариях.
Раздача ассета Ultimate Nature Pack на Unity asset store
Ultimate Nature Pack
Промо код BLACKHORIZON2025
Версия Unity 2019.4.40f1
Встроенная Совместимо
URP Несовместимо
HDRP Несовместимо
Описание
Набор Ultimate Nature Pack поддерживает следующие версии Unity: Unity 2019, Unity 2020, Unity 2021, Unity 2022, Unity 2023, Unity 6+. URP и HDRP не поддерживаются.
Набор Ultimate Nature Pack включает в себя более 355 уникальных полностью редактируемых деревьев, пней, кустов, растений и цветов, созданных с помощью Unity Tree Creator. Набор Ultimate Nature Pack основан на множестве различных климатических условий, что позволяет вам увидеть растительность со всего мира. Каждый тип растительности уникален и представлен в нескольких размерах, что обеспечивает огромное разнообразие. Все деревья оснащены коллайдерами, идеально подходящими для их стволов.
Демонстрационные сцены включены в демонстрацию
Лесная демонстрация
Пляжная демонстрация
Горная демонстрация
Деревья
10 сосен (тип 1) – 5 больших и 5 маленьких
5 сосен (тип 2) – 5 средних
5 сосновых пней – разных размеров
15 можжевельников – 5 больших и 10 маленьких
10 заснеженных сосен – 5 больших и 5 маленьких
5 заснеженных сосновых пней – разных размеров
5 кустов заснеженных сосен – разных размеров
10 секвойи – 10 больших
10 мертвых деревьев (тип 1) – 5 больших и 5 маленьких
10 мертвых деревьев (тип 2) – 5 больших и 5 маленьких
5 мертвых пней – разных размеров
25 пальм – 10 больших прямых, 10 маленьких, 5x Изогнутые
20x Осины (зелёные) – 5x Большие, 5x Средние, 5x Маленькие, 5x Саженцы
20x Осины (оранжевые) – 5x Большие, 5x Средние, 5x Маленькие, 5x Саженцы
5x Пни осины – разных размеров
5x Дубы – 5x Большие
15x Зелёные деревья (Тип 1) – 5x Большие, 5x Средние, 5x Маленькие
15x Зелёные деревья (Тип 2) – 5x Большие, 5x Средние, 5x Маленькие
10x Зелёные/жёлтые деревья (Тип 3) – 5x Большие и 5x Маленькие
5x Зелёные пни (Тип 1) – разных размеров
5x Зелёные пни (Тип 2) – разных размеров
10x Дальневосточные сосны – 5x Большие и 5x Маленькие
10x Дальневосточные цветущие деревья – 5 крупных и 5 мелких
Растения
5 тропических растений (тип 1) – разных размеров
5 тропических растений (тип 2) – разных размеров
5 тропических растений (тип 3) – разных размеров
5 тропических растений (тип 4) – разных размеров
5 небольших лесных растений – разных размеров
5 папоротников – разных размеров
15 бамбуковых растений – 5 крупных, 5 средних, 5 мелких
5 цветов (тип 1) – разных размеров
5 цветов (тип 2) – разных размеров
5 цветов (тип 3) – разных размеров
5 цветов (тип 4) – разных размеров
5 цветов (тип 5) – разных размеров
5 цветов (тип 6) – разных размеров
Кустарники
5 кустов (тип 1) – разных размеров
5 кустов (тип 2) – разных размеров
5 кустов (тип 3) – разных размеров
5 Кусты (тип 4) – разных размеров
5 кустов (тип 5) – разных размеров
5 кустов (тип 6) – разных размеров
5 заснеженных кустов – разных размеров
5 сосен – разных размеров
5 заснеженных сосен – разных размеров
В набор также входят:
5 звуков птиц
5 эффектов частиц – дождь, снег, падающие листья, туман и эффект таинственного леса
Примечание: Освещение и небо от UniStorm (не входят в комплект). Этот ассет не поддерживает URP или HDRP.
Технические характеристики
Этот ассет не поддерживает URP или HDRP.
Разрабатывая физическую симуляцию, порой проводишь ради интереса случайные эксперименты, без особых на то причин
Физический движок я пилю для игры, потому что считаю, что прогресс в вычислительной технике уже достаточный, чтобы в играх, где физика раньше имитировалась, использовать реальную физику без чрезмерной нагрузки на железо.
Игра, для которой я это делаю, называется Simulario, и доступна для вишлистения на Стиме. Когда она выйдет пока не ясно, потому что я только закончил делать физ-движок, и приступил к реализации геймплея.
Раздача 3-х ассетов на Matte Painting Skybox Pack: Chaotic Skies,Futuristic Warrior CYBER WARRIOR и Laketown на fab.com
Matte Painting Skybox Pack: Chaotic Skies
Описание
ВИДЕО ПОЛЕТА: youtube
Эпоха Flowmap уже здесь! Теперь вы можете создавать невероятно эпическое небо с анимацией, сохраняя при этом отличную производительность. Использование в играх уровня AAA и голливудских фильмах!
Эта версия знаменитого пакета неба включает в себя невероятно детализированные, апокалиптические грозовые облака. Могу сказать, что это самая детализированная и эпическая версия из всех, что я делал на сегодняшний день. Благодаря новым знаниям в области Houdini и 20-летнему опыту работы с матовой живописью в киноиндустрии, я представляю вам идеальное решение для создания эпических небесных сфер в ваших проектах.
Пакет содержит 6 матовых картин кинематографического качества с высоким разрешением (4K) и обзором 360 градусов, которые можно использовать для улучшения вашего окружения и придания ему кинематографического эффекта. В папке Sources также находятся исходные файлы RAW-карт высот и тепловых карт.
Пакет использует систему анимации Flowmap из пакета Matte Painting Skybox Bundle Pack. Все небеса полностью анимированы. Это полностью оптимизированная для производительности система чертежей.
Небо имеет базовые экземпляры материалов для лёгкого изменения цвета, контрастности, экспозиции, скорости и других параметров анимации. Я также включил в подарок 8K-ландшафт с анимированными тенями от облаков. Для слабых и мощных компьютеров я включил версии с ландшафтом и без него.
Небо проецируется на сферу с UV-развёртками, которые служат полукуполами. Поэтому пакет не основан на старой системе боксов из 6 изображений. Это купол неба.
Я бывший художник по цифровым мэтам, поэтому надеюсь, вам понравятся мои рисунки. Обратите внимание, что я создал эти рисунки специально для этого пакета. Он не включает изображения скайбокса, которые можно найти в моей серии Elite Landscapes или предыдущих наборах скайбоксов.
Включенные форматы
Unreal Engine
Технические характеристики
Особенности:
6 изображений неба
4K
Система анимации Flowmap на основе чертежей
Пейзаж 8K
Размеры текстур: все небо 4K.
Столкновения: не требуются.
Уровни детализации: не требуются.
Количество сеток: 1 статичная сетка для небесной сферы.
Количество материалов и экземпляров материалов: 5 базовых материалов, 15 экземпляров материалов
Количество текстур: 23
Поддерживаемые платформы разработки: ПК и консоли.
Поддерживаемые целевые платформы сборки: ПК и консоли.
Важные/дополнительные примечания: Если вы хотите связаться со мной: (darth_velarion@yahoo.com)
Совместимость
Поддерживаемые версии Unreal Engine
4.26–4.27 и 5.0–5.6
Поддерживаемые целевые платформы
Linux
Mac
PS4
SteamVR / HTC Vive
Win32
Xbox One
Windows
Oculus
Futuristic Warrior CYBER WARRIOR
Подпишитесь на меня в DISCORD и других социальных сетях и не забудьте оставить отзыв*****. Спасибо.
Дополнительные кости, добавленные в Epic Skeleton: join1
Подходит для игр разных жанров: RPG, стратегии, от первого лица и т. д.
В архиве базовая сетка (fbx и maya).
Изображения, демонстрирующие визуальное содержимое продукта, отрендерены в Unreal Engine 4 и Marmoset.
UV-развёртка 4096x4096 (уменьшено до 1024x1024)
Риггинг в Epic Skeleton
Модель содержит 6 демонстрационных и 43 основных анимации.
Риггинг: (Да)
Риггинг для скелета Epic: (Да)
При риггинге для скелета Epic включаются кости IK: (Да)
Анимация: (Да)
Количество анимаций: 43
Типы анимации (Root Motion3/In-place 40):
Количество персонажей: 1
Количество вершин персонажей: 47 554
Количество материалов и экземпляров материалов: 19
Количество текстур: 51
Разрешения текстур: ((2048x2048), (4096x4096))
Поддерживаемые платформы разработки:
Windows: (Да)
Mac: (Да)
Документация: Ссылка: Нет
Важные/дополнительные примечания: Нет
Модель загружена и работает в Unreal Engine 5, но скелет имеет структуру из Unreal Engine engin 4, будьте внимательны и учтите этот момент.
Включенные форматы
Unreal Engine
Unity
fbx
obj
Конвертированные GLB, glTF и USDZ
Технические подробности
Видео: youtube
Риггинг: (Да)
Риггинг к эпическому скелету: (Да)
При риггинге к эпическому скелету кости IK включаются: (Да)
Анимация: (Да)
Количество анимаций: 43
Типы анимации (Root Motion3/In-place 40):
Количество персонажей: 1
Количество вершин персонажей: 47554
Количество материалов и экземпляров материалов: 19
Количество текстур: 51
Разрешение текстур: ((2048x2048), (4096x4096))
Поддерживаемые платформы разработки:
Windows: (Да)
Mac: (Да)
Документация: Ссылка
Важные/дополнительные примечания: Нет
Совместимость
Поддерживаемые версии Unreal Engine
4.18 – 4.27 и 5.0 – 5.4
Поддерживаемые целевые платформы
Win32
Xbox One
Windows
Laketown
Описание
Готовые к использованию дома и доки в средневековом стиле на берегу озера. Детализация со всех сторон позволяет варьировать их.
Вы можете создавать совершенно новые сцены, используя всего пару сеток. Все ресурсы высоко оптимизированы.
В здании нет интерьеров.
Снег — это отдельный материал, создаваемый после обработки.
Эффект падающего снега на землю — процедурный и может быть отключен/настроен с помощью отдельных материалов.
Включенные форматы
Unreal Engine
Технические данные
Физически корректный рендеринг: Да
Размер текстур: 4K
Столкновения: Да (AutoCollision)
Количество полигонов: Различное
Уровни детализации: 2-3 (AutoLod)
Количество сеток: 45
Чертежи: 5
Количество материалов и экземпляров материалов: 27
Количество текстур: 69
Совместимость с движком: ПК
Платформа: ПК
Протестированные платформы: ПК
Документация: Нет
Ссылка на демо-видео: youtu.be
Совместимость
Поддерживаемые версии Unreal Engine: 4.26 – 4.27 и 5.0 – 5.4
Unity 2022.x
Поддерживаемая целевая платформа Платформы
Windows
Win32
Обновил трейлер своей игры
За последние несколько дней улучшил визуал дорог и и т.п. Решил, что стоит показать это и в трейлере
Для ЛЛ: Демка на подходе (3-5 раб. дней)
В Steam можно выпустить демку в разных вариантах (отдельная страница/просто кнопочка, до выхода игры/после) и на всё одна страница документации.
Я так понял, что отдельно проходить проверку страницы (нулевой, технической) и приложения надо только, если демка доступна до выхода самой игры. Что логично, вдруг, ты дрянь какую в демо запихаешь.
Но при выпуске демо после релиза (в раннем доступе) тоже надо ждать проверки.
Если любопытно, заходите на страничку в Steam
В моей первой игре есть жутковатая база данных пациентов психбольницы
Соня - это мой первый пробный проект. В моих планах в будущем сделать что-то более глобальное, поэтому некоторые механики я осваиваю здесь. Одна из них - это компьютерные терминалы, которые мы все так обожаем читать в Fallout. Тут вы можете увидеть список всех пациентов, которые упоминаются и находятся в психушке.
Конечно, чтобы получить доступ, нужно будет знать пароль) Внутри же будет небольшая информация по персонажам, но кто есть кто придётся догадаться самому, так как в списке будут фамилии, а в ходе игры, они почти не используются.
В общем, периодически к этому списку можно будет возвращаться, чтоб сопоставить данные. Даже 2 небольших квеста будут связаны с этими списками. Как вам в целом?
Напомню, что это не финальные версии иллюстраций, к выходу игры что-то может поменяться.
Добавляйте игру в вишлисты: https://store.steampowered.com/app/3912080/Sonya/
Делаем с другом свой первый проект: визуальную новеллу про «день сурка» среди панелек в эстетике Крайнего Севера
Привет пикабушникам и любителям пикселей <3 Я Макс, сценарист Deep Pixel Melancholy. Несколько лет назад я подгорел от мобильной разработки, а потом счастливый случай свёл меня с крутым художником Димой. Вместе мы основали студию ok/no и теперь делаем свою первую игру. Зацените вайб:
Мы обожаем эстетику нулевых и чувство ностальгии — и на этом фундаменте строим нашу игру. Неудивительно, ведь это то, на чём мы выросли. Нам очень хочется привнести в жанр нечто новое: от визуального стиля в целом до сюжетной глубины. Лично я счастлив, что наконец-то могу написать историю, которую мне самому было бы интересно узнать.
Завязка такая: жизнь главного героя Егора похожа на заевшую видеокассету: счета за коммуналку, троллейбус до офиса, перекладывание бумажек, кофе 3 в 1 и хроническая усталость. Хотелось бы улететь на море, но скорее вечная мерзлота растает, чем удастся на это накопить.
Привычный быт рушится, когда Егор застревает во временной петле. Основной задачей становится не поиск выхода, а ответа на вопрос: зачем вообще выбираться? Ведь завтрашний день не сулит ничего хорошего, а для счастья может быть достаточно и одних беззаботных суток.
Поделитесь, что думаете о нашей игре, пожалуйста. Сейчас мы в стадии активной разработки и нам важно услышать больше мнений. Игру мы делаем по ночам или в другое свободное от основной работы время, поэтому очень хотим прийти к успеху и в дальнейшем заниматься только тем, что нам нравится =)
У Deep Pixel Melancholy уже есть демка в Стиме. Будем максимально счастливы, если вы в неё сыграете и поностальгируете вместе с нами. Ссылочку оставляю ниже.





















