주의 : 이 글의 목적은 자기계발 용도와 게임에서 쓰이는 각종 그래픽옵션 관련 단어 (안티에일리어싱, 셰이더, 텍스쳐 품질등) 들이 처음 보는 사람에게는 굉장히 생소하고 어려워 보이기 때문에 해당 부분에 대한 이해를 쉽게 하기 위해 작성되었습니다.
주의 : 해당분야는 전문적인 분야이며 그리고 실시간 발전되는 기술입니다. 지금도 새로운 기술들이 나오고 있어 틀린 부분이 있을 수도 있습니다.
1. 히트스캔 과 레이캐스팅
오버워치, 콜오브듀티, 배틀그라운드, 엘더스크롤 시리즈 등등.. FPS 게임 뿐아니라 3D 오픈월드 게임에서 총을 쓰거나 활을 쓰다보면 문득 이런 총이나 화살은 어떤 기준으로 발사되는 걸까? 라고 한번쯤은 생각해보았을 것이다. 이번 글에서는 게임 안에서 총알이나, 무언가를 쏘면 날라가는 기술에 대해서 알아보자.
게임에서 총알이 작동하는 방식은 크게 2가지로 나눌 수 있는데 히트 스캔과, 발사체 방식이다. 히트 스캔은 레이 캐스팅(Ray Casting)에서 파생된 기술이다.
레이 캐스팅은 92년 5월에 출시된 울펜슈타인 3D에 사용된 이미지 기법으로 플레이어의 시점, 게임 속에서 가상으로 설정 된 카메라에서 수많은 광선(Ray)를 발사한다. 그러면 그 광선에 맞지 않는 물체는 보이지 않게 만들고 광선이 얼마나 멀리 나가 다른 물체를 맞췄나에 따라 물체의 크기를 조절하는 3D 정보를 2D화면에 그리는 기술중 하나이다.
여기서 히트 스캔은 수많은 광선을 발사하는 레이 캐스팅과 다르게 총에서 광선 한개만 발사한다. 총을 들고 있는 플레이어가 총을 발사버튼을 누르면 그 순간 총구가 향하는 방향으로 우리 눈에 보이지 않는 광선이 발사된다. 그리고 그 광선이 적에게 맞으면 총알이 적에게 명중하게 되는 것이고 그렇지 않으면 총알이 빗 맞은 것이다.
즉 우리가 게임속에서 총을 쏘면 총알이 몇백미터를 날라가 적을 맞추는게 아니라 마우스 클릭하는 그 순간에 무한의 속력으로 나가는 광선이 무조건 직진으로 나가 적이 맞았나 안맞았나 참, 거짓으로만 계산하기 때문에 실제로 총알이 가지는 속력과 중력을 계산하지는 못한다.
간단하게 모든 총이 레이저 총이라고 생각하면 편하다. 하지만 이런 방식은 연산량이 적고 게임상에서 구현하기도 쉽다. 그리고 여러 사람이 플레이 할 수 있는 멀티게임의 경우에 인터넷속도, 서버 성능에 크게 구애 받지 않을 수 있어 히트 스캔에 여러가지 속임수를 섞어 아직도 많이 쓰이고 있는 기술중에 하나이다.
총을 쏠 때 생기는 반동, 발사체가 날아가며 남기는 궤적, 총구 화염등 여러가지 이펙트, 그래픽 효과를 통해 실제 총알이 날아가는 듯한 느낌을 주고 마우스를 클릭하자마자 계산하는게 아닌 조금 시간을 두고 계산 하거나 발사 할 때마다 나가는 광선의 각도를 조절해 총알이 가지는 불확실성을 구현하기도 한다.
맵이 크지 않아 탄도학 계산이 크게 필요없는 콜오브듀티, 진입 장벽이 낮아 비교적 캐주얼한 오버워치, 하프라이프2를 포함한 비교적 옛날 게임들은 히트 스캔 방식을 주로 사용한다.
하지만 근본적으로 히스 스캔 방식이 가지는 한계 때문에 실제 총알이 작동하는 방식을 최대한 가깝게 구현한 '발사체' 방식이 등장한다.
2. 발사체
위에 히트 스캔이 가라로 만든 총알이 나가는 방식이라면 최대한 현실에 가깝게 구현한 기술이 발사체이다.
물론 실제 총알이 나가는 것처럼 탄창에 총알 넣고 장전하고, 약실에 총알 들어가서 폭약으로 사출되는 그런 내용 까지 구현한건 아니지만 단번에 일직선으로 나가는 히트 스캔과 달리 탄속을 가지고 있어 실제 총알처럼 적을 맞추기까지 시간이 걸린다거나 중력과 같은 변수로 탄의 궤적이 달라지는 방식이 등장한 것이다.
사실 하프라이프2나 옛날 게임들도 히트 스캔 방식만 사용한 것이 아니라 제한적으로 발사체 방식도 같이 사용했다.
총알이 기본총은 히트 스캔 방식, 유탄은 발사체 방식, 1초에 수십발이 나가는 총은 계산이 간단해야 하니 히트 스캔 방식으로, 한판 하면서 몇번 쓸까 말까한 총기의 경우는 발사체 방식으로 구현되었다. 현재 2022년에 들어서는 컴퓨터 하드웨어 성능이 비약적으로 발전 했고 인터넷 속도도 빨라짐에 따라 기본 총기도 발사체 방식을 사용하는 게임들이 등장하게 된다.
배틀필드 시리즈 같은 경우 플레이해본 유저라면 알겠지만 정말 많은 요소가 게임 안에서 작용한다. 첫번째로 탄속이 존재해 멀리 있는 적이나 탄속이 느린 총기는 적 위치를 예상하고 쏘는 예측샷을 필요로하고 중력 가속도도 있어 멀리있는 적을 저격하려면 더 높이 조준을 해야하며 항력도 있어 서서히 느려지는 총알과 그에 맞춰 빨리 낙하하는 총알 때문에 장거리 저격이 상당히 힘들다.
진짜 저격수가 될 수 있는 게임으로 유명한 스나이퍼 엘리트 시리즈의 경우에는 항력은 없지만 바람 방향과 속도에 따라 탄도가 결정되기 때문에 탄낙차 계산은 물론 시시각각 달라지는 바람에 따라 자신의 조준 위치를 상황에 맞게 변경해줘야 한다.
마지막으로 매우 현실적으로 유명한 아르마3는 바람요소는 작용하진 않지만 탄 종류에 따라 달라지는 에너지양을 모두 계산해 특정한 물체를 관통 할 수 있나, 없나를 판단하고 만약에 관통한다면 관통 후 에너지양 총 5번이 넘는 관통 계산 입사각, 에너지양에 따라 달라지는 도탄 시스템등 엄청나게 정교한 발사체 모델을 가지고 있다.
모드를 따로 설치할 경우 바람은 물론 기압, 온도, 습도에 따라 달라지는 항력 지구 자전으로 생기는 관성력이 코리올리 효과 총알이 회전하며 생기는 힘 마그누스 효과까지 모두 계산까지 할 수 있다고 한다.
이렇게 게임 마다 총알, 화살등 구현하는 방식은 다 다르지만 레이저 처럼 총알이 나가는 히트 스캔 방식은 총알을 구현하는 방법 이외에도 다양하게 사용한다. 적 AI가 나한테 광선을 쏘고 내가 맞으면 적이 나를 발견 했다고 판단해서 교전이 들어오거나(암살 관련 게임을 해보신 분들이라면 누구나 알 것이다) 광선 길이를 제한해 특정 고도에 들어가면 낙하산을 펼친 다거나 등
게임 속 여러가지 기능에 히트스캔 방식이 쓰이는 경우가 많다.
'게임 > 알고 싶다' 카테고리의 다른 글
GPU의 렌더링 파이프라인이란? 2편 (0) | 2023.01.08 |
---|---|
GPU의 렌더링 파이프라인이란? (0) | 2023.01.08 |
비등방성필터링이란? (0) | 2022.12.19 |
HDR이란? (2) | 2022.12.18 |
포스트프로세싱이란? (0) | 2022.12.18 |
댓글