2012-02-06 2 views
0

그래서 저는 Terraria과 같은 2D 샌드 박스 타일 기반 게임을 만드는 중입니다. 나는 이미 세계를 저장하는 방법에 난처한 It 그러나 그것 같이 거대한 세계를 생성하는 방법을 알고있다. 파일 크기를 작게 유지하기 위해 원시 바이트를 저장해야한다는 것을 알고 있습니다. 나는 각 타일에 자신의 바이트를 갖게하는 것에 대해 생각하고 있었지만 어떻게해야할지 모르겠다. 하나의 ASCII 문자가 하나의 바이트라는 것을 알고 있습니다. 왜 각 타일을 다른 ASCII 문자로 만들지 않습니까? 잔디는 'G', 먼지는 'D', 돌은 'S'와 같습니다. 그런 다음 각 문자를 파일에 저장하고 하루로 부를 수 있습니다. 나는이 방법이 괜찮은지 또는 더 좋은 것이 있는지 알지 못한다.최상의 저장 방법

그렇다면 이전 방법이 정상이라고 가정하면 .NET 문자와 바이트가 함께 잘 작동하는지 알아야합니다. 내가 의미하는 바는 잔디 글자의 'G'와 같은 간단한 ASCII 문자를 바이트로 변환하면 단일 바이트가 될 것인가 아니면 더 많을 것인가? 어쩌면. NET은 내가 모르는 바이트보다 큰 문자를 저장합니다.

결론 각각의 타일 유형을 파일로 저장하는 가장 좋은 방법은 무엇입니까? 이 세계는 거대 할 것이므로 파일이 작아야한다는 사실을 명심하십시오.

감사합니다.

답변

0

.NET 사양에 대해서는 도움이되지 않지만 문자를 사용하여 거대한 ASCII 문자열로 저장하는 경우 디스크에 저장되는 방법에 따라 달라집니다. 이렇게하면 싱글 바이트에서 사용중인 문자 코드로 변환하는 것이 더 간단해질 수 있습니다.

두 번째로 데이터를 청크해야하거나 오래된 비닐 레코드에서 트랙을 찾으려는 것처럼 특정 부분을로드하는 데 어려움이 있습니다.

개념에 관해서는 각 타일 유형에 정적 클래스를 사용해야합니다. 이 방법은 수천 개의 싱글 바이트 객체에 대한 클래스 관련 데이터를 복제하지 않습니다. 바이트 값은 모든 정적 객체를 포함하는 스택에 대한 참조입니다.

비밀스러운 비밀이라고 생각되면 그렇지 않습니다. 이것은 OO 프로그래밍에서 카드 덱을 구현하는 적절한 방법으로 간주됩니다. 카드에는 실제적으로 많은 사고 나 고유 한 속성이 포함되어 있지 않으므로 (위치 나 방향이있을 수 있지만 건물에있는 게임의 슬롯에 저장할 수 있음) 모든 게임의 모든 카드는 52 개의 카드 정적이고 모든 데크/테이블/스택 객체는 이러한 정적 객체에 대한 참조의 배열입니다.

희망이 있으면 개념과 행운을 빕니다!

관련 문제