Как я разработал roguelike Run Eternal Depths: технические детали и лёгкая генерация подземелий

Привет, SE7EN! Меня зовут Артём, и я 3D‑моделлер, который много лет работает в 3ds Max. Недавно я решил углубиться в геймдев и прошёл курс по менеджменту игровых проектов в Высшей школе Бизнеса ВШЭ, что помогло мне структурировать свои знания и подойти к разработке игр более осознанно. В рамках обучения и экспериментов с Unreal Engine я создал игру Run Eternal Depths — roguelike с процедурной генерацией подземелий, которая уже доступна для добавления в вишлист в Steam. Релиз запланирован на 21 марта, и в этой статье я расскажу о технических аспектах разработки, включая мою реализацию генерации подземелий.

1. Идея и начало разработки

Изначально Run Eternal Depths задумывалась как тестовый проект для экспериментов с процедурной генерацией подземелий. Мне нужно было реализовать эту механику для другого проекта, но я решил сделать это в чистом проекте, чтобы не рисковать основным. Со временем идея переросла в полноценный roguelike с упором на исследование подземелий.

2. Технические аспекты разработки

Движок и инструменты

  • Unreal Engine 5: Я выбрал его из‑за мощного инструментария для работы с 3D‑графикой и гибкости в настройке логики.

  • Blueprints: Поскольку я не программист, я использовал визуальное программирование для реализации механик. Это позволило мне быстро прототипировать и тестировать идеи.

  • 3ds Max: Для создания большинства 3D‑моделей (кроме гоблина и босса, которые сделал другой художник). Я работаю в 3ds Max уже много лет, и это мой основной инструмент для моделирования.

Процедурная генерация подземелий

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

  • Алгоритм генерации:

    • Я использовал заранее заготовленные комнаты и коридоры, у каждого из которых есть входы и выходы.

    • В акторе помещения на все выходы я ставил Actor Component Arrow (он оказался очень удобным для моих целей так как его легко вызывать в Blueprints).

    • Затем я пробегался по массиву всех Arrow и там, где это возможно, спавнил следующую комнату или коридор. Там, где это невозможно, я спавнил груду камней, будто произошёл обвал.

    • Процесс продолжается до тех пор, пока не будет достигнуто определённого количества комнат.

  • Преимущества подхода:

    • Простота реализации: не нужно писать сложные алгоритмы.

    • Гибкость: можно легко добавлять новые типы комнат и коридоров с различным наполнением.

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

  • Текстурирование:

    • Для основной геометрии комнат я использовал трипланарный материал. Это позволило избежать проблем со стыковкой текстур при рандомном спавне помещений.

Боевая система

  • Я реализовал простую боевую систему с использованием Animation Blueprints и Hitboxes.

  • У игрока есть меч для ближнего боя и способность кидать фаерболы.

  • Враги используют AI Controller для навигации и атак. Я настроил поведение врагов так, чтобы они атаковали игрока только в зоне видимости.

3. Художественный стиль и ассеты

  • Большинство 3D‑моделей я создал сам в 3ds Max. Для гоблина и босса я обратился к другому художнику, так как хотел, чтобы эти персонажи выделялись.

  • Я выбрал мрачный стиль, так как именно так я представляю себе подземелья.

  • Для UI картинки нарисовал мой друг, а саму реализацию я выполнил сам.

4. Публикация в Steam

Публикация игры в Steam стала для меня новым опытом. Я впервые выкладывал игру на платформу, и поначалу путался во всех вкладках Steamworks. Однако, благодаря пошаговому списку на сайте Steam, я смог разобраться и завершить процесс.

1. Steam Direct:

o Взял у друзей с уже оформленным девелоперским аккаунтом слот и заполнил все необходимые формы.

2. Страница магазина:

o Подготовил описание, скриншоты и трейлер.

o Графику для страницы я создал в Photoshop, а также использовал нейросети для генерации некоторых элементов.

o Трейлер собрал из нарезки видео с моментов разработки и тестирования прототипов.

3. Тестирование и выпуск:

o После заполнения всех данных и загрузки билда игры, я проверил, что всё работает корректно.

Как только все этапы были завершены, игра стала готова к выпуску.

Создание Run Eternal Depths стало для меня отличной возможностью глубже изучить Unreal Engine и попробовать себя в роли геймдизайнера и разработчика. Я многому научился и уже планирую следующие проекты. Если вам интересно, вы можете добавить игру в вишлист и поддержать меня: ссылка на игру в Steam.

 

Источник

Читайте также