Я хочу створити абсолютно унікальний світ з біомами (як, наприклад, 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 як насіння), отримані випадкові числа однакові.
Як ви створюєте світ життя майнкрафт на основі випадкових чисел? Notch має пост про це. Також ви можете ознайомитись з навчальними посібниками інших людей про "світи, подібні до майнкрафт". Мені сподобалось це, наприклад: Візуалізація, схожа на Minecraft, у OpenGL 4 . Основна ідея - використовувати шум Перліна (або симплекс-шум). Ось гарне питання щодо шумових функцій: Розуміння шуму Perlin