문제점 : 맵 클래스의 타일 데이터를 저장하려고합니다. 나는 레이어마다 팔레트를 사용한다는 아이디어를 가지고 있었고, 팔레트는 레이어의 데이터를 기술 할 것이고, 타일의 각 바이트가 타일 타입을 나타내는 바이트의 배열이 될 것이다.레이어 다중 레이어 당 1 억 개 이상의 타일에 타일 데이터 저장
이것은 1 억 개의 타일로 구성된 레이어가 ~ 96mb와 같음을 의미합니다. 그러나 나는 얼마나 많은 데이터를 실제로 byte에 저장할 수 있는지를 간과하였고, 물론 256 개의 타일만을 저장할 수 있음이 드러났습니다. 결과적으로 256 * 타일 크기 텍스처 크기의 제곱근을 산출합니다 (이 경우 타일 크기는 256입니다). 256 * 256 텍스처 크기는 각 팔레트가 하나의 텍스처 만 가질 수 있기 때문에 너무 작습니다. 심각하게 레이어에서 가질 수있는 타일을 제한합니다.
저는 타일 데이터를 저장하기 위해 1 바이트 대신 2 바이트 (짧은 코드)를 사용하는 것처럼 바인딩에 걸렸습니다. 메모리 사용량을 두 배로하여 레이어 당 ~ 192MB로 두 배가됩니다. 최소 4 개의 레이어가 필요합니다. 최종 제품을 768MB의 램 사용으로 팽창 시켰습니다. 또한 각 바이트의 배열 오프셋 또한 위치의 설명이기 때문에 데이터의 데이터를 설명 할 수 없습니다.
이 데이터를보다 효율적으로 저장할 수있는 방법이 있습니다. 최악의 시나리오는이 모든 것을 디스크에 저장하고 디스크에서 메모리로 버퍼링하는 것입니다. 하지만 나는 그것을 기억에 남기를 원할 것이다.
나는 몇 시간 만에 뭔가 똑똑해 보일 수 있다고 생각하지만,이 문제를 해결하는 데 익숙하지 않은 일반적인 방법이 있는지 확인해야한다고 생각했습니다.
이것은 당신의 지갑으로 해결할 수있는 문제의 일종입니다. 더 많은 RAM을 구입하십시오.;) – carlpett
나는 어린 시절의 학교에서 1GB RAM을 요구하는 게임을 생각하고 있다고 생각한다. 여전히 나는 대안을 좋아할 것이다. – user936509
나는 일종의 농담이었습니다. 1 억 개의 타일이 모두 동시에 표시됩니까? 그렇지 않으면, 보이는 부분을 메모리에 유지하고 필요할 때 다른 부분을로드하려고 할 수 있습니다. 또한 모든 직책에 항상 데이터가 포함되어 있습니까? 그렇지 않으면 스파 스 구조를 만드는 방법을 살펴보십시오. – carlpett