Фон
Я управляю сервером майнкрафт, где собираюсь спроектировать довольно крупный стартовый город. У меня есть ряд вещей, таких как знаки правил и клетки для мобов, которые я бы хотел разместить в зданиях. Сам город будет очень большим и разросшимся, предпочтительно размером до 1000 на 1000 блоков.
Сами здания будут иметь куб или прямоугольные следы, основанные на определенном базовом кубе, как все кратные 3 блокам. Улицы и расстояние между зданиями будут предпочтительно 5-11 блоков шириной, в зависимости от важности улицы.
Когда я начну планировать город, я точно буду знать, насколько большими будут здания и сколько их будет.
Проблема
Проблема заключается в разработке макета для города. Очевидно, что с таким масштабом, и я, исходя из опыта программирования, а не из города, планирую, довольно сложно даже начать думать об этой проблеме.
Проблема в том, что я хочу, чтобы город выглядел максимально естественно. Конечно, это будет довольно легко построить на простом шаблоне сетки, но я хочу избегать сетки или всего, что выглядит как сетка, насколько это возможно.
Вопрос
Какие алгоритмы я мог бы использовать, чтобы помочь мне разработать его с использованием кода? Я думал, что это было бы наиболее естественно, если бы я использовал фракталы каким-то образом, поскольку майнкрафт использует фракталы уже в своем рельефе местности, и город, кажется, растет по фрактальной схеме естественным образом.
Я думаю, что он в некотором роде похож на алгоритм игры в тетрис, поэтому, если у кого-то есть решения, которые существуют в этом направлении, то это также поможет. Я представляю что-то, где я смогу определить формы, которые я хочу использовать, и затем программное обеспечение выполняет итерации, пока не найдет наиболее «оптимальное» решение для равномерного распределения зданий. Есть ли что-то, что поможет мне решить эту проблему с помощью Python, предпочтительно визуально с помощью Pygame?
Естественно, это также имеет интересные последствия для генерации городов в целом в игровом дизайне, поэтому я очень рад видеть лучшее решение.
редактировать Чтобы быть ясно, я просто смотрю на макет в этой точке , как здания будут спроектированы и построены в игре.
Ответы:
Недавно я реализовал алгоритм для процедурного расположения города. Эта работа все еще находится в стадии разработки, но мне кажется многообещающей. Взглянем:
Алгоритм, использованный для создания этого макета, в основном основан на L-системах . У меня есть базовый
Element
класс, у которого есть прямоугольник, отмечающий его место на карте, и методGrow
, который создает другиеElements
внутри прямоугольника и / или порождает некоторые объекты на карте. Тогда есть фактические элементы, унаследованные от этого базового класса:City
,Street
, иBuilding
т.д.Генерация начинается с ряда «начальных» объектов (в моем случае это просто один
City
элемент, случайно размещенный на карте). Затем система выполняет итерацию по всем элементам, вызываяGrow
, пока все элементы не станут неактивными (Grow
возвратfalse
) или не произойдет какое-то большое количество проходов итерации.Город на картинке построен по нескольким простым правилам:
City
становитсяStreet
элементом, разделяющим область где-то.Street
s растут 0-3 переулков, далее разделяя область.Street
постоянно пытаемся соответствовать случайному размеруBuilding
сбоку.Результат не очень интересный, но и неплохой. Система может быть легко расширена и достаточно проста, чтобы понять, что происходит (-8
источник
Есть этот GDC разговор о генерации процедурного строительства пару лет назад. Он предназначен для создания отдельных зданий на основе набора шаблонов, но не для создания целых городов (разметка улиц и т. Д.). К сожалению, нет никакого свободного кода, чтобы пойти с ним. Система, описанная в докладе , реализована в Unreal, хотя мне не ясно, в свободной ли она версии UDK или нет. В любом случае, вы можете использовать одни и те же идеи для создания своей собственной системы.
Погуглив «процедурные здания» или «процедурный город», вы также найдете множество других статей и статей на эту тему.
источник
Я наткнулся на очень хороший / подробный учебник для создания процедурных городов некоторое время назад. Есть видео @ http://www.youtube.com/watch?v=-d2-PtK4F6Y Учебное пособие находится в блоге автора: http://www.shamusyoung.com/twentysidedtale/?p=2940 Надеюсь, это поможет AMB
источник