2D 플랫폼 게임에 적합한 레벨 표현 / 데이터 구조?


9

Mario의 사본을 Java로 프로그래밍하려고합니다. 레벨에 대한 2 가지 표현 / 데이터 구조에 대해 생각하고 있지만 어느 것을 선택 해야할지 모르겠습니다.

  • 2D 정수 배열.
  • 레벨을 조각으로 나누는 쿼드 트리.

장점과 단점은 무엇입니까?

답변:


9

쿼드 트리의 요점은 많은 양의 데이터를 효율적으로 컬링하여 바로 인근에있는 데이터에만 시간을 보내도록하는 것입니다. 그러나 2D 배열은 이미 위치 별 랜덤 액세스를 제공하므로 쿼드 트리를 중복시킬 수있는 2D 게임의 경우입니다. 3D 게임에서는 배열을 사용하여 모든 것을 찾을 수 없으며 쿼드 트리 (또는 더 나은 옥트리)가 편리한 곳입니다.

이제 레벨의 기본 데이터 표현에 대해 이야기하겠습니다. 그래픽 아키텍처 설정 방법 (예 : 3D 엔진에서 평면으로 2D 그래픽 수행)에 따라 그래픽 컨텐츠를 효율적으로 컬링하기 위해 장면 그래프에서 쿼드 트리를 사용할 수 있습니다.

그리고 레벨에서 다양한 적과 다른 대화 형 개체를 잊지 마십시오. 아마도 2D 배열을 사용하여 레벨의 타일을 관리하지만 쿼드 트리를 사용하여 모든 대화식 요소 (예 : 물리 엔진)를 구성합니다.


이 방법으로 생각하십시오 : 레벨에서 무작위로 점을 선택한 다음, 해당 점의 1000 픽셀 반경 내의 모든 것을 파악하는 데 얼마나 많은 작업이 필요한지 생각해보십시오. 모든 것이 2D 배열의 위치별로 구성되어 있기 때문에 신속하게 수행 할 수 있다면 쿼드 트리가 필요하지 않습니다. 그러나 모든 것을 반복하고 각 객체의 거리를 개별적으로 확인 해야하는 경우 쿼드 트리를 사용하여 훨씬 효율적으로 검색 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.