2D 하향식지도 : 정규화 여부


11

나는 게임 프로그래밍의 절대 초보자입니다.이 질문이 제대로 작성되지 않았을 때, 내 편이 허풍이 아니라 게임 프로그래밍 경험이 부족하다는 것을 알고 있습니다.

코딩하려는 게임은 하향식 2D 맵을 "월드"로 사용합니다. 세계는 창보다 클 수 있으며 (창 확대 또는 축소 가능) 차량은 세계 어느 지점 에나 위치 할 수 있습니다 (= 타일 맵이 아니며 공간이 "연속적"임).

예를 들어, 세계가 1000x1000 미터의 지형 인 경우 차량은 위치 (327.31, 720.4) 미터에있을 수 있습니다.

내 질문은 : 세상을 내부적으로 표현하는 가장 편리한 방법은 무엇입니까? 나는 이러한 가능성을 생각할 수 있었다.

  • 마치 물리적 물체로 작업하는 것처럼 아무것도하지 않고 미터사용 하십시오.
  • 최대 줌에서 1000 미터를 나타내는 픽셀 수로 월드 크기를 정의하는 픽셀로 정규화합니다 .
  • 단어 를 1 의 제곱으로 정의하여 1로 정규화

...하지만 다른 것들이있을 수 있습니다 / 일부는 이해가되지 않습니다. 그것은 단지 첫 번째 게임이기 때문에 나보다 앞서 문제에 대한 명확한 그림을 가지고 있지 않으며 합리적으로 올바른 초기 선택을하는 데 도움이되는 지침을 원합니다.

시간 내 주셔서 감사합니다.


나는이 문제가 있었다. 나는 답변으로 게시하지 않을 것입니다-이미 훌륭한 것들이 있습니다. 그러나 임의의 단위로 작업하는 경우 단일 값을 조정하여 모든 해상도를 지원할 수 있습니다. 게임 플레이 측면에서 다루기가 훨씬 쉽습니다. 마지막으로, 픽셀 측정과 같은 많은 수의 물리 시뮬레이션은 폭발 할 수 있습니다.
공산주의 오리

답변:


10

거리의 기준으로 실제 값 (미터, 피트 등)을 사용하는 데 동의합니다. 다른 두 가지 제안의 문제는 둘 다 변수라는 것입니다. 월드 크기로 작업 1하면 모든 산술이 -1과 1 사이의 부동 소수점이되어 부동 소수점 오류가 더 커질 수 있습니다. 또한 가변 월드 크기 (더 긴 게임 등을위한 "큰"월드 등)를 만들기로 결정한 경우 코드에 많은 문제가 발생합니다. 마찬가지로, 최대 / 최소 줌 레벨에서도 픽셀을 사용하는 경우 줌 레벨을 높이거나 낮추기로 결정한 경우 문제가 발생할뿐만 아니라 혼동 될 수 있습니다.


이 답변은 우수합니다 (+1). 나는 세계의 크기에 "1"을 사용할 때 발생할 수있는 잠재적 문제를 어떻게 설명했는지 특히 마음에 듭니다.
Randolf Richardson

어떤 종류의 물리 시뮬레이션을 수행하는 경우, 완전히 구성 되더라도 고정 소수점 정수를 사용하면 잘못된 결과가 발생합니다. 대각선으로 단위 속도로 움직이는 단일 차량을 모델링하기 만하면 위치를 제대로 표현할 방법이 없습니다.
edA-qa mort-ora-y

3
합의 된 RE : 미터 사용. 또한 사물을 정신적으로 시각화하고 이해하는 데 도움이 될 것입니다. "그 차량의 길이는 5 미터"또는 "이 두 물체의 거리는 500 미터"입니다. 그리고 당신이하고있는 일에 대한 느낌을 얻기 위해 항상 정신 수학을 할 필요는 없습니다.
팀 홀트

-1 정수 산술이 부동 소수점보다 빠르다는 표현은 일반적으로 사실이 아니며 실제로 대부분의 최신 플랫폼에서 훨씬 빠릅니다.
Maik Semder

2
절대 위치에 여전히 고정 소수점 값을 사용하는 것이 좋습니다. 이것은 전 세계에 걸쳐 일정한 정밀도와 동일한 물리학으로 이어집니다.
코드 InChaos

7

제안한 세 가지 옵션 중에서 미터를 사용하는 것이 가장 좋습니다. 다른 데이터를 만들 때 길이를 미터 단위로 처리하면 훨씬 쉽게 생활 할 수 있습니다. 다른 이유로, 당신은 당신의 세계 크기를 변경하기로 결정하거나 다른 레벨은 다른 크기의지도가 필요할 수 있습니다.

발 (또는 인치)을 사용하기로 결정할 수도 있습니다. 이 결정의 일부는 사용하는 미들웨어 패키지에 따라 달라질 수 있습니다. 일부 물리 엔진은 하나의 장치 유형을 선호합니다 (거의 항상 구성 가능하지만). 대부분의 경우 단위를 선택하고 함께 갈 수 있습니다.


5

'1'로 정규화하는 것은 실제로 갈 길이 아닙니다 (세계가 정사각형이 아닌 경우 또는 크기가 다른 여러 세계 ...).

픽셀 사용 ... 절대로 게임 플레이와 그래픽 측정을 혼합하지 마십시오! 코드를 변경하지 않고 그래픽을 변경할 수 없도록 잠그지 마십시오.

따라서 미터 (피트 또는 가장 좋아하는 측정)가 좋습니다. 미사일 발사기를 0.00076 유닛 / 초보다 50km / h로 이동하도록 코딩하는 것이 훨씬 나을 것입니다 ...

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