LINUX.ORG.RU

Рандомная генерация «мира»


2

4

Не помню с кем разговор заходил, но вообщем этот человек писал (у него аватар еще результат рендра какой-то хрени), что мол рандомно можно генерировать вполне «логические последовательности/модели/фигуры/мир». Гхм, но как я не парился, получалось генерировать только шум, не каких объектов хоть отдаленно напоминающих фигуру не выходило, даже в том случае, если использовал систему состоящею из нескольких десятков рандомов, генерирующих друг для друга числа, которые влияют на них самих впоследствии, точнее на алгоритм их генерации. Более-менее что-то кроме шума выходило только если в рандомную систему врезать не рандомный алгоритм.
^Гхм надеюсь эту кашу хоть кто то понял, сори за такой сумбур, не знаю как это доходчивее объяснить, короче: в идеале я хочу получить систему, которая из кубиков рандомно генерирует объекты, мир в целом, но пока выходит только каша, даже отдаленно не напоминающая что-то вроде строений.



Последнее исправление: makeB (всего исправлений: 1)

Строить нужно не из кубиков, а из групп объектов, состоящих из кубиков.

Вот и строения нужно строить не из атомов, а из стен, крыш, окон, домов, в свою очередь состоящих из балок, брусков, досок и т.п.

KRoN73 ★★★★★
()

ИИ собрался делать?Невыйдет.На текущих калькуляторах неполучится.

Я понял что ты хочеш-саморазвивающуюся систему которая способна мало того что себя написать,и переписать,так еще и обладать творчеством генерируя «случайные» разумные идеи...невозможно(биологический компьютер-человек,уже есть и давно работает,обычные компьютеры-большие калькуляторы,и хоть в миллиоар,хоть в триллион увеличь их мощьность-из калькулятора ктоме как быстрого математики-ничего не выйдет(если вы собираетесь с этим спорить-проведите изучение вопроса сначала,отвечать на форумные «вбросы» даже не подумаю))

anonymous
()

как то давно на занятиях по C++ мы писали примитивный генератор «карты» - земля, вода и лес, главное условие - что бы все было более менее логично.

anonymous_sapiens ★★★★★
()
Ответ на: комментарий от KRoN73

Строить нужно не из кубиков, а из групп объектов, состоящих из кубиков.

Ну по сути у меня то и было, несколько рандомов, которые рандомят последовательность использования кубиков, которую другой рандом опять таки берет и генерит другую последовательность, применяя группу кубиков от предыдущего рандома. В итоге все равно кубическая каша была.

makeB
() автор топика
Ответ на: комментарий от anonymous_sapiens

мы писали примитивный генератор «карты» - земля, вода и лес

Это, как раз, легко делается. При чём разными методами. Вот такое я получал на коленке десятком-двумя строк на PHP:

http://www.balancer.ru/img/forums/1210/rpg-relief.png

При чём вывод в картинку — не самоцель, чисто демонстрационный, реально там градаций куда больше. В тесте — 256. Плюс динамические водоёмы.

KRoN73 ★★★★★
()
Ответ на: комментарий от makeB

Ну по сути у меня то и было, несколько рандомов, которые рандомят последовательность использования кубиков, которую другой рандом опять таки берет и генерит другую последовательность

Не-не. Нужны жёсткие фильтры. Как естественные (диктуемые законами природы), так и искусственные (диктуемые целесообразностью).

KRoN73 ★★★★★
()

Почитай про генерацию мира minecraft. На их вики написано.

Kor03d ★★
()

Более-менее что-то кроме шума выходило только если в рандомную систему врезать не рандомный алгоритм.

Теорию вероятностей не изучал? Иначе бы для тебя это был очевидный факт.

Хочешь получить рандомную фигуру вместо хаоса? Определи ряд параметров, которые могут случайно меняться, пределы их изменения и вид функции распределения. Например, для здания это может быть ширина (от 3 до 7 блоков, равномерно распределена), и длина (от 4 до 5 блоков, равномерно распределена) - а кубики, которые формируют здание, должны генериться конкретным алгоритмом на основе этих двух случайных параметров. Координаты здания также можно определять случайно, а можно искать достаточно ровную площадку на сгенерированной поверхности.

Хочешь, чтобы из кубиков формировалась поверхность? Случайным образом определяй высоту некоторой небольшой части точек, а все, лежащие между ними, вычисляй как среднее (чтобы получался плавный переход).

amomymous ★★★
()
Ответ на: комментарий от KRoN73

но суть такая же - есть некие общие правила, по которым генерируется массив.

anonymous_sapiens ★★★★★
()

Гиббс самплер. Дешево, тупо и сердито

Waterlaz ★★★★★
()

Если я правильно понял, то Вам нужно просто при генерации каждой «клетки» учитывать соседние «клетки» (можно рекурсивно). Например, если рассматривать генерацию игровой карты, рядом с водой не может быть пустыни.

alix ★★★★
()

То, что ты ищешь, называется procedural content generation.

http://roguebasin.roguelikedevelopment.org/index.php/Main_Page
http://www-cs-students.stanford.edu/~amitp/gameprog.html
http://roguelikedeveloper.blogspot.com/
http://pcg.wikidot.com/
http://simblob.blogspot.com/

хочу получить систему, которая из кубиков рандомно генерирует объекты, мир в целом

Поищи инфу на тему синтаксических методов. Грамматики, регулярные выражения, ну ты понял.

schizoid ★★★
()

Почитай исходники любого рогалика.

unfo ★★★★★
()
Ответ на: комментарий от dmfd

Стохастические фракталы нужны тебе.

Угу, вот думаю "Плазму" попробовать реализовать, вроде то что нужно. Хотя у меня не карта высот, но адаптировать можно.

makeB
() автор топика

Пробуйте копать не в сторону полного рандома, а в сторону рандомных коэффициентов для документированного алгоритма.

trex6 ★★★★★
()

(у него аватар еще результат рендра какой-то хрени)

Sadler

netcat ★★
()

С помощью наложения Perlin Marble, например, можно генерировать вполне неплохой ландшафт. Куча софта по этому поводу написана. Честно, разговора не помню =)

Sadler ★★★
()
Ответ на: комментарий от alix

Вроде как да. Ну для примера можно ещё Аральское море привести: вокруг сплошь пустыня.

unC0Rr ★★★★★
()
Ответ на: комментарий от Sadler

С помощью наложения Perlin Marble, например, можно генерировать вполне неплохой ландшафт. Куча софта по этому поводу написана.

Ну да, например «libnoise».

Честно, разговора не помню =)

Там тред за что был не помню, но с тобой мы начали за религию, точнее за «теорию» появления всего от пришельцев :] Я тогда сказал, мол в бога не верю, но и в энтропийность появления такой сложной и в то же время логичной системы тоже слабо верится. На что ты ответил, что кажущаяся логичность всего лишь порождения самой системы, а что было до большого взрыва не кто не знает, и упомянул какой то метод, то ли «CC», то ли еще что (не помню, кстати напиши если вспомнишь), смысл которого заключался в неких начальных ограничениях, а все остальное образуется рандомно, соблюдая ограничения, мол таким образом вполне можно получить что-то вроде логичной, самоорганизующейся системы. << Собственно тот твой ответ и побудил ко всем этим действиям.

makeB
() автор топика
Ответ на: комментарий от makeB

Хехе. Там есть одно важное условие — неограниченное время (или приближение к нему). Различные методы оптимизации так работают. Простейший пример — генетические алгоритмы.

Для наглядности можно посмотреть ещё игру «Жизнь». Генерируем случайное поле, подвергаем его воздействию правил — получаем некую развивающуюся систему.

Если применять это в играх, то основная сложность — найти такие правила, которые дадут гармоничный и понятный мир. Ну, и о количестве элементов забывать не стоит — оно у современных компьютеров сильно ограничено.

Sadler ★★★
()
Ответ на: комментарий от alix

очень похожую картину видел на ОАЭ. там тоже пустыня, переходящая в океан

loki_ ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.