Привет! Меня зовут Артём, и я 3D‑моделлер, который много лет работает в 3ds Max. Недавно я решил углубиться в геймдев и прошёл курс по менеджменту игровых проектов в Высшей школе Бизнеса ВШЭ, что помогло мне структурировать свои знания и подойти к разработке игр более осознанно. В рамках обучения и экспериментов с Unreal Engine я создал игру Run Eternal Depths — roguelike с процедурной генерацией подземелий, которая уже доступна для добавления в вишлист в Steam. Релиз запланирован на 21 мартаЧитать полностью »
Рубрика «процедурная генерация»
Как я создал roguelike Run Eternal Depths: технические аспекты и простая генерация подземелий
2025-03-17 в 5:00, admin, рубрики: Gamedev, Алгоритмы, генерация лабиринтов, процедурная генерация, стимВидеоигры упёрлись в потолок? Куда дальше развиваться?
2024-09-23 в 13:35, admin, рубрики: геймдев, геймдизайн, Дизайн игр, игры, ии в играх, процедурная генерацияВ последние два года всё чаще можно услышать тезис, мол, игровая индустрия стагнирует, многие разработчики занимаются самокопированием, а игры на геймплейном уровне не предлагают ничего нового.
В то же время, примерно с 2020 года мы не видим каких-то существенных скачков в графическом плане. Однако игры с каждым годом становятся всё требовательней к железу, и не всегда понятно, на что уходят ресурсы.
В этой статье я попытаюсь разобраться, действительно ли игры упёрлись в потолок своего развития, а также постараюсь найти точки роста для видеоигр.
Простая процедурная генерация мира, или Шумы Перлина на Python
2023-04-25 в 11:54, admin, рубрики: minecraft, perlin noise, selectel, Алгоритмы, Блог компании Selectel, графика, Дизайн игр, майнкрафт, процедурная генерация, Работа с 3D-графикой, разработка игр, шум перлина
Недавно я выпустил статью, в которой рассказал о библиотеке Ursina Engine и показал, как создать свою трехмерную игру на Python. Между разделами вскользь упомянул про шум Перлина. Это один из базовых алгоритмов процедурной генерации, который можно использовать для создания красивых игровых миров. Хочу рассказать о нем подробнее и показать, как работать с модулем perlin-noise.
Если вам интересно, как просто генерировать реалистичные трехмерные ландшафты на Python, добро пожаловать под кат!
Читать полностью »
Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема
2022-02-25 в 15:47, admin, рубрики: алгоритм Брезенхэма, Алгоритмы, Дизайн игр, компьютерные игры, процедурная генерация, разработка игр, сапёр
Всем привет! Уже больше 30 лет я занимаюсь разработкой видеоигр и регулярно экспериментирую с различными игровыми механиками. В результате я пришел к идее создать игру по типу сапёра, но от третьего лица и на roguelike подобном уровне.
Процедурная генерация бумажных снежинок
2021-12-01 в 7:30, admin, рубрики: canvas, javascript, TypeScript, Алгоритмы, Новый Год, Программирование, процедурная генерацияПривет! Скоро начинаются предпраздничные дни, а вместе с ними и украшение наших домов. По этому поводу я решил заняться процедурной генерацией лекала для вырезания из бумаги снежинок, и вот что у меня получилось.

Идея
Изначально мысль о подобном алгоритме пришла ко мне после объявления конкурсаЧитать полностью »
Как я сгенерировал на Python тысячу лиц для своей игры
2020-04-03 в 7:50, admin, рубрики: photoshop, pillow, python, генератор аватар, Дизайн игр, обработка изображений, процедурная генерация, разработка игрНа определённом этапе разработки своей игры я осознал, что мне нужна система диалогов с лицами-аватарами.
Поэтому я решил создать генератор лиц на основе знаменитой игры Papers, Please.

Генератор лиц Dukope (из Papers, Please)
Сбор данных
Я скачал примерно 50 портретов с pixabay.com (все изображения имеют лицензию CC и не требуют указания авторства).
Затем я вырезал фон каждого изображения в Photoshop (просто выбрал всё инструментом выделения многоугольника и нажал на Delete). В дальнейшем я планировал воспользоваться эффектом cutout , чтобы скрыть все недочёты.

Изображения с удалённым фоном
Читать полностью »
Адаптивная процедурная генерация при помощи алгоритма WaveFunctionCollapse и априорного распределения вероятностей
2020-01-10 в 13:02, admin, рубрики: wave function collapse, Алгоритмы, коллапс волновой функции, процедурная генерация, процедурная генерация карт, разработка игрЧто такое процедурная генерация?
Процедурная генерация включает в себя множество генеративных алгоритмов, принцип работы которых заключается в создании данных не вручную, а алгоритмически: вместо ручного изготовления того, что мы хотим создать (карты, музыки, рельефа…), пишется алгоритм, который успешно может создавать различные примеры без многократного выполнения того же процесса. Особенно полезен такой подход в видеоиграх, где случайным образом может генерироваться целая карта или уровень (например, карты в Minecraft, Terraria или Factorio, или схемы уровней в большинстве roguelike).
Алгоритм коллапса волновой функции и его области применения
В статье мы исследуем алгоритм коллапса волновой функции (WaveFunctionCollapse, WFC), предложенный Максимом Гуминым (в его Twitter есть коллекция потрясающего контента, созданного при помощи этого алгоритма другими разработчиками!) для процедурной генерации изображений или рельефа при помощи создания изображений, локально схожих с входящим изображением в условиях сетки заданного размера.
В основе алгоритма лежит идея пошагового создания готового изображения с отслеживанием того, какие тайлы «соответствуют» уже частично построенному изображению. Для изучения подробного описания алгоритма рекомендуем обратиться к исходному репозиторию WFC на Github и четвёртому разделу статьи "WaveFunctionCollapse is Constraint Solving in the Wild".

Примеры процедурно сгенерированных из seed изображений
Читать полностью »
Усложняем Sci-fi-модели процедурно: что такое Greeble и как его использовать
2020-01-08 в 5:53, admin, рубрики: greeble, процедурная генерация, процедурная генерация мешей, Работа с 3D-графикой, разработка игр
Для начала позвольте мне пожаловаться, что «greeble» — ужасное слово, которое нужно изгнать из словаря.
Ну, сняв камень с души, перейдём к объяснениям. Greeble — это мелкие повторяющиеся детали, добавляемые к модели, чтобы придать ей ощущение масштаба и определённой эстетики. Гриблы стали популярны благодаря классическим научно-фантастическим фильмам, в которых «моделью» часто была физическая скульптура:

Если вы уже знаете из моего туториала по экструдированию, как экструдировать процедурные меши, то понимаете, как добавить гриблы. Добавление простых гриблов к мешу можно реализовать экструдированием всех полигонов меша на случайную длину.
Однако вы могли заметить, что представленный выше туториал рассматривает только экструдирование треугольников, в то время как на изображении в начале статьи гриблы квадратные. Мне пришлось настроить меш так, чтобы он был разделён на четырёхугольники, и многие меши часто состоят из полигонов с более чем тремя индексами. Поэтому в этом туториале мы узнаем, как экструдировать полигон с n индексами и применим этот алгоритм ко всему мешу, чтобы создать гриблы. Также мы узнаем пару способов внесения вариаций в алгоритм гриблинга для получения менее однородных результатов.
Читать полностью »
Цепи Маркова для процедурной генерации зданий
2019-11-21 в 7:42, admin, рубрики: игровые движки, имитация отжига, процедурная генерация, разработка игр, цепи маркова
Примечание: полный исходный код этого проекта можно найти [здесь]. Так как он является частью более масштабного проекта, я рекомендую смотреть коммит на момент выпуска этой статьи, или файл /source/helpers/arraymath.h
, а также /source/world/blueprint.cpp
.
В этой статье я хочу подробно рассказать о принципах использования цепей Маркова и статистики для процедурной генерации 3D-зданий и других систем.
Я объясню математические основы работы системы и постараюсь сделать объяснение как можно более общим, чтобы вы могли применять эту концепцию в других ситуациях, например, для генерации 2D-подземелий. Объяснение будет сопровождаться изображениями и исходным кодом.
Этот метод является обобщённым способом процедурной генерации систем, удовлетворяющих определённым требованиям, поэтому я рекомендую дочитать хотя бы до конца первого раздела, чтобы вы могли понять, сможет ли эта методика быть полезной в вашем случае, потому что ниже я объясняю необходимые требования.
Читать полностью »
Алгоритм размещения тайлов на основе ограничений
2019-11-12 в 8:31, admin, рубрики: Алгоритмы, генерация карт, процедурная генерация, разработка игр, тайлы
В этом посте описывается алгоритм, используемый в Generate Worlds — инструменте, позволяющем пользователям создавать и исследовать процедурные миры построением небольших множеств воксельных тайлов. Я приведу краткое описание алгоритма, а в следующих постах расскажу о его преимуществах в скорости и гибкости по сравнению с другими методами. Чтобы подробнее узнать о том, что такое процедурная генерация на основе ограничений (constraint-based procedural generation) и о том, чем она интересна, рекомендую прочитать мой предыдущий пост.
Если вы хотите проверить свои силы в создании процедурных миров при помощи этой системы, то можете приобрести Generate Worlds. Если цена для вас слишком высока, то продолжайте чтение: этот пост даст вам информацию о том, как самостоятельно реализовать алгоритм Generate Worlds.
Читать полностью »