Мой первый Ludum Dare: хоррор игра на Python, pygame с бесконечнной генерацией (LD57)

Подготовка и идея

Это был мой первый Ludum Dare, и я многому научился после его завершения. Участвуя в джеме, мы проходим все этапы разработки от идеи и прототипа до релиза и маркетинга. Для меня это был практически первый раз, так как я редко доводил игры до выпуска.

Когда объявили тему "Depth" («Глубина»), вдохновившись брейнштормом стримера xkoster на тему тунели, я решил создать хоррор-игру с бесконечной генерацией уровней. Хотелось трактовать глубину не буквально, а как погружение в атмосферу ужаса, где игрок спускается всё ниже и ниже, встречая новые испытания.

Мой первый Ludum Dare: хоррор игра на Python, pygame с бесконечнной генерацией (LD57)

Разработка: технические решения

Я выбрал разработку на чистом Python с использованием pygame и moderngl. Это было для меня не в новую, так как ранее я уже создал много игр с использованием питона, и чуствую себя с ним доволе уверено. Так же пайгейм очень удобный для быстрой розроботки, так как на нем очень просто писать маленькие игры, вот например прошлый лд победила игра написана на пайгейме.

ModernGL оказался отличным инструментом для создания атмосферных эффектов освещения и теней, что критически важно для хоррор-игры. Я даже экспериментировал с генерацией GLSL шейдеров с помощью ИИ, что дало интересные результаты для визуальной части. Но и тут есть свои минусы - отсутствие веб билда, изза этого оценки могут умешиться чуть не в 2 раза.

Мой первый Ludum Dare: хоррор игра на Python, pygame с бесконечнной генерацией (LD57)

Система случайной генерации и основные ошибки

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

К концу джема я осознал две главные ошибки:

  1. Пропуск этапа полишинга. Я запланировал слишком много и не смог всё закончить вовремя. Несмотря на это, многим понравилась атмосфера игры и то, как я реализовал тему глубины.
  2. Создание контента, который игроки не увидят. Я потратил много времени на систему случайной генерации, но поскольку игроки вряд ли будут перепроходить игру несколько раз, они, вероятно, даже не заметят этой фичи. К тому же, из-за времени, потраченного на это, у меня осталось меньше времени на другие важные аспекты.
Мой первый Ludum Dare: хоррор игра на Python, pygame с бесконечнной генерацией (LD57)

Итог

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

Если вам интересно посмотреть на результат:

На сайте лд я также выложил исходный код, если кому-то интересно, как реализована игра на Python с использованием moderngl и pygame.

Буду благодарен за любой фидбек и комментарии по игре!

Спасибо тем кто дочитал!

8
Начать дискуссию