2012-10-21 6 views
0

게임의 2 차원 레이아웃 (경로를 걷는 방법)을 만드는 방법에 대한 아이디어가 있습니다. 타일은 32x32 픽셀뿐 아니라 타일에서 이동하는 문자가됩니다.실버 게임 맵을 만드는 가장 좋은 방법

저는 현재 두 가지 방법을 생각해 봤지만 아직 시도하지 않았습니다.

게임은 약 400x300 또는 512x356 크기의 창에 표시됩니다. 게임지도 자체가 1000x1000보다 클 수있는 것보다 훨씬 크지 않습니다. 따라서지도의 일부만 대부분의 시간에 표시됩니다.

그래서 지금까지 2 가지 옵션을 생각했습니다.

[1] : 시작시 전체지도 만들기 (로딩 시간을 증가시킬 수 있지만 더 쉽게 주변의지도를 이동하는 것) 등 각 개체, 플레이어, 적 등

포함

[2] : 볼 수있는지도와 하나의 타일 만 표시되도록 (보이지 않음) 스토리 보드로 표시하고 범위를 벗어나는 행/열을 제거하고 다시 열을 만들 수 있습니다. .

즉, 5x5 타일 공간이 있으면 7x7 타일을로드합니다. 오른쪽으로 이동하면 모든 타일을 왼쪽으로 옮기고 플레이어를 화면 중앙에 유지합니다. 그런 다음 맨 왼쪽 세트의 타일을 제거하고 오른쪽에 타일 세트를 새로 만듭니다. 스토리 보드가 이동하기 전에 잘 수행 될 것입니다.

두 번째 방법에서 고려해야 할 모든 것은 32x32보다 큰 개체입니다. 어떻게 대응할 수 있을까요?. 그러나 이것은 나중에 다루고 싶은 문제입니다. 지금은 사람들의 의견과 가능한 더 나은 방법을 선호합니다.

이 질문이 없으면 apoligize합니까, stackoverflow에 적합하지 않습니다.

답변

0

"로드"단어에주의하십시오. Loading은 디스크/드라이브에서 데이터를 가져 와서 메모리에 저장하는 것을 의미합니다. 이를 위해서는 게임을 시작하기 전에 현재 세계 /지도를 모두로드해야합니다. 당신이 맵이 돌아가고있는 동안 동적 로딩 작업을하고 싶지는 않습니다.

지도의 정의 만로드하면되므로 해당 지점에서 개체의 인스턴스를 만들 필요가 없습니다. 그래서 플레이어가 걸어 감에 따라 맵 정의에서 인스턴스를 생성 할 수 있지만 실제로 메모리에서 그 제약은 무엇입니까? Map이 거의 수백만 개의 타일을 포함하고있는 Minecraft 또는 Terraria와 같은 게임의 경우 이해할 수 있습니다. 그러나 32x32의 경우 정의를로드 할 때 모든 것을 고려할 수 있습니다.

물론 솔루션에 관계없이 화면에 표시되는 타일 만 그리기/계산/충돌/업데이트해야합니다.

+0

물론 내가 멘토하는 것은 그래픽을 플레이어에게 렌더링하는 가장 좋은 방법입니다. 사전에 모든 타일을로드해야합니까? 그렇지 않으면 각 이동 후에로드해야합니까? 캔바스 나 래퍼 넬을 사용해야합니까? 그림 상자 나 격자를 사용해야합니까? –

+0

내가 말했듯이 "로드"는 디스크에서 데이터를 가져 와서 메모리에 저장하는 것을 의미합니다. 왜 플레이어가 움직이면서 디스크에서 물건을 "로드"할까요? 주위를 걸을 때 타일의 인스턴스를 "생성"하시겠습니까? 내가 말한 것처럼, 32x32의 경우, 그것은 아마도 과도한 것이다. – LightStriker

+0

기본적으로 타일을 만들고 게임 시작시 디스크에서 그림을로드하고 캔버스/그림 상자/내 보트를 뜨는 모든 것을 보여 주어야합니다 ... 한 맵에서 다른 맵으로 이동하면 시간이 없어야합니다. 다른지도를 완성 하시겠습니까? –

관련 문제