Привет, 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.