[인터뷰] 브렛 비비 "유니티 DOTS, 개발자들이 수많은 시도를 할 수 있도록"

인터뷰 | 허재민,윤서호 기자 | 댓글: 2개 |


▲브렛 비비(Brett Bibby) 유니티 엔지니어링 부문 부사장

이 컵을 유저가 터치했을 때, 마구 흔들리는 모션이 들어가면 좋을까? 아니면 다른 이펙트가 필요할까.

게임 내 상자가 있고, 이 상자는 누르면 열린다 - 이처럼 확실한 목표가 있다면 이는 개발에 문제가 되지 않는다. 하지만 어떤 것이 좋은지 많은 시도를 해봐야 한다면? 수많은 아이디어가 떠오르고, 개발자는 성가신 문제에 직면한다. 어떤 선택이 효과적인지 알기 위해서는 직접 구현해볼 수밖에 없는데, 그 과정이 쓸데없이 시간을 잡아먹는다는 것이다.

유니티의 DOTS(데이터 지향 기술 스택)는 이러한 개발 과정의 속도를 높여 개발자들이 수많은 시도를 할 수 있는 환경을 만들고, 동시에 효율적인 에너지 소비와 퍼포먼스 개선에 대한 해답을 찾는 과정에서 탄생했다. C# 잡 시스템, ECS(엔티티 컴포넌트 시스템), 그리고 버스트 컴파일러를 기반으로 퍼포먼스를 끌어올리고, 이를 통해 개발자에게 친화적인 비주얼 스크립팅과 같은 툴을 선보여 전체적인 개발 과정을 개선했다.

그럼 근본적인 문제 해결로 돌아간 유니티가 얻어낸 해답, DOTS는 무엇이며, 그로 인해 어떤 것들이 가능해졌을까? 유니티의 브렛 비비(Brett Bibby) 엔지니어링 부문 부사장를 만나 여러 가지 이야기를 들어보았다.




Q. ECS와 C# 잡 시스템과 더불어 DOTS는 유니티 엔진에 있어 기반을 재구축하는 수준의 큰 변화였는데, 이를 통해 퍼포먼스 개선은 어느 정도까지 가능한지, 어떤 의미에서 의의가 있는지 궁금하다.

시작은 대부분의 컴퓨터와 게임 시스템이 기술적으로 잘 활용되지 못하고 있다는 점에서 출발했다. 좋은 컴퓨터를 사용한다고 해도 개발 속도는 크게 좋아지지 않는다는 것이었다. 아키텍쳐와 프로그래밍 언어가 하드웨어로부터 최대한의 성능을 활용하는 것을 제한하기 때문이었다. 물론 유니티는 많은 개발자로 하여금 상품을 개발하고 작업할 수 있도록 만들어주고 있다는 점에서 물론 훌륭했지만, 분명 간극은 커져가고 있었다.

하나의 코어라면 문제가 없었다. 필요한 메모리를 바로 찾을 수 있으니까. 두 번째 코어가 나오자 제대로 활용하기가 어려워졌다. 그리고 4코어, 8코어 CPU가 나왔지만 이를 제대로 사용할 줄 아는 사람은 거의 없다. 가능하게 해줄 언어와 아키텍처가 없었기 때문이다.

문제는 이뿐만이 아니었다. 이와 동시에 해상도는 SD에서 HD, 그리고 UHD까지 계속 발전해나갔다. 4K TV는 우리가 어렸을 때 봐왔던 TV보다 약 100배 많은 픽셀로 이루어져 있다. 그만큼 필요한 오브젝트 또한 100배나 늘어난다는 것을 의미했다.

우리는 유니티 개발자들이 고사양으로 개발하는데 어려움을 느끼고 있다는 것을 보고, 가장 근본적인 문제를 해결하고자 했다. 그리고 DOTS는 이에 대한 해결책이었다. DOTS는 데이터 지향 기술 스택으로, 기계 지향적이다. 기계 지향이라함은 이미 하드웨어가 잠재적으로 가지고 있는 퍼포먼스를 활용할 수 있다는 뜻이다. 신규 아키텍처지만 새로운 하드웨어를 필요로 하지는 않는다. 게임에서는 이를 통해 50배에서 100배까지 빠른 퍼포먼스가 가능하다.

DOTS는 패러다임의 전환이자, 유니티가 개발자들에게 열어주고자 하는 길이고, 가야할 방향성이라고 할 수 있다. DOTS는 개발자들이 개발할 수 있는 범위를 확장하고, 동시에 지금까지 사용해야 했던 것을 줄여준다. 에너지를 줄이고 배터리 수명을 개선해, 똑같은 경험을 훨씬 효율적으로 전달할 수 있는 것이다. 이는 특히 고사양 모바일 게임이나, 하이엔드 PC게임에 효과적일 것이라 기대한다.

▲ DOTS를 활용한 메가시티 데모

Q. 키노트에서 인상 깊었던 부분 중 하나는 게임 코드에 들어갈 요소를 시각화해 스크립트를 열지 않고도 확인할 수 있도록 한 부분인데. 어떻게 가능한 것인지 궁금하다.

여러 가지 부분에 대해서 복합적으로 설명해야 하는 부분인데, 하나씩 이야기해보겠다. 먼저 기술적인 부분이다. C#는 .Net 언어다. .Net은 하나의 앱을 만드는데 여러 언어를 활용할 수 있도록 해준다. 각 언어를 먼저 공통 중간 언어로 변환하고 그다음에 하드웨어로 옮김으로써 이를 수행한다.

C#의 장점은 이러한 과정을 통해 이루어지기 때문에, 코드에 속성을 부여해두면 그 속성을 통해 코드를 실행할 수 있다는 점이다. 다시 말해 코드를 미리 컴파일해서 속성을 부여해놓고 Net 컴파일러에서 변환하도록 하면, C#을 C만큼이나, 그리고 어떤 언어보다도 빠르게 만들 수 있다는 뜻이다.

데이터 지향은 멀티 코어에서 일어나는 메모리 문제를 해결해주고, 이를 통해 퍼포먼스를 개선한다. 여기에 잡 시스템은 여러 코어를 조정할 수 있도록 해주며 5~10배 퍼포먼스 개선을 가능하게 해준다. 또한, 컴파일러를 통해서 인텔 SIMD와 같이 데이터를 빠르게 프로세스 해주는 칩에 변환할 수 있기도 하다. 이 모든 요소가 함께 어우러져 엄청난 퍼포먼스 속도 개선이 가능한 것이다.

특히, 유니티에서 역어셈블러 코드를 확인할 수 있다. 또한, 어떤 코드가 일반 코드인지 DOTS 코드인지를 구분해주는 프로파일러가 있어 시스템이 어떻게 이루어지는지도 확인할 수 있다.




이 모든 퍼포먼스를 통해 우리가 구축한 것 중 하나가 비주얼 스크립팅 툴이다. 비주얼 스크립팅 툴은 일반 코드가 아니라 DOTS 코드만을 타겟으로 하는데, 따라서 이를 통해 코드를 모르는 사람도 비주얼 스크립팅 툴을 통해 코드를 작성할 수 있을 뿐만 아니라 직접 코드를 작성하는 베테랑 프로그래머보다도 더 빠르게 작동하는 코드를 작성할 수 있다.

내가 젊었을 적에는 팀의 90%가 프로그래머였다. 이제 팀의 90%는 아티스트와 크리에이터로 구성되어 있다. SD에서 HD는 훨씬 많은 콘텐츠가 필요하다는 것을 의미했고, 그만큼 콘텐츠 크리에이터가 더욱 중요해졌기 때문이다. 하지만 물론 늘어난 작업량에 따라서 인원이 100배 많아진 것은 아니었다. 실제로 불가능하니까.

따라서 해결책은 개선된 퍼포먼스를 기반으로 좋은 툴을 개발하는 것이었다. 아티스트의 작업을 도와줄 수백만 개의 오브젝트를 리얼타임으로 다룰 수 있는 툴과 같이. 따라서 개발자들이 집중해야 할 주요 작업에 초점을 맞출 수 있도록 하는 것이다. 예를 들어 포로를 구하는 중요한 사건이 일어나는 방이 있다고 가정해보면, 그 중요한 공간을 작업하는 데 집중하고 나머지 공간은 약간의 조정만 하면 쉽게 구현할 수 있도록 하는 식이다.


Q. 또 한 가지 흥미로운 부분은 이제 리부트할 필요없이 실시간으로 빌드를 수정하고 피드백할 수 있다는 점이었는데, 어떤 식으로 이루어지는지 물어보고 싶다.

세 그룹으로 나누어보자. 유니티를 사용하는 개발자 그룹이 있고, 모드를 다루는 모더 커뮤니티가 있으며, 게이머가 있다. 라이브 링크는 개발자를 위한 툴이다. 이는 첫째, 1 대 다수를 기반하는 툴로, 모바일, 패드, 콘솔, PC 등을 한 번에 보면서 내 콘텐츠가 각 플랫폼에서 제대로 이루어지고 있는지 바로 확인할 수 있다.

두 번째는 1 대 다수일 수도 있고, 1 대 1일 수도 있는데, 명작 게임이 개발 과정에서 수많은 되풀이 과정을 거쳤다는 점과 관련이 있다. 많은 게임들이 끊임없는 폴리싱 과정을 통해 개발된다. 런칭 시점에 ‘개발이 완벽하게 마무리됐다’고 말하는 개발자는 없다. 라이브 링크의 두 번째 기능은 이러한 반복적인 과정을 빠르게 진행할 수 있도록 해주는 것이다.

이는 DOTS와도 관련이 있다. 우리는 단순히 개발자가 빌드를 수정하고 게임에 적용하는 과정을 최적화하기보다는 가장 빠른 방법이 무엇이냐는 질문으로 접근했다. 사실 이 문제에 대한 해결책을 우리가 스스로 찾아낸 것은 아니었다. DOTS를 통해 자연스럽게 해결됐다.




객체 지향에서는 데이터가 캡슐화되어 숨겨져 있고, 이를 업데이트하기는 불가능했다. 반면 데이터 지향은 마치 누군가 변경하면 모두가 동시다발적으로 변경사항을 확인할 수 있는 데이터베이스와 비슷하다. DOTS를 통해 데이터는 숨겨져있지 않은 상태로 있으며, 에디터와 디바이스 간에 각각 하나의 시스템으로 소통할 수 있게 되어있어 하나의 디바이스가 모든 메모리 로케이션을 조정할 수 있는 것이다. 파티클을 다른 색으로 변화하고자 조정하면, 자동으로 메모리 위치를 찾아 변경해준다. 이는 거의 클라이언트 서버 모델과도 비슷해 보인다.

궁극적으로 개발자는 개발 과정에서 더욱 많은 아이디어를 시도해볼 수 있고, 좋은 게임을 개발할 가능성 또한 높아진다.


Q. 코드를 자동적으로 생성해주는 'Generate Authoring'도 인상깊었는데, 정확히 어떤 방식으로 적용되는 건지 궁금하다.

지금까지 세계는 타협되어왔다. 기계는 C++를 사용하지 않고, 인간도 사용하지 않는다. 영어나 한국어를 사용하지(웃음). C++는 기계와 인간의 타협점이다. 우리는 이를 바꾸고 싶었다. 기본적으로 DOTS는 기계 지향적이다. 좀 더 기계에 가깝게 이동해 소통하는 방법으로, 더욱 나은 결과물을 얻기 위해 기계에 다가가는 것이다. 스펙트럼으로 보자면, 가장 아래 기계에 가까운 순수 DOTS 코드가 있다. 반대편에는 비주얼 스크립팅이 있다. 이제 중간 지점에 필요한 것들이 생긴다.

현재 유니티 커뮤니티는 모노비헤이비어를 프로그래밍하고 있다. 게임 오브젝트에 대한 근본적인 이벤트 기반 시스템으로, 사람들이 이해하기 쉽다. 문제는 느리다는 점이다. 각 이벤트에 랜덤하게 접근해야 하기 때문이다.

키노트에서 공개한 것은, 기본적으로 스캐폴딩(scaffolding)의 다음 단계라고 보면 된다. DOTS 코드를 작성하면서 우리가 느낀 것은, 많은 코드들이 서로 거의 똑같다는 것이었다. 우리가 컴파일러를 컨트롤할 수 있는 만큼, 이를 배포하고 그에 대한 코드를 다시 새롭게 ‘Generate Authoring’로 작성했다. ‘Generate Authoring’은 자동적으로 코드를 생성해주는 명령으로, 개발자가 DOTS 코드 전체를 확인할 필요없이 진행할 수 있도록 해준다.




이와 같은 기능들은 프로그래머 친화적 개발 환경을 만들고자 개발됐다. 크리에이터에게 속도는 중요한 요소다. 컵을 터치했을 때 흔들리게 만드는 것이 좋을까? 해보지 않고는 판단하기 어렵다. 우리는 개발자가 코드를 작성하는데 시간을 허비하지 않고도 여러 가지 아이디어를 시도할 수 있기를 바란다.

DOTS와 비주얼 스크립팅 또한 같은 맥락에서 탄생했다. DOTS는 퍼포먼스를 개선하기 위해 개발한 것이 아니었다. 개발자가 빠르고 쉽게 수많은 시도를 할 수 있는 환경을 만드는 것. 이것이 우리가 DOTS, 비주얼 스크립팅 등을 선보이게 된 가장 근본적인 이유였다.


Q. 유니티는 또한, 삼성과의 제휴를 통해 모바일 게임 환경을 갤럭시 디바이스에 맞춰 최적화할 수 있도록 지원하고 있다. 어댑티브 퍼포먼스와 관련한 유니티의 비전이 궁금하다.

크리에이터로서, 모바일 콘텐츠 개발 환경에서 문제가 되는 것은 게임이 하드웨어 과부하를 일으킬 경우, 운영 시스템은 이를 조금 느리게 하는 등 조정을 하게 된다. 개발자가 이를 직접 통제할 수는 없고, 자연스럽게 이는 좋지 않은 유저 경험으로 이어진다. 유저 입장에서는 개발자가 제대로 일을 안 했구나, 하고 생각할 수밖에 없다.

따라서 우리는 디바이스 개발 회사와 협력해 각 디바이스의 퍼포먼스 조건을 공개하도록 하고 싶었다. 이를 통해 개발자들이 더 좋은 선택을 할 수 있도록. 이를 기반으로 어떤 콘텐츠가 더 중요한지 판단하고, 조건에 맞는 최상의 결과물을 얻어낼 수 있다.

삼성과의 협력을 통해 어댑티브 퍼포먼스에 대한 비전을 현실화할 수 있을 것이라 생각했고, 진행하게 됐다. 특히 DOTS를 통해 훨씬 많은 콘텐츠를 한 번에 담을 수 있게 되면서, 이러한 협력관계는 미래를 위해서도 중요한 첫걸음이라고 할 수 있다.


Q. 유니티 엔진이 바라보는 다음 단계는 무엇이며, 개발자들이 유니티 엔진을 선택해야 할 이유는 무엇이라고 정리할 수 있을까.

먼저 다음 방향성에 대해서 이야기하자면, 아티스트 툴과 워크플로우다. 크리에이터들이 코드를 사용하지 않고도 창조할 수 있도록 해주고, 어려운 요소에 대한 진입 장벽을 낮추고자 한다.

이 모든 것을 기반으로 개발자들은 유니티를 통해 자신의 비전을 더욱 멋지게 구현할 수 있게 될 것이다. 접근성이 좋아서, 저렴하기 때문이 아니라, 자신의 아이디어를 더 훌륭하게 실현할 수 있기 때문에 유니티를 선택하게 되는 개발자가 더 많아질 것이라 기대한다.

코멘트

새로고침
새로고침

기사 목록

1 2 3 4 5