1. 개요[편집]
| Havok 하복 | |
|---|---|
| 개발 | Havok (아일랜드 더블린) → Microsoft |
| 설립 | 1998년 |
| 분야 | 물리 엔진, 게임 미들웨어 |
| 구성 | Physics, Cloth, Destruction, Animation, AI |
| 대표 채용작 | Half-Life 2, Halo 3, The Elder Scrolls V: Skyrim, 젤다의 전설 브레스 오브 더 와일드 |
| 경쟁 제품 | PhysX, Bullet |
Havok은 아일랜드 더블린에서 출발한 상용 물리 엔진 미들웨어이자 그것을 만든 회사의 이름으로, 게임 업계에서 강체 동역학 미들웨어의 대명사로 통한다. 600종이 넘는 상용 게임에 탑재되었고, 콘솔 세대가 두어 번 갈리는 동안에도 계속 살아남았다.
이 바닥에서 Havok의 위상을 이해하는 가장 빠른 길은 “무료가 아닌데도 다들 샀다”는 사실이다. PhysX가 SDK를 공짜로 풀고 Bullet이 오픈소스로 나온 뒤에도, AAA 스튜디오들은 여전히 돈을 내고 Havok을 썼다. 이유는 대체로 하나로 수렴한다 — 결정론적이고, 콘솔에서 예산 안에서 돌고, 안 터진다.1
2. 역사[편집]
- 1998년 — 트리니티 칼리지 더블린의 연구 성과를 기반으로 휴 레이놀즈(Hugh Reynolds)와 스티븐 콜린스(Steven Collins)가 Havok을 창업한다.
- 2000년 — 첫 상용 SDK 출시. 실시간 강체 동역학을 게임에 넣겠다는 발상 자체가 아직 사치스럽던 시절이다.
- 2004년 — Half-Life 2가 Havok을 얹고 출시된다. 중력건으로 나무상자를 집어 던지는 그 경험이 “물리 엔진”이라는 단어를 대중에게 각인시켰고, 게임 물리는 이때부터 장식이 아니라 게임플레이가 된다.
- 2007년 — Intel이 Havok을 인수. 같은 시기 NVIDIA는 PhysX를 만든 Ageia를 인수하며 GPU 물리 대리전이 벌어진다.
- 2015년 — Microsoft가 Intel로부터 Havok을 인수. Xbox·Windows 진영의 자산이 되었지만, 멀티플랫폼 라이선스 사업은 그대로 유지된다.
- 2018년 이후 — Unity와 협력해 Havok Physics for Unity를 내놓는다. Unity의 DOTS/ECS 위에서 도는 버전으로, C++ Havok 백엔드를 그대로 쓴다.
3. 제품 구성[편집]
Havok은 단일 물리 엔진이 아니라 모듈 묶음이다.
| 모듈 | 담당 |
|---|---|
| Havok Physics | 강체 동역학, 충돌 감지, 제약 해결기, 래그돌 |
| Havok Cloth | 천 시뮬레이션 — 망토, 깃발, 머리카락 |
| Havok Destruction | 파괴 — 사전 분할 조각 기반 |
| Havok Animation | 스켈레탈 애니메이션, 블렌딩, 역운동학 |
| Havok Behavior | 애니메이션 상태 기계 · 행동 트리 계열 저작 도구 |
| Havok AI | 내비게이션 메시 생성과 길찾기, 군중 시뮬레이션 |
이 중 Havok Physics가 압도적으로 유명하지만, 실제 프로젝트에서 스튜디오를 붙잡아두는 건 Behavior와 Animation인 경우도 많다. 물리는 대체재가 있어도 검증된 애니메이션 파이프라인은 갈아치우기가 무섭기 때문.
4. 물리 엔진의 속[편집]
Havok Physics의 뼈대는 여느 실시간 물리 엔진과 크게 다르지 않다. 매 프레임 (1) 광역 충돌 검사(broad-phase)로 후보 쌍을 추리고, (2) 협역 검사(narrow-phase)로 실제 접촉점을 뽑고, (3) 접촉과 조인트를 제약 해결기로 풀고, (4) 속도와 위치를 적분한다.
광역 단계는 AABB 기반 공간 분할(경계 볼륨 계층·공간 분할 자료구조)로 전수 비교를 피하고, 협역 단계는 볼록 형상 간 거리를 GJK 알고리즘 계열로 구한다.
제약 해결은 속도 수준 정식화가 국룰이다. 접촉 제약 함수 에 대해 야코비안 를 잡고, 충격량 를 미지수로 두어
를 푼다. 여기서 은 질량행렬, 는 충돌 전 속도, 는 관통을 밀어내는 편향(Baumgarte) 항이다. 접촉은 한 방향으로만 밀 수 있으므로 이라는 부등식이 붙고, 마찰까지 넣으면 이건 선형계가 아니라 선형 상보성 문제(LCP)가 된다. 이걸 정확히 푸는 건 실시간 예산으로는 불가능하므로, 대부분의 엔진처럼 Havok도 반복 해법(projected Gauss-Seidel 계열)으로 몇 회 돌리고 손을 턴다.2
즉 게임 물리에서 “정확도”는 목표가 아니다. 목표는 정해진 밀리초 안에 그럴듯하고, 폭발하지 않고, 어제와 같은 결과를 내는 것이다. Havok이 오랫동안 값을 받아낸 이유가 정확히 이 세 번째 — 크로스플랫폼 결정론적 시뮬레이션과 안정성이다.3
5. 대표 채용작[편집]
- Half-Life 2 (2004) — Source 엔진. 물리 퍼즐이라는 장르를 만들었다.
- The Elder Scrolls IV/V, Fallout 시리즈 — Bethesda의 Gamebryo/Creation 엔진. Havok을 잘 쓴 사례이자 못 쓴 사례로 동시에 전설이 되었다. 프레임레이트에 물리 스텝이 묶여 있어서 60 FPS를 넘기면 물체가 승천하는 현상은 이 바닥 밈의 고전이다.4
- Halo 3 (2007) — Bungie. 대규모 차량 물리.
- 젤다의 전설 브레스 오브 더 와일드 (2017) — Havok Physics 채용. 물리 규칙이 곧 게임 디자인 언어가 된 극단적인 예시로, “물리 엔진이 잘 만든 게임”이 아니라 “물리 엔진을 잘 이해한 디자이너”의 승리로 평가받는다.
- 이 밖에 어쌔신 크리드, 다크 소울, 데스티니, 소닉 등 장르 불문으로 깔려 있다.
6. PhysX·Bullet과의 비교[편집]
| Havok | PhysX | Bullet | |
|---|---|---|---|
| 라이선스 | 상용(협상) | 무료 SDK, 오픈소스 공개 | 오픈소스(zlib) |
| 강점 | 콘솔 최적화, 결정론, 통합 툴체인 | GPU 가속, Unreal/Unity 기본 탑재 | 자유도, 연구·비게임 활용 |
| 약점 | 비싸고 접근이 폐쇄적 | 과거 GPU 종속 논란 | 상용 지원 부재 |
이 표의 결론은 단순하다. 예산이 있으면 Havok, 없으면 PhysX나 Bullet. 그리고 대부분의 개발자에게는 예산이 없다.
7. 관련 문서[편집]
- 물리 엔진 · PhysX · Bullet
- 강체 동역학 · 제약 해결기 · 충돌 감지
- GJK 알고리즘 · 경계 볼륨 계층
- 천 시뮬레이션 · 위치 기반 동역학
- 내비게이션 메시 · 행동 트리 · 군중 시뮬레이션
- 베를레 적분 · 사원수
8. Footnotes[편집]
-
“안 터진다”는 게 얼마나 큰 세일즈 포인트인지는, 새벽 3시에 밟기만 하면 캐릭터가 우주로 날아가는 버그를 재현하려고 리플레이를 200번 돌려본 사람만 안다. ↩
-
반복 해법은 반복 횟수를 늘릴수록 정확해지지만, 게임은 프레임당 반복 횟수를 대여섯 번으로 못 박아둔다. 그래서 물체를 잔뜩 쌓아 올리면 밑바닥이 미묘하게 물렁해지고 탑이 스르륵 무너진다. 버그가 아니라 예산이다. ↩
-
크로스플랫폼 결정론은 생각보다 지독하게 어려운 문제다. 같은 소스라도 컴파일러가 부동소수점 연산 순서를 바꾸거나 FMA를 끼워 넣는 순간 마지막 비트가 갈리고, 그 비트가 몇 초 뒤 완전히 다른 시뮬레이션이 된다. 리플레이와 P2P 락스텝 멀티플레이가 이 위에 얹혀 있다. ↩
-
정확히는 물리 갱신 주기와 렌더 프레임을 분리하지 않은 게임 측 통합 방식의 문제였다. 엔진을 탓하기 전에 고정 시간 간격(fixed timestep) 루프를 짰는지부터 확인하는 것이 예의다. 물론 접시가 하늘로 날아가는 장면이 더 재밌었다는 점은 부정하기 어렵다. ↩