게임 · 중급
빠르게 움직이는 총알이 얇은 벽을 그냥 통과해 버리는 문제가 보고됐습니다. 왜 이런 현상이 생기는지와 어떤 해결책들이 있는지 설명해 주세요.
힌트 · 이산 시뮬레이션에서 한 스텝 이동량이 충돌체 두께보다 클 때 발생하는 문제로 설명하고, CCD·서브스텝·레이캐스트 방식의 비용 차이를 비교하세요.
터널링이산 충돌 검출연속 충돌 검출(CCD)물리 스텝스윕/레이캐스트
모범답안
터널링 현상입니다. 물리는 고정 스텝마다 위치를 이산적으로 갱신하고 그 시점에서만 겹침을 검사하는데, 한 스텝 이동 거리가 벽 두께보다 크면 이전 프레임은 벽 앞, 다음 프레임은 벽 뒤에 있어 겹치는 순간이 아예 샘플링되지 않습니다. 해결은 세 방향입니다. 해당 오브젝트만 연속 충돌 검출을 켜서 이동 경로를 스윕 검사하거나, 물리 스텝을 줄이거나 서브스텝을 늘리고, 벽 콜라이더를 충분히 두껍게 만듭니다. 총알처럼 아주 빠른 것은 물리 이동 대신 이전 위치에서 현재 위치까지 레이캐스트로 판정하는 편이 비용도 싸고 안정적입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 게임 개발 면접 질문
- 물리 엔진에서 리지드바디와 트리거(콜라이더의 트리거 모드)의 차이는 무엇인가요?
- 프레임이 목표치에 못 미칠 때 CPU 바운드인지 GPU 바운드인지 어떤 방법으로 구분하시겠어요? 판단 근거와 각 경우의 대응 방향을 함께 말씀해 주세요.
- 반투명 이펙트와 UI를 화면에 많이 겹쳐 놓았더니 특히 모바일에서 프레임이 크게 떨어졌습니다. 오버드로우와 알파 블렌딩 관점에서 원인과 대응을 설명해 주세요.
- 수천 개 오브젝트가 서로 근접 판정을 해야 하는 상황에서 공간 분할을 도입한다면, 균일 그리드와 쿼드트리·옥트리 중 무엇을 어떤 기준으로 선택하시겠어요?
- 위치 보간에는 Lerp를, 회전 보간에는 Slerp를 쓰라는 이야기를 하는데 그 이유가 무엇인지 설명해 주시고, 매 프레임 Lerp를 호출해 목표값을 따라가게 만드는 코드의 주의점도 말씀해 주세요.
- 실내 스테이지의 조명을 구성할 때 라이트맵을 구워 쓰는 방식과 실시간 조명을 쓰는 방식의 트레이드오프를 설명해 주세요. 동적으로 움직이는 캐릭터는 어떻게 처리하나요?