Я только недавно задал этот вопрос, и, похоже, был сделан вывод, что использование генетического программирования ( GP ) для создания процедурного игрового контента на самом деле не было сделано. Я хочу изменить это.
Я вполне уверен, что GP может быть развернут, чтобы помочь найти новый генератор местности. Вопрос, который я задаю: как этого достичь?
Все ВОП имеют несколько основных частей, которые можно обобщить для всех ВОП (отбор родителей, рекомбинация, мутация, выживание). Я могу понять это самостоятельно. Проблема возникает в проблемных частях. Вот как вы представляете проблему в коде (это обычно использует дерево), и как вы оцениваете, насколько хорошим может быть генератор (это может быть одно или несколько значений).
В двух словах:
Как бы вы представили генератор ландшафта таким образом, который можно разобрать в дерево?
Какую местность это должно создать? (карта высот, граф вершин, ...)
Чем меньше это основано на карте высот, тем лучше.
Что будет использоваться для оценки пригодности решения?
Например: мы хотим получить интересную местность, чтобы одним из значений могло быть среднее изменение нормалей для каждой вершины на местности.
источник
Ответы:
Вам может повезти с подходом, похожим на генетические образы Карла Симса .
Он использует простой набор операторов в LISP-подобном языке, так что любой выход оператора может использоваться для воздействия на изображение, аналогично некоторым языкам шейдеров (т. Е. Скаляр будет значением серой шкалы, a
vector3
будетRGB
и т. Д.). ).Хотя я предполагаю, что это материал для реализации, так что вы, вероятно, хотите его ключевые слова, которые (iirc) содержат все основы:
sin, cos, tan
и т. д.)x, y
)sqrt, pow, abs, inverse
)fBm, noise2, noise3
)mandelbrot, julia
)lerp, quad, step, smoothstep
)(Некоторые из вышеперечисленных могут быть не в его реализации; я нашел его работу очень давно и на самом деле несколько лет пытался описать то, что вы описываете - поэтому воспоминания могут протекать :)
Держать это интересно (и быстро)
Мне повезло с многослойным подходом, который значительно уменьшил количество мертвых эволюций.
Тем не мение...
Теперь я удобно пропустил алгоритм пригодности , я в основном использовал подход «неестественного отбора» Карла Симса, когда вы видите текущее поколение в центре квадрата группы потомков (популяризируемых Kai Power Tools в те дни - вот образ того , что я имею в виду ) ..
Однако, возможно, у вас может быть набор обучающих изображений, возможно, некоторые из спутниковых изображений и несколько искусственных изображений с особыми качествами, а затем, возможно, использовать вейвлет или 2D БПФ-анализ на них в сравнении с местностью, которую вы тестируете?
Это интересная тема, но я сомневаюсь, что вам нужно было ответить на :)
РЕДАКТИРОВАТЬ: ааа. пришлось удалить кучу ссылок, потому что я новый пользователь: - |
источник
Я не уверен, что вы можете ответить на этот вопрос, но я чувствую объяснение того, почему может быть достаточно полезным ответом. Итак, ответы в двух словах:
Генетические алгоритмы обычно используются для решения известной проблемы, где вы можете определить среду с помощью правил. Затем вы можете создавать наборы данных, которые представляют различные свойства, которые влияют на то, как вещи реагируют на правила. Затем компьютер воспроизводит «раунд» с исходным набором данных, выбирает верхнее число X, смешивает их значения после их объединения и выполняет еще один раунд. Типичным примером этого является «разведение лучшего тролля» (выполнение разведения в найти набор ценностей, в которых тролль обычно очень хорошо себя чувствует в своей среде (способен охотиться и есть, убивать или держаться подальше от жителей деревни, может собирать добычу и собирать все блестящие предметы, которые ему нужны, и т. д.).
Я просто не уверен, что то, что вы пытаетесь достичь, применимо в области создания ландшафта. Единственное, что я могу придумать, - это оценки игрового контента, в которых вы не хотели планировать мир, но хотели создать такой, в котором путь ИИ может быть точно рассчитан или что-то в этом роде. Однако даже при этом вы ищете один или, по крайней мере, ограниченный набор миров.
источник
Определенно вершинный граф (сетка), он компактен в плане хранения и может быть растеризован (тесселярован) по требованию.
Клеточные автоматы. Я могу думать о двух реализациях:
Автоматы с набором правил, возможно, с элементами конечных автоматов (когда учитывается текущее состояние, такое как счетчик попыток или время простоя).
Сам набор правил может быть представлен как дерево решений ветвления или простой пакет команд (не уверен, что это будет работать)
Это просто один набор правил для каждого узла
Мир-строители. Вместо того, чтобы применять решатель для каждого отдельного узла, вы можете создать только несколько из них и позволить им перемещаться по сетке.
Тем не менее, я боюсь, что второй подход должен быть подкреплен первым: нужно сгладить начальную случайность, и я не уверен, что строители могут добиться цели. В конце концов, каждая живая клетка имеет митохондрии.
Целостность полученного ландшафта - это не должно выглядеть как мешанина. И разнообразие - как правило, мы хотим, чтобы было представлено как можно больше доступных вариаций (плоская пустошь от одного края до другого неинтересна). Может быть, что-то более сложное, например, как соседние узлы соответствуют друг другу (тундра посреди пустыни, что?)
Должен попробовать для себя с моим генератором сетки, когда / если есть свободное время =)
источник