게임 속 세상을 만들다 보면 물리 법칙을 적용하는 일이 참 어렵게 느껴집니다. 하지만 너무 걱정하지 마세요. 가장 기초가 되는 강체 동역학(Rigid Body Dynamics)부터 차근차근 살펴보면 됩니다.
이 개념은 게임 물리를 이해하는 첫 단추와 같습니다. 처음에는 낯선 용어 때문에 조금 막막할 수도 있습니다. 저와 함께 하나씩 풀어나가면 금방 익숙해질 겁니다.
변하지 않는 물체, 강체의 정의
먼저 강체(Rigid Body)가 무엇인지부터 확실히 짚고 넘어가겠습니다. 현실의 물체는 힘을 받으면 찌그러지거나 부서지기도 합니다. 하지만 게임 계산에서는 이를 모두 구현하기가 쉽지 않습니다.

그래서 프로그래머는 계산을 쉽게 하려고 특별한 가정을 합니다. 어떤 힘을 받아도 형태가 절대 변하지 않는 단단한 덩어리라고 약속하는 것이죠. 이것이 바로 강체입니다.
이렇게 가정하면 물리 엔진이 해야 할 일이 꽤 줄어듭니다. 물체가 어떻게 찌그러지는지는 고민할 필요가 없어지니까요. 오직 어디로, 얼마나 빠르게 움직이는지에만 집중하면 됩니다.
물체의 상태를 구성하는 네 가지 요소
강체 동역학에서는 물체의 상태(State)를 끊임없이 갱신해야 합니다. 여기서 상태란 물체가 어디에 있는지만을 뜻하지 않습니다. 조금 더 다양한 정보가 필요합니다.
물체가 공간 어디에 있는지를 나타내는 위치 정보가 우선 필요합니다. 그리고 얼마나 빠르게 이동하는지를 보여주는 속도도 있어야 하죠. 여기에 회전과 각속도까지 포함해야 완벽해집니다.
어떤 방향을 보고 있는지, 또 얼마나 빠르게 회전하는지를 다 알아야 합니다. 이 네 가지 요소가 모두 모여야 비로소 물체의 현재 상황을 정확히 설명할 수 있습니다.
힘이 속도를 만드는 과정
물리 엔진은 매 프레임마다 이 상태를 조금씩 바꿉니다. 그 순서는 생각보다 꽤 직관적입니다. 가장 먼저 물체에 작용하는 모든 힘을 모으는 작업부터 시작합니다.
중력처럼 늘 작용하는 힘도 있고, 충돌 때 생기는 순간적인 힘도 있습니다. 이렇게 모인 힘은 물체의 속도를 변화시키는 원인이 됩니다. 힘을 더해 속도를 구한다고 이해하면 됩니다.
보통 이를 두고 힘을 적분해 속도를 구한다고 표현합니다. 어려운 수학 용어 같지만 원리는 간단합니다. 힘이 가해지면 물체의 빠르기가 바뀐다는 뜻이니까요.
속도가 위치를 결정하는 원리
속도가 구해졌다면 이제 위치를 바꿀 차례입니다. 속도가 빠르면 한 프레임 동안 멀리 이동하게 됩니다. 반대로 속도가 느리면 아주 조금만 움직이겠죠.
이 과정 역시 속도를 적분해 위치를 구한다고 말합니다. 회전도 이와 똑같은 방식으로 처리됩니다. 회전하는 힘인 토크가 각속도를 바꾸고, 그 각속도가 회전 상태를 만듭니다.
물리 엔진은 이렇게 힘에서 속도로, 속도에서 위치로 이어지는 흐름을 반복합니다. 아주 빠르게 이 과정을 되풀이하면서 물체가 부드럽게 움직이는 것처럼 보여줍니다.
시간을 쪼개서 현실을 흉내 내기
여기서 꼭 기억해야 할 점이 하나 있습니다. 이 모든 계산은 시간을 아주 잘게 쪼개서 수행한다는 사실입니다. 현실은 시간이 연속적으로 흐르지만 게임은 그렇지 않습니다.
게임은 프레임이라는 단위로 시간을 끊어서 계산합니다. 이번 프레임에 힘이 작용해서 상태가 이렇게 변했다는 식으로 결과를 냅니다. 현실을 완벽히 재현하기보다는 그럴듯하게 흉내 내는 셈입니다.
프레임이 충분히 빠르면 사람의 눈에는 이 끊어짐이 보이지 않습니다. 플레이어는 그저 자연스럽게 물체가 움직인다고 느낄 뿐입니다. 이것이 게임 물리의 묘미입니다.
완벽함보다는 설득력이 중요합니다
강체 동역학의 목표는 모든 물리 현상을 100퍼센트 재현하는 것이 아닙니다. 게임 플레이에 지장이 없을 만큼만 설득력 있게 보여주면 충분합니다. 물체가 떨어지면 빨라지고, 밀면 밀리는 정도면 됩니다.
기본적인 규칙만 잘 지켜져도 플레이어는 그 공간을 믿게 됩니다. 물리적으로 말이 된다고 느끼는 것이죠. 강체 동역학은 겉으로 화려하게 드러나지는 않지만 게임을 지탱하는 든든한 뼈대입니다.