플레이어를 따라가는 그래프를 무한한 세계에서 구현하는 방법을 보여주는 예시 장면

 

 

 

 

 

Contents

Graph setup

 

이 예시에서는 플레이어를 따라가는 작은 그리드 그래프를 사용합니다. 무한한 세계에서는 전체 그래프를 한 번에 생성할 수 없으므로, 플레이어 주변의 그래프만 생성하고 플레이어가 이동할 때 이를 함께 이동시킵니다.

우리는 그래프가 세계의 장애물을 표현할 수 있을 만큼 충분한 해상도를 가지도록 하고, 플레이어 주변의 적당한 크기를 덮을 수 있도록 합니다. 작은 그래프는 이동 시 오버헤드가 적지만, 플레이어가 큰 장애물을 계획하여 피하는 경로를 설정하기 어렵게 만듭니다.

참조:
자세한 내용은 " Large worlds" 튜토리얼에서 읽어볼 수 있습니다.
참고:
장면의 성능을 테스트할 때, 그래프 시각화를 숨기는 것이 좋습니다. 그래프 시각화를 업데이트하는 것이 그래프 자체를 업데이트하는 것보다 훨씬 느릴 수 있기 때문입니다.

 

Procedural world generation

ProceduralWorld GameObject는 세계 생성 구성을 포함하고 있습니다. ProceduralWorld 컴포넌트는 단순한 perlin noise 기반 스크립트로, 이를 사용하여 세계에 나무, 덤불, 바위 등을 무작위로 배치합니다. 플레이어가 이동하면 플레이어 뒤에 있는 오래된 객체를 제거하고, 플레이어 앞에 새로운 객체를 추가합니다.

간단히 말해, 이 스크립트는 타일의 그리드를 생성하고, 각 타일 내에서 Perlin 노이즈 밀도를 기반으로 여러 객체를 생성합니다. Perlin 노이즈는 객체 수의 변동을 부드럽게 하기 위해 확대하거나, 더 불규칙한 변동을 위해 축소할 수 있습니다.

이러한 노이즈 기반 세계 생성 알고리즘은 많은 게임(예: Minecraft)에서 지형 및 기타 객체를 생성하는 데 사용됩니다. 실제 게임에서는 종종 훨씬 더 복잡하고, 동굴, 강, 생태계 등 더 많은 기능을 가지고 있습니다.

'유니티 에셋 > A* Pathfinding project pro' 카테고리의 다른 글

Path Types  (0) 2024.05.23
Lightweight Local Avoidance Simulation  (0) 2024.05.23
Recast graph with off-mesh links  (0) 2024.05.23
Recast graph in a 2D game  (0) 2024.05.22
Recast graph on a terrain  (0) 2024.05.22

+ Recent posts