본문으로 건너뛰기

© 2026 Molayo

YouTube요약2026. 06. 15. 10:21

게임은 파괴를 어떻게 구현하는가

요약

게임 내에서 실시간으로 발생하는 동적 파괴(dynamic destruction) 구현 기술을 분석합니다. 단순한 애니메이션이 아닌 물리 엔진, 파티클, 비용 절감 알고리즘을 활용해 플레이어의 상호작용에 반응하는 환경을 만드는 방법을 다룹니다.

핵심 포인트

  • 실시간 파괴 구현을 위한 물리 엔진과 파티클 활용법
  • 메모리 예산을 관리하기 위한 비용 절감 알고리즘과 트릭
  • Control 사례를 통한 오브젝트 조각화 및 조인트 연결 기술
  • 재질 태그와 데칼을 활용한 시각적 피드백 강화

비디오: 게임은 파괴를 어떻게 구현하는가
채널: Game Maker's Toolkit
길이: 19분 7초
출처: 자막 (수동, 영문)

안녕하세요. Mark입니다.
파괴에 대해 이야기해 봅시다.
자동차를 박살 내고 건물을 무너뜨리는 것에 대해 이야기해 봅시다.
지형 변형 (terrain deformation)과 화재 확산 (fire propagation)에 대해 이야기해 봅시다.
물체가 휘어지고, 부서지고, 폭발할 수 있는 게임들에 대해 이야기해 봅시다.
하지만 제가 말하는 것은 컷신 (cutscene)이나 스크립트된 순간의 일부로 재생되는 그런 화려하고 미리 정해진 (pre-canned) 애니메이션 (animations)이 아닙니다.
매번 정확히 똑같은 방식으로 무너지는 건물에 대해 말하는 것도 아닙니다.
제가 말하는 것은 실시간 (real-time)으로 파괴를 구현하는 것입니다.
플레이어의 행동에 반응하여.
게임플레이 (gameplay)의 일부로서 말이죠.
그것은 완전히 다른 차원의 문제입니다. 정말 어렵죠.
예측 불가능한 물리 (physics)와 파티클 (particles), 그리고 파편 (debris) 덩어리들을 다뤄야 하기 때문에 어렵습니다. 그리고 주의하지 않으면...
프레임 레이트 (frame rate)가 급락할 것입니다.
그래서 저는 이 주제가 매우 흥미롭다고 생각합니다.
게임에서 동적 파괴 (dynamic destruction)를 구현하는 것은 영리함에 관한 것입니다.
메모리 예산 (memory budget)을 초과하지 않으면서 세상을 폭파시키기 위해, 비용 절감 알고리즘 (cost-cutting algorithms)과 순전한 마술 같은 트릭을 사용하는 것에 관한 것이죠.
그래서 이 영상에서는 매우 다른 방식으로 파괴를 구현한 6가지 게임을 살펴보고,
그들의 세계를 무너뜨리기 위해 사용한 독창적인 기술들을 밝혀내고자 합니다.
저는 Mark Brown입니다.
이것은 Game Maker's Toolkit입니다.
그럼, 게임이 파괴를 구현하는 방식에 대해 알아보겠습니다.

좋습니다. Control부터 시작해 보죠.
이 게임은 플레이하는 동안 환경이 그대로 조각나며 무너지는 게임입니다.
당신의 총알은 탁자와 의자를 뚫고 지나갑니다.
그리고 Jesse의 염동력 (telekinetic powers)을 사용하여 벽에서 콘크리트 덩어리를 뜯어낼 수 있습니다.
이것은 아마도 게임에서 가장 흔한 종류의 파괴일 것입니다. 거의 모든 슈팅 (shooter) 게임에는 충격 시 부서질 수 있는 프롭 (props)과 작은 오브젝트들이 가득합니다.
그리고 그것들은 기본적으로 모두 동일한 기술을 사용합니다.

메모리에 오브젝트의 두 가지 버전을 저장합니다. 하나는 온전한 상태이고, 다른 하나는 파괴된 상태입니다.
그리고 해당 오브젝트가 공격받으면 A를 B로 교체합니다.
단순하지만, 효과적입니다.
Control 역시 동일한 개념을 사용하지만, 이를 훨씬 더 발전시켰습니다.
우선, 오브젝트들은 각각 독립적으로 파괴될 수 있는 수많은 개별 조각들로 구성되어 있습니다. 이는 오브젝트가 공격받은 거의 정확한 지점에서 부서질 수 있음을 의미합니다.
그리고 이 부서진 조각들은 조인트 (joints)로 연결된 별개의 물리 오브젝트 (physics objects)이기 때문에, 만약 테이블을 반으로 부순다면 테이블은 두 부분으로 나뉘어 현실적인 방식으로 무너져 내릴 것입니다.
또한 게임은 전환 과정을 가리기 위해 오브젝트가 부서질 때 파티클 효과 (particle effect)를 재생합니다.
프롭 (props)에는 금속, 콘크리트, 나무와 같은 다양한 재질 (materials) 태그가 붙어 있으며, 충격 시 특정 효과를 재생합니다.
마지막으로, 충격의 느낌을 제대로 살리기 위해 데칼 (decals)이 사용됩니다.
데칼은 기본적으로 환경에 붙일 수 있는 스티커와 같은 것으로, 총구멍이나 크레이터 (craters) 등이 이에 해당합니다.
Control에는 당신이 방금 벽에 실제로 움푹 들어간 자국을 냈다고 착각하게 만들 정도로 아주 훌륭한 데칼들이 있습니다.
이 모든 것을 종합하면, 당신 주변에서 혼란스럽게 무너져 내리는, 진정으로 만족스러운 환경을 얻게 됩니다.
다음으로, Astro Bot에 대해 이야기해 봅시다.
방금 저는 파괴를 구현하는 방법이 파괴하고 싶은 오브젝트의 파괴된 버전을 비밀리에 준비해 두는 것이라고 말했습니다.
하지만 알고 보니 파쇄 (fracture)를 가짜로 만들 필요가 없었습니다.
Astro Bot에는 작은 레이저 발사기로 잘라서 더 작은 통나무로 만들 수 있는 통나무들이 있습니다.
그리고 그것들은 손상된 지점과 정확히 일치하는 곳에서 잘리는 것처럼 보입니다.
거기서 무슨 일이 일어나고 있는 걸까요? 게임이 교체할 준비를 마친 채 수천 개의 가능한 통나무 변형 (variants)을 메모리에 숨겨두고 있는 걸까요?
알고 보니, 그렇지 않았습니다.

게임은 실제로 Astro Bot 아래에 평평한 2D 평면 (2D plane)을 투영하고, 당신이 자르는 바로 그 지점에서 3D 모델을 말 그대로 분할합니다.
그다음 새로운 모서리 (edges)와 표면 (surfaces)을 추가하고, 새로운 충돌 형상 (collision shapes)을 생성한 뒤, 잘린 통나무를 나타내는 두 개의 모델을 내뱉습니다.
이 모든 과정이 단 하나의 프레임 (single frame) 안에 이루어집니다.
이것은 Rainbow Six: Siege가 벽을 뚫고 쏠 수 있게 만드는 방식이기도 합니다. 실시간으로 모델을 조각내는 것이죠.
이 기술은 거대한 절단 레이저를 사용하여 우주선의 파편들을 잘라내는 게임인 Hardspace: Shipbreaker의 기반 기술이기도 합니다.
심지어 PlayStation 2 시절의 Red Faction에서는 벽에서 구체를 동적으로 잘라내는 데 이 기술이 사용되기도 했습니다.
이 방식은 하드웨어 측면에서 상당히 비용이 많이 드는 작업임이 밝혀졌기에, 몇 가지 제한 사항이 따릅니다.
오직 단순한 형태에서만 작동하며, 게임들은 보통 메모리 (memory)가 가득 차는 것을 방지하기 위해 일정 시간이 지나면 파괴된 파편들을 숨깁니다.
하지만 그럼에도 불구하고, 특정 상황에서는 미리 준비해두는 대신 실시간 (real-time)으로 파괴를 구현할 수 있습니다.
다음은...
BeamNG입니다.
자, 게임 속의 물리 객체 (physics objects)들은 보통 강체 물리 (rigid body physics)라고 불리는 것을 사용합니다.
이는 객체들이 항상 정확하고 딱딱한 형태를 유지한다는 것을 의미합니다.
하지만 다른 게임들은 더 유연하고 탄성 있는 무언가를 만들기 위해 연성 물리 (soft body physics)를 사용합니다.
이것은 World of Goo나 Jelly Car Worlds와 같이 말랑말랑한 게임들의 기반이 되는 기술입니다.
그리고 이 개념은 BeamNG.drive에서 볼 수 있듯이 현실적인 차량을 만드는 데까지 확장될 수 있으며, 이는 극도로 세밀하고 현실적인 변형 (deformation)으로 이어질 수 있습니다.
작동 원리는 다음과 같습니다.
BeamNG의 모든 자동차는 수많은 노드 (nodes)로 구성됩니다.
그저 공간에 떠 있는 점들일 뿐이죠.
그리고 이 노드들은 빔 (beams)으로 연결되어 있는데, 이는 늘어나지 않으려고 노력하는 뻣뻣한 스프링 (stiff springs)처럼 작동합니다.

따라서 충돌 (collision)에 의해 이 노드 중 하나가 움직이면, 연결된 모든 빔 (beams)을 잡아당기게 되고, 이 빔들이 모든 노드를 끌어당기면서 현실적인 구겨짐 효과 (crumbled effect)를 만들어냅니다.

대부분의 레이싱 게임이 순수하게 시각적인 방식으로 손상을 표현하기 위해 셰이더 (shaders)와 텍스처 (textures)만을 사용하는 반면, BeamNG나 Wreckfest와 같은 소프트 바디 (soft body) 게임들은 자동차 모델을 말 그대로 찌그러뜨리고 압착하여, 물체가 움직이고 환경과 상호작용하는 방식을 근본적으로 변화시킬 수 있습니다.

BeamNG에는 공기 역학 (aerodynamics)이나 연료 소비 (fuel consumption) 등 훨씬 더 많은 요소가 있지만, 대부분의 사람들은 그저 영화 '데스티네이션 (Final Destination)'의 그 장면 하나를 재현하기 위해 사용할 뿐입니다.

좋습니다. 이제 Far Cry 2로 넘어가 봅시다.
이 게임은 화염 전파 (fire propagation) 시스템으로 유명합니다.
이 게임에서는 화염병 (molotov cocktail)이 마른 풀밭에 불을 붙일 수 있으며, 불길은 근처의 나무와 건물을 집어삼키는 거대한 지옥불로 번져나갑니다.
이것은 어떻게 작동할까요?
기본적으로 게임 세계는 바닥 전체에 펼쳐진 보이지 않는 그리드 (grid)로 표현됩니다.
그리고 각 셀 (cell)은 일정량의 히트 포인트 (hit points, HP)를 가집니다.
만약 해당 셀이 가연성이고 모든 히트 포인트를 잃게 되면 — 예를 들어 로켓을 쏘았을 때 — 불이 붙게 됩니다.
그러면 불타는 셀이 인접한 셀들에 피해를 주기 시작합니다.
그리고 인접한 셀들의 HP가 0에 도달하면 그 셀들도 불이 붙게 되어, 불이 구역에서 구역으로 번져나가는 연쇄 반응 (chain reaction)을 일으킵니다.
물론 이 시스템에는 다른 미세한 차이점들도 존재합니다.
각 셀은 유한한 수명을 가지고 있어 결국에는 불타는 것이 멈추게 됩니다.
환경에 따라 표현해야 할 히트 포인트의 양이 달라지는데, 예를 들어 마른 풀밭과 젖은 정글의 차이처럼 말입니다. 히트 포인트가 많을수록 불을 붙이기가 더 어려워집니다.

그리고 타오르는 셀 (cells)은 바람이 부는 방향에 있는 인접 셀들에게 더 많은 피해를 입히는데, 이는 강한 돌풍에 의해 불길이 몰리는 효과를 포착하기 위함입니다. 겉보기에는 단순해 보이는 시스템이지만, 매우 강력한 효과를 만들어냅니다.

다음은 Teardown입니다.
하지만 그전에, 먼저 2D 게임부터 살펴보겠습니다.
Spelunky와 같은 게임에서는 세계가 타일 그리드 (grid of tiles)로 나뉘어 있는 것을 볼 수 있습니다.
그다음, 해당 타일들을 제거하여 터널, 통로, 그리고 슈트 (chutes)를 만듦으로써 간단한 파괴 시스템을 구축합니다.
개발자들은 거친 가장자리를 숨기기 위해 인접한 타일의 스프라이트 (sprites)를 교체하기만 하면 됩니다.
만약 파괴의 정밀도를 더 높이고 싶다면, 단순히 그리드의 크기를 줄이면 됩니다.
실제로 Noita에서 볼 수 있듯이, 개별 픽셀 (pixels)을 파괴하는 수준까지 내려갈 수도 있습니다.
이 게임에서는 거의 무한한 입도 (granularity)로 벽과 바닥을 파헤치기 위해 모든 단일 픽셀을 제거할 수 있습니다.
그리고 만약 우리가 그 타일 그리드를 가져와서 차원을 하나 더 확장한다면... 바로 Minecraft가 됩니다.
Minecraft는 "복셀 (voxels)"이라고 불리는 큐브들로 구축되어 있으며, 이들은 세계에 독립적으로 추가되거나 차감될 수 있어 완전히 자유로운 형태의 파괴를 가능하게 합니다.
사실, 많은 게임이 파괴를 위해 이러한 복셀 방식을 사용합니다. No Man's Sky, 7 Days to Die, Astroneer, 그리고 지형을 부수는 Donkey Kong: Bananza가 그 예이며, 여기서 모든 층은 흙처럼 빽빽하게 채워진 수백 개의 큐브로 구성되어 있습니다.
이 게임들 대부분은 매우 각진 Minecraft 스타일을 피하고 더 자연스러운 형태를 구현하기 위해 일종의 스무딩 (smoothing) 기술이나 알고리즘을 사용합니다.
기술적인 내용이 궁금하시다면, 마칭 큐브 (marching cubes)에 관한 이 영상을 확인해 보세요.

그리고 Spelunky에서 블록의 크기를 줄여 Noita로 넘어갔던 것처럼,
3D에서도 똑같은 방식을 적용하여 Teardown과 같은 게임을 만들 수 있습니다.
Teardown은 기본적으로 Minecraft와 같지만,
해상도가 훨씬 더 높습니다.
Minecraft가 가구 한 점을 단일 큐브 (cube)로 표현한다면,
Teardown은 그것을 수백 또는 수천 개의 작은 블록들로 표현합니다.
이 모든 것이 훨씬 더 정밀한 파괴 (destruction)를 가능하게 합니다.
다른 복셀 (voxel) 기반 게임들과의 또 다른 차이점은 Teardown에는 물리 (physics)가 적용되어 있다는 것입니다.
여기에는 공중에 떠 있는 플랫폼이란 없습니다!
기본적으로, 이 게임은 복셀 (voxel) 클러스터 (cluster)로부터 객체 (object)를 생성합니다.
하지만 그 복셀들 중 일부가 클러스터에서 떨어져 나오면,
그것들은 즉시 원래의 것과는 분리된 새로운 강체 물리 객체 (rigid body physics object)로 변환됩니다.
이는 그것이 아래로 떨어지거나, 다른 객체에 부딪히거나, 굴러다닐 수 있음을 의미합니다.

그리고 마지막으로...
비디오 게임 파괴의 현존하는 챔피언입니다.
Red Faction Guerilla입니다.
이 게임은 화성 표면의 거의 모든 구조물을 폭발물이나,
단지 당신의 믿음직한 망치를 크게 휘두르는 것만으로도 무너뜨릴 수 있는 게임입니다.
이 게임은 건물의 기초를 제거했을 때 건물이 현실적으로 반응하는 게임입니다.
심지어 그 과정에서 다른 구조물을 쓰러뜨리고 짓뭉개버릴 수도 있습니다.

물론 건물을 파괴할 수 있는 다른 게임들도 있습니다.
방금 Teardown에서 보았습니다.
Just Cause 게임 시리즈에는 쓰러뜨릴 수 있는 작은 구조물들이 있습니다.
그리고 팬들이 사랑하는 Battlefield: Bad Company 2도 있습니다.
이 게임에서 건물은 수많은 조립식 부품들로 만들어져 있으며,
각 부품은 두 가지 버전, 즉 온전한 버전과 파괴된 버전을 가지고 있습니다.
그리고 충분한 데미지를 입히면, 이제 요령을 아시겠지만,
그 부품을 파괴된 변형 (destroyed variant)으로 교체하게 됩니다.

그것은 모두 멋지지만, 이 모든 게임들은 하나의 근본적인 질문과 씨름합니다. 건물은 언제 무너지는가?

Teardown은 물체가 지면으로부터 완전히 분리되었을 때 무너뜨립니다. 이는 거대한 건물이 단 한 줄의 복셀 (voxel)에 의해 지탱될 수 있음을 의미합니다.

Bad Company는 특정 수의 프리팹 (prefab) 조각들이 파괴된 후에 무너뜨립니다. 그 시점에 미리 제작된 파괴 애니메이션 (pre-canned destroyed animation)을 재생하지만, 이는 다소 임의적인 느낌을 줍니다.

이상적으로는, 건물이 계속 서 있어야 하는지 아니면 무너져야 하는지를 확인하기 위해 일종의 구조 분석 (structural analysis)을 수행하고 싶을 것입니다.

그리고 그것이 바로 Red Faction이 하는 방식입니다. 개발사인 Volition이 "스트레스 (stress)"라고 부르는 시스템을 통해서 말이죠.

Red Faction의 건물은 파괴할 수 있는 수백 개의 개별 부품으로 구성되어 있습니다. 이 부품들을 벽돌이라고 생각해 봅시다.

그리고 각 벽돌은 두 가지 능력치 (stats)를 가집니다.
하나는 힘 (force)인데, 단순화를 위해 해당 부품이 얼마나 무거운지로 생각합시다.
다른 하나는 강도 (strength)로, 얼마나 많은 질량 (mass)을 지탱할 수 있는지를 나타냅니다.

그런 다음 우리는 모든 벽돌을 개별 레이어 (layer)

AI 자동 생성 콘텐츠

본 콘텐츠는 YouTube GMTK (게임 디자인)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0