제 이름은 Matt Stafford, 별명으로는 Wraiyth 라고도 하며, Pub Games 라는 회사에서 테크니컬 디렉터로 근무하고 있습니다. 저희 회사는 오스트렐리아 멜버른에 위치하고 있으며, 언리얼 엔진 개발을 전문으로 하고 있습니다. 저희가 첫 게임을 발매한 것은 2012 년, BlastPoints 라는 타이틀이었는데, iOS 및 안드로이드용 우주 슈팅 게임이었습니다. Pub Games 는 다양한 프로젝트의 외주 계약 작업을 하기도 했으며, 대표작으로는 InFlux, Primal Carnage 가 있습니다.
Pub Games 는 여섯 명의 정직원과 여섯 명의 임시직원으로 구성된 자그마한 개발사입니다. 최근 희생과 선택이라는 개념으로 진행되는 판타지 액션 게임 Arx 개발을 위한 펀드 모금을 받았습니다.
처음 이 블로그 글 작성을 의뢰받았을 때, 어떻게 작성해야할 지 그 방법에 대해 진지하게 생각해 봤습니다. 언리얼 개발 키트 (UE3 의 무료 버전인 UDK) 에서 UE4 로 옮겨가는 것은 약간 어색한 작업이었고, 엄청난 차이점이 있었지만, 새로운 엔진은 그 엄청난 개선과 변화에도 불구하고 이상하리만치 익숙한 느낌이 있었습니다.
사무실을 한 바퀴 빠르게 돌아보면서 직원들에게 기존 버전에 비해 가장 큰 개선사항이 무엇인 것 같냐고 물어봤습니다. 모두 저마다의 의견이 있는 듯 했지만, 에픽이 전반적으로 개선시켜 낸 엔진의 퀄리티에 대해서는 모두 긍정적인 반응이었습니다. 하지만 모든 제안에 있어 공통적인 내용은, UE4 가 비-프로그래머에게 더욱 강력하다는 점이었습니다. 핵심적인 변화와 개선 내용을 더욱 잘 드러내 줄 수 있도록 목록을 간단히 만들어 봤습니다. 누구나 다 아는 주요 내용도 있지만, 현재 언리얼 엔진 4 개발자들조차 알지 못할 수도 있는 자잘하면서도 유용한 내용도 있습니다.
블루프린트
아마도 잘 드러난 가장 큰 변화는 블루프린트 비주얼 스크립팅 시스템일 것입니다. 블루프린트의 다재다능한 강력함에 대해 말하기에 블로그 게시물 하나로는 턱없이 부족할 듯 합니다.
블루프린트는 키즈멧, 프리팹, 아키타입 등 모든 것을 대체할 뿐만 아니라 더욱 막강합니다. 간단히 액터를 만들고 다양한 컴포넌트를 추가한 다음 로직을 짜는 그 모든 작업을, 프로그래머의 도움 없이 아티스트 혼자 할 수 있습니다. 그렇게 짠 내용은 재사용 및 커스터마이징 가능합니다. 블루프린트용으로 사용할 수 있는 값진 자료가 이미 많이 있으며, 아직도 많은 부분이 작업중인데도, 그 존재감과 강력함만큼은 이미 견줄 곳이 없습니다.
패키지는 이제 그만!
UE3 의 악몽 중 하나는 패키지 시스템이었습니다. 패키지 분할을 잘못 해서 아주 단순한 애셋 하나라도 변경할라치면 게임 전체 용량만큼 다시 전송해야 했지요. 하지만 UE4 에서는 각각의 애셋을 UAsset 이라는 개별 파일에 넣어 해결하고 있습니다. 이 애셋을 정리하는 것도, 콘텐츠 브라우저에서 드래그 앤 드롭으로 간단히 유연하게 작업할 수 있습니다. Perforce 나 Subversion 같은 소스 콘트롤 관리 툴의 에디터 통합 기능과 함께라면 더이상 깔끔할 수 없습니다!
더욱 단순해진 임포트
드래그 앤 드롭에 대해 말씀드리자면, 윈도우 탐색기의 폴더에 있는 일정 애셋 그룹을 콘텐츠 브라우저에 바로 끌어 놓는 것으로 임포트하는 것이 가능합니다. 별 것 아닌 것 같아 보일 수도 있지만, 편의성과 효율성에 있어서 상당한 진일보입니다.
애니메이션 애셋
패키지의 제거로 인해 '애니메이션 세트'와 같은 '그룹' 오브젝트 유형의 제거라는 부수 효과도 생겼습니다. 각 애니메이션은 이제 별도의 애셋 파일에 저장되며, 스켈레톤에 연관됩니다. 애셋 공유가 훨씬 단순해집니다.
사실 전체 애니메이션 시스템이 대대적으로 개편되었습니다. UE4 에는 '애님 몽타주'가 도입되어, 애니메이션 시퀸스에 대한 제어권을 아티스트의 손에 쥐어줬습니다. 아티스트는 '애님 몽타주'를 사용하여 복잡한 애니메이션 시퀸스를 연쇄시키거나, 이벤트 기반 애니메이션 전환 등이 가능해 졌습니다.
UE3 의 '애님 트리'를 대체한 것은 '애님 블루프린트'라는 블루프린트 기반 시스템입니다. 이 시스템은 아티스트가 에디터 안에서 전체 애니메이션 스테이트 머신과 트랜지션 룰을 바로 짤 수 있도록 해 주는 강력한 툴입니다.
INI 편집의 종말?
"그거 어느 ini 파일에 있어?" UE3 시절 사무실에서 늘상 하는 질문입니다. 다행히 에픽에서 저희의 고충을 들었는지, INI 파일 편집 작업을 에디터 안에서 바로 할 수 있는 작업으로 만들어 줬습니다.
"편집 > 프로젝트 세팅" 으로 보물같이 유용한 기능을 노출시킬 수 있습니다. 자체적인 일반 세팅, 콜리전 채널, 키 바인딩, 물리 표면 등을 설정할 수 있습니다. 이 메뉴를 살펴보면 작업 내용을 많이 줄일 수 있습니다!
BSP & 내비게이션 자동 리빌드
BSP 브러시에 변경이 있어도 더이상 리빌드할 필요가 없습니다. 자유로이 브러시를 옮기고 조작한 다음 실시간으로 그 변경사항을 확인할 수 있습니다. 이러한 동적인 시스템은 내비게이션같은 데도 확장되어 자동 빌드가 가능합니다. 이 기능이 마음에 들지 않거나 퍼포먼스가 저하된다고 생각되는 경우, 마찬가지로 '프로젝트 세팅 > 내비게이션 시스템'에서 끌 수 있습니다.
스테이트 없음
언리얼 스크립트에 한 가지 강점이 있었다면, 스테이트 시스템입니다. 상태로 정의할 수 있는 것은 무엇이든 만들 수 있는 방법이었지요. 하지만 C++ 로 옮겨가면서 더이상 스테이트 머신이 기본적으로 지원되지 않았습니다. 에픽에서는 AI 용 비헤이비어 트리, 애니메이션 블루프린트 스테이트와 같은 프로그래밍적인 스테이트 머신이 덜 필요한 방식으로 이 문제를 해결하고자 했습니다. 물론 기존의 프로그래밍 방식의 스테이트 머신을 사용하려는 경우, 직접 작성하기에 C++ 만큼 강력한 언어도 없습니다!
멤버쉽 라이선스 회원들은 GitHub 에서 Unreal Tournament 4 소스 코드를 살펴보면 UE4 의 C++ 기반 스테이트 머신 예제를 확인할 수 있습니다.
애셋 레퍼런싱
코드 작성시 거의 항상 3D 모델, 파티클 이펙트, 오디오, 기타 여러가지 다양한 아트 애셋을 레퍼런싱하게 됩니다. 애셋 레퍼런싱은 블루프린트의 추가와 함께 크게 향상되어, 이 모든 것들을 특정 블루프린트 내 컴포넌트로 추가시킬 수 있게 되었습니다.
그 결과 자연스럽게도 어디든 블루프린트 레퍼런스가 포함된 코드 베이스가 가능해 졌습니다. 그 덕분에 이에 대한 해결을 위한 두 가지 시스템이 있습니다: 애셋 레지스트리와 오브젝트 라이브러리 입니다. 애셋 레지스트리는 로드되지 않은 애셋에 대한 질의가 태그나 경로같은 것을 통해 가능합니다. 이를 통해 게임플레이 도중 애셋에 대한 룩업이 가능합니다. 예를 들어 플레이어 클래스 포함 게임이 있는 경우, 모든 플레이어 클래스 블루프린트를 하나의 폴더에 저장한 다음 실행시간에 찾아본 다음 유저 인터페이스를 채울 수 있습니다. 애셋 레퍼런스를 하드코딩할 필요 없이 말입니다!
플러그인 & 확장성
사람들이 UE3 에 대해 갖고 있는 가장 큰 불평 중 하나는, 엔진이든 에디터는 확장성이 떨어진다는 것이었습니다. 이 부분은 UE4 에서 플러그인의 도입으로 실행시간과 에디터 기능 양쪽 모두에서 크게 개선되었습니다.
엔진에는 뛰어난 예제 모음이 포함되어 있으며, 그 중 흥미로운 것들을 'Experimental' 디렉토리에서 찾아볼 수 있습니다. 예를 들어 Paper2D 를 켜면 엔진에 2D 스프라이트 기반 기능이 지원됩니다. Maths Expressions 는 블루프린트에서 수학 표현식을 쉽게 사용할 수 있도록 해 줍니다.
이 모두 급격한 개발 변화를 겪고 있지만, 플러그인 시스템의 강력함을 잘 보여주고 있습니다. 새로운 블루프린트 노드 추가에서부터 전체 에디터 및 에디터 내 시각화, 심지어 지금까지 생각지도 못한 기능까지, 모든 것을 추가시킬 수 있는 것입니다!
그 외에?
UE4 의 전체 기능에 비하면 일부에 불과한 목록이지만, UE3 에서 넘어갈 때 맞닥뜨리게 될 크고 작은 변화에 있어 약간의 이해를 돕는 정도는 되기를 바랍니다.
언리얼 엔진 Wiki 에 UE3 to UE4 Transition Guide 문서에서 자세한 내용을 확인하실 수 있으며, 포럼에서 더욱 자세히 토론해 보실 수도 있습니다. 한국 사용자를 위해 네이버 카페도 준비되어 있습니다.