ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION614 / 1500
게임 서버난이도 하5분 답변 목표 · 보강본

격자 맵에서 목적지 칸은 비어 있지만 양옆에 벽이 있습니다. 캐릭터가 대각선으로 그 모서리를 지나가도 되나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

목적지 셀이 비어 있다는 사실만으로 대각 이동을 허용하면 안 됩니다. 출발 셀과 목적 셀 사이의 두 직교 셀이 벽인 경우, 중심점만 이동하는 격자 경로는 통과해 보이지만 크기가 있는 캐릭터의 몸체가 두 벽이 만나는 모서리를 관통할 수 있습니다. 이것은 경로 탐색 알고리즘의 문제가 먼저가 아니라, 대각 이동이 어떤 공간을 통과할 수 있는지에 대한 모서리 통과 규칙(corner-cutting rule)의 문제입니다.

이동 규칙을 명시하기

다음과 같은 맵을 생각할 수 있습니다.

S #
# G

S와 G는 비어 있지만 두 벽이 모서리에서 맞닿아 있습니다. 서버가 대각 이동을 허용하려면 양옆의 직교 셀을 모두 비워야 하는지, 하나만 비어도 되는지, 대각 이동을 전부 금지할지를 정해야 합니다. 실제 캐릭터 반경이 셀 크기보다 작아도 벽의 모서리와 충분한 간격이 있는지 확인해야 하므로 “양옆 셀 중 하나가 비면 된다”는 규칙을 모든 크기에 재사용할 수는 없습니다. 캐릭터 중심의 이동 경로를 찾기 전에 장애물을 반경만큼 팽창시키는 구성 공간의 장애물 팽창(configuration-space obstacle inflation)을 적용하면, 크기 있는 물체를 점의 경로 문제로 바꿀 수 있습니다. 대각선 비용을 직교 비용과 다르게 두었다면 휴리스틱과 경로 가지치기도 그 규칙을 반영해야 합니다. 한쪽에서는 모서리 통과를 막고 다른 쪽에서는 허용하면 A*·JPS가 계산한 경로와 실제 충돌 검사가 달라집니다. 캐릭터마다 반경·높이·경사 이동 능력이 다르면 동일한 walkable 비트맵 대신 에이전트 유형별 팽창 결과나 clearance를 사용하겠습니다.

경계와 검증

부동소수점 위치를 셀로 변환할 때 경계에 정확히 걸린 점을 어느 셀로 넣는지, 음수 좌표의 반올림을 어떻게 하는지 고정해야 합니다. 대각 이동 후보를 만들 때는 두 직교 셀의 물리적 점유와 동적 점유를 함께 보고, 최종 이동 직전에는 중심선뿐 아니라 캐릭터 footprint가 벽과 겹치지 않는지 검사합니다. 화면이 지나갈 수 있게 그려졌더라도 서버가 거절할 수 있으므로 클라이언트와 서버의 예측 규칙·팽창 반경·지형 버전을 맞추거나 서버 결과에 따라 보정합니다. 테스트는 두 벽의 모서리, 한 칸 통로, 서로 다른 캐릭터 반경, 대각선 경계 출발, 동적 문, 음수 좌표를 포함합니다. 기대 결과는 단지 목적지에 도착하는 것이 아니라, 이동 중 어느 순간에도 footprint가 벽과 겹치지 않고 A*·JPS의 최적성 전제가 같은 규칙을 사용하는 것입니다. 빈 목적지와 실제 통과 가능 공간(traversable space)을 구분해야 합니다.

대각 이동 검사는 중심이 셀 중앙에서 중앙으로 간다는 모델을 벗어나면 더 명확해집니다. 캐릭터 footprint를 이동 방향으로 쓸어 양옆 벽의 팽창 영역과 겹치는지 검사하고, 셀보다 작은 반경이라도 모서리에서 두 팽창 영역이 만나는 경우를 차단합니다. 큰 캐릭터가 여러 셀을 차지하면 목적지 하나가 아니라 전체 점유 집합과 중간 경로를 확인해야 합니다. 모서리 접촉을 허용할지 금지할지는 충돌 엔진의 등호 처리와 맞아야 합니다. 한 시스템은 경계 접촉을 충돌로 보고 다른 시스템은 통과로 보면 반복 이동 때 결과가 달라집니다. 셀 좌표와 월드 좌표 변환, 동적 점유 스냅샷, 클라이언트 예측을 같은 테스트 벡터로 검증하겠습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 빈 목적지와 크기 있는 캐릭터의 실제 통과 가능성을 구분한다.
  • 양옆 셀 규칙·장애물 팽창·에이전트 반경을 명시한다.
  • 휴리스틱·JPS·클라이언트 표시가 같은 이동 규칙을 전제하도록 한다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 목적지 셀이 비면 대각 이동은 항상 가능하다고 말한다.
  • 캐릭터 크기와 모서리 충돌을 중심점 경로로 대체한다.
  • 이동 규칙을 바꾸고도 탐색 최적화의 전제를 재검증하지 않는다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기