무한 레벨의 절차 적 생성 방법은 그리드 기반 반경을 사용하는

무한 2D 레벨을 절차 적으로 생성하는 좋은 방법은 무엇입니까? 레벨은 어느 차원에서나 제한 될 수 있지만 반드시 그런 것은 아닙니다.

지금까지 내게 가장 적합한 방법은 그리드 기반 반경을 사용하는 것입니다. 예를 들어, 플레이 영역을 특정 크기의 사각형이있는 격자로 나누고 플레이어 주위의 반경에 X 사각형을로드하십시오. 그런 다음 플레이어가 다른 정사각형으로 이동하면 다음 세트를 만들고 더 멀리 떨어 뜨립니다. (탐색 영역을 유지할 필요는 없습니다.) 정사각형을 만들면 임의의 개체 배열이 포함됩니다. 물체가 사각형의 바깥 고리를 벗어나면 세상에서 제거됩니다. 더 나은 또는 다른 방법이 있습니까? 또는 이것이 좋은 접근 방법이라면 잠재적 인 문제는 무엇입니까?

토론을 위해 레벨을 파워 업 등이있는 하향식 소행성 필드로 생각할 수 있습니다.



답변

“무한”세계의 문제점은 기본 좌표가 무한하지 않을 수 있다는 것입니다. 예를 들어 정수 랩에 도달하는 시간이 너무 길어서 도달 할 수없는 경우가 있기 때문에 게임이 플레이어의 속도를 충분히 느리게하는 경우 문제가되지 않을 수 있습니다. 그러나 속도의 높은 차이를 허용하는 경우 좌표에 대해 생각해야하는 매우 정밀하고 멀리 도달해야 할 수도 있습니다. 합리적인 수정은 격자의 정수 좌표와 각 격자 참조의 부동 좌표와 같은 두 가지 수준을 갖는 것입니다.

따로, 그리드 좌표를 시드로 사용하여 주어진 사각형에 임의의 세계를 만들면 세계의 레이아웃을 올바르게 유지할 수 있습니다. 따라서 플레이어가 해당 지역을 떠날 때 떨어 뜨릴 수 있으며 플레이어가 돌아 오면 시드에서 다시 생성 할 수 있습니다.


답변