2d 타일 기반 게임을 Java로 만들고 있는데, 세계에 항목을 저장하는 가장 좋은 방법은 무엇인지 궁금합니다. 과거에는 항상 같은 크기의 배열을 사용했지만 실제로 큰 세계를 만들고 싶습니다. 사실 이것은 나쁜 생각 일 것입니다. 그래서 나는 최선의 방법이 무엇인지 궁금해하고 있었다.2 차원 타일 기반 게임의 항목
답변
타일 유형을 정의하면 예 : int으로 표시 할 수 있습니다. 항목이 있는지 여부를 나타내는 데 한 비트 사용할 수 있습니다. List에 저장하는 항목 자체를 x 좌표로 정렬합니다 (x 좌표가 동일한 경우 y 좌표를 두 번째 정렬 속성으로 사용하는 것보다).
(매우 빠른 타일에 항목이있는 경우에 당신이 감지 할 수있는이 방법 O (1)와하는 항목이있는 경우 List<Item>
에서 검색보다 단지. 목록에 먼저 (이진 검색을 사용할 수 있습니다 x 좌표와 관련된 모든 항목의 하위 목록에서 원하는 Y 좌표에 대한 이진 검색을 사용하십시오. O (log (n)) [n = 항목 수]
메모리를 절약하려면 타일을 지정하는 요소 데이터 형식 (예 : int
)을 사용하고 세계를 int[][]
에 저장하는 것이 좋습니다.
(x, y) 좌표와 함께 항목 목록은 실제로 거대한 세계에서도 잘 작동합니다.
배열의 99 %가 null로 설정되었다고하더라도, 전체 메모리가 차지하는 것처럼 많은 메모리를 차지하므로 나는 효율적으로 무엇인가를 원했다. – user2103959
목록을 저장하려면 java.util 예에서 컨테이너 중 하나를 사용한다. java.util.ArrayList 또는 java.util.List – uba
java.util.List 또는 java.util.Map 어떤 것을보고 싶은지에 따라 달라짐 – MadProgrammer