Atualmente, estou escrevendo um pequeno scroller lateral em C #, para aprender C # e me divertir. No momento, tenho um gerador de números aleatórios simples gerando o mundo, mas não é exatamente tão bom - por isso, com algumas pesquisas, descobri que a geração de ruído Perlin pode me ajudar um pouco. O problema é que eu quero ter uma paisagem "interminável" composta de vários pedaços.
Basicamente, minhas perguntas / preocupações são:
- Usando minecraft como exemplo (Ignorando a 3ª dimensão), como o Notch está conseguindo que cada pedaço se conecte perfeitamente? Túneis, cavernas, veias de minério, montanhas, terrenos planos, biomas etc. estão todos conectados entre si, mesmo que cada pedaço seja gerado separadamente e, às vezes, muito mais tarde. Isso é fundamental para mim, quero que o jogador possa caminhar para a direita e, enquanto estiver caminhando, gere mais paisagem que se conecte à paisagem anterior, incluindo túneis subterrâneos e sistemas de cavernas.
- Partindo do ponto 1, como isso seria realizado sob a suposição de que cada pedaço é um quadrado e o mundo tem 10 quadrados de altura e infinitos quadrados de largura? Ou seja, cada "pedaço" tem 128 x 128 blocos e o mundo tem um total de 1.280 blocos. (Isso é para que eu possa fazer um mapa infinitamente profundo se eu escolher - e também mostrar que todos os quatro lados de um pedaço / quadrado precisam ser capazes de conectar e continuar o que o quadrado / pedaço anterior estava fazendo).
fonte
uma tabela de ruído é pré-computada para integrar lado a lado, como em qualquer outro mapa de textura uniforme. é por isso que você pode ir para o ponto X e será sempre o mesmo, muito importante nas animações para que as texturas não mudem de quadro para quadro.
há um tópico sobre isso em answers.unity3d.com (geração de nível de rolagem do lado do procedimento)
também, o livro de 1994 "modelagem processual e texturização" discute ruído e multi-fractais (ruído em camadas com diferentes frequências e rotações).
fonte