Я хочу создать совершенно уникальный мир с биомами (например, что делают Minecraft и подобные игры). Я не понимаю, как они генерируют эти целые миры из одного «начального» числа. Может ли кто-нибудь дать базовый обзор техники?
Я хочу создать совершенно уникальный мир с биомами (например, что делают Minecraft и подобные игры). Я не понимаю, как они генерируют эти целые миры из одного «начального» числа. Может ли кто-нибудь дать базовый обзор техники?
Ответы:
Как вы генерируете случайный X из начального числа? начальное значение - это начальное состояние генератора случайных чисел. В большинстве языков программирования вы можете установить это начальное значение. Например, C использует srand()
. Если вы не указываете конкретное начальное число для начала, обычно в качестве начального значения используется значение метки времени. Таким образом, каждый раз, когда вы запускаете, случайные числа разные.
// C example
srand(1);
for(i=0; i<3; i++)
printf("%d\n", rand());
srand(1);
for(i=0; i<3; i++)
printf("%d\n", rand());
1270216262
1085377743
1481765933
1270216262
1085377743
1481765933
Как вы можете видеть, всякий раз, когда вы начинаете с определенного значения (я использовал 1 в качестве начального числа), результирующие случайные числа будут одинаковыми.
Как вы создаете мир Minecraft-Life, основанный на случайных числах? У Notch есть пост об этом. Кроме того, вы можете проверить учебники других людей о "мирах, похожих на майнкрафт". Мне понравился этот, например: Minecraft-подобный рендеринг в OpenGL 4 . Основная идея состоит в том, чтобы использовать шум Перлина (или симплексный шум). Вот хороший вопрос о шумовых функциях: Понимание Perlin Noise