사실 인터페이스라는 명칭은 임의로 붙여진것인데, HUD, UI, 뭐로 불러도 상관없습니다. 인터페이스를 클릭하면 해당 인터페이스가 가진 크고작은 기능들이 인풋됩니다. 그리고 기능에 맞춰서 게임에 전반적인 변화를 가할 수 있게하는것이죠.
당분간 지속될 강좌에서는 기본기들, 하위기능들을 클릭하거나 사용했을때 취득되는 각종 기능들의 기본적인 사항을 강좌하도록 하겠습니다. 응용방법은 무궁무진하고 스스로 독파해야하는 점이 많기때문에, 이번 강좌에서는 응용방법을 자세하게 알려드리지는 않고 아마 이후 진행되는 강좌에서 지속적으로 은근슬쩍 알려드릴생각입니다. 애초에 응용이란 개념은 직접 부딪히면서 새롭게 발견하는것이므로, 저역시 불완전하고 모든걸 대번에 알려드리는 것은 불가능함을 미리 알려드립니다.
▲붉은 테두리가 쳐진 부분이 003번 강좌의 핵심이다. 용이하게 사용하고, 블루프린트급으로 없어서는 안되는 부분이다.
003번에서는, 지난강좌에서는 오른쪽에있는 "옵션"이라고 얼버무리고 제대로 설명을 하지 않았던 부분과, 해당 부분이 지난강좌에서 설명해드렸던 좌측의 컨텐츠브라우저와 무슨 관계가 있는지 설명해드리도록 하겠습니다. 지난 강좌에서도 설명해드렸지만, 컨텐츠브라우저란 알만툴에 빗대자면 "소재관리창"으로 게임에 사용될 각종그래픽내지 시스템을 보관하는 구역입니다. 작업한 내용이 저장될 곳이라고 볼 수 있겠습니다. UE4에서는 엔진내에서 이러한 폴더들을 보는 것을 지원하여 소재를 임포트하는 번거로운 일을 거칠필요없이, 직접 끌어다놓는 형식으로 저장해두었던 것을 호출할 수 있습니다.
저 붉은 테두리 내에 있는 부분을 뭉둥그려 "옵션"이라는 호칭으로 불렀는데, 역시 인터페이스처럼 임의로 붙여진 별칭에 해당합니다. 정확히 따지자면 "씬 아웃라이너"와, "디테일" 두개로 나눌 수 있습니다. 사실 이 두개는 엔진을 처음 만진이들이라도 어느정도 만지작 거리다보면 감이 올정도로 쉬운 것들입니다. 하지만, 그만큼 없어서는 안될 중요한 시스템인데요, 언리얼엔진에서는 각 개념의 정의를 알아두는것이 매우 중요합니다. 용어와 복잡한 설정들이 난무하는 이곳에서, 단순히 감으로 아는것보다는 머리로 정확하게 정의를 알아두는것이 시간절약과 원활한 작업에 도움이 됩니다.
▲씬 아웃라이너, 액터와 이벤트들의 목록을 보고 쉽게 찾을 수 있는 중요한 요소들이다.
씬 아웃라이너란, 쉽게말해서 게임에 배치된 모든 요소들을 한눈에 보기위한 표라고 볼 수 있겠습니다. 태양도, 태양이 발산하는 빛도, 마왕도, 촌장도 모두 씬아웃라이너에 표시됩니다만 이게 왜 그렇게 중요할지는 정말로 사용해보면압니다.
2D게임에서도 으레 그렇듯이, 여러 이벤트와 캐릭터들을 배치하면 나중에는 굉장히 찾기가 어려워지죠. 가장 대중화된 알만툴의 공통적인 특성에도 그러하듯이, 필드에 배치된 이벤트 중 하나가 오작동을 일으켜 게임플레이에 지장을 줄 경우, 커먼이벤트가 아닌 이상 직접 이벤트를 찾아서 수정해야하는 번거로움이 있죠. 하지만 진짜 번거로움은 수정한다는 것 자체가 아니라 오작동을 일으킨 이벤트를 "찾아야한다"는겁니다. 맵이 500x500이런식으로 커져버리면 이벤트의 고유 식별 번호라도 외워두지 않는 이상 일일히 찾는것이 정말로 골때립니다.
더욱이 3D게임에서는, 2D게임처럼 쿼터뷰로 하늘에서 내려다보는 것을 비록 지원한다 할지라도 명확하게 액터나 이벤트의 표시가 없는 상황에서 찾는것은 정말로 어렵습니다. 뷰포트에서 찾는 번거로운 짓을 할바에야 이렇게 지원되는 씬아웃라이너에서 자신이 배치해두었던 것들을 찾는 것이 더욱 현명합니다. 말했듯이 씬아웃라이너에서는 모든 액터와 설치된 사물들이 표시되고 해당 사물들을 찾아내려면 그냥 씬아웃라이너에 있는 액터를 아무거나 클릭하면 해당 액터가 선택됩니다.
물론 게임을 만들다보면 이렇게 표로 나열해도 찾기어렵고, 기본이 영어로 표시된 이것들을 일일히 휠을 돌려가면서 찾는단건 굉장히 난해한일이죠. 이 때문에 반드시, 액터를 만들거나 특정 사물들을 배치하고 난 이후에는 자신이 찾기쉽게 이름을 바꿔줍시다.
▲강좌를 위해 임의로 배치한 액터. 지나치게 흰 색을 띄는 것은 빛이 없으므로.
지난 강좌에서 액터와 머티리얼을 설명하기위해 사용했던 폴리곤형태의 정육면체를 다시 소환했습니다. 지난 강좌와 색이 다른 건 빛이 없으므로 볼 수 없기 때문입니다. 뷰포트에서는 이렇게 빛이 없을경우 개발자를 위해 액터가 있다는 최소한의 정보만을 알려줄 정도의 윤곽만을 보여줍니다.
사진에서 보듯이, 새롭게 뷰포트에 액터를 배치하자, 씬 아웃라이너에 액터가 등재되어있습니다. 상단사진에서는, 설치한 액터를 "선택"까지 하고 난 후의 모습입니다. 선택에는 두가지 방법이 있는데 뷰포트에서 바로 액터를 클릭하는 방법과, 씬 아웃라이너에서 액터의 이름을 클릭하는 방법이 있습니다. 강좌에서는 환경을 위해 아무것도없는 공허한 레벨에 액터를 배치했기때문에 뷰포트에서 바로 클릭하는 편이 더욱 쉽지만, 숲이나 산 내지 도시를 만들어 액터가 엄청난 속도로 늘어날경우엔 일일히 찾는 것처럼 번거로운 건 없겠죠. 이 경우 씬 아웃라이너에서 액터를 선택할 수 있습니다. 또한, 씬 아웃라이너에 있는 액터를 더블클릭할경우, 선택만되는게아니라 자동적으로 뷰포트가 선택된 액터앞으로 이동합니다.
뱀발로, 지난강좌에서 말해드렸듯이, 액터란 게임을 구성하는 모든 피사체를 의미합니다. 숲을 구성하는 수천개의 나무도 하나하나가 액터고, 플레이어가 밟고 다니는 땅 역시 액터입니다. 물도 액터고, 날씨도 액터이며, 태양도 태양이 발산하는 빛 역시 액터입니다. 헌데 이 모두를 그냥 액터라고 단정지어버리면 참 머리아프겠죠. 이 액터를 구분하는 방법은 씬 아웃라이너의 제가 별도로 체크해둔 "액터의 이름" 오른쪽에 회색으로 옅게표시되어있습니다. 유형이라고 쓰여진 곳을 보시면 될겁니다. 상단 사진을 클릭하시면 확대되므로 자세히 뜯어보실 수 있겠습니다만, 상단 사진에서 액터의 종류는 StaticMeshActor, 즉 움직이지 않는 그래픽을 이용하여 생성된 액터라는 의미입니다. 상단사진에서 배치된 액터는 정말로 움직이지 않는 정육면체일뿐이니, 정확하다고 볼 수 있죠. 여담으로 액터가 빛의 속성을 가질 경우엔 Light라고 표시되고, 클래스블루프린트일 경우엔 Classblueprint라고 하는 등 세세하게 표현합니다!
눈치빠른분들은 아셨겠지만, 액터가 배치되기이전, 즉 액터 선택을 하지않은 완벽한 무의 상태인 첫번째 스크린샷과, 배치 및 선택이 완료된 현 상단의 스크린샷의 차이는 단순히 씬 아웃라이너에만 있지 않습니다. 바로 디테일이 인풋되어 볼 수 있게되었다는 것인데요.
▲씬 아웃라이너 밑에 있는 "디테일". 선택된 액터의 상세설명을 표시한다.
디테일입니다. 디테일의 뜻을 미루어볼때, 이 세부옵션창은 선택된 액터의 상세, 세부설정이라고 볼 수 있겠군요. 디테일에서는 앞서 설명했듯이 이름을 바꿀수도있고, 크기를 조작하는 등 전반적인 물리변화를 거칠 수 있습니다. 디테일을 전부설명해드리기는 이후 설명할 블루프린트의 개념과 활용에 대한 이해를 저해시키는 요소가 미약하게나마 포함되어있기때문에 조금 미루도록하고, 가장 기본적인 몇개만을 설명해드리겠습니다.
말했듯이 디테일은, 물리적으로 액터에 대한 모든 내용을 설정할 수 있습니다. 단 "물리적인" 요소만에 한정됩니다. 액터가 가진 게임플레이에 영향을 미치는 것들은 "레벨 블루프린트"가 담당합니다. 레벨블루프린트를 액터에 대입시키는 방법으로 작동합니다. 간단히 예를 들어보자면, 남성이냐 여성이냐, 키는 몇이냐, 장발이냐 단발이냐는 디테일이 담당합니다. 반면 이성애자냐 동성애자냐, 박사냐 석사냐, 나이가 10대냐 20대냐, 성격이 온화하냐 호전적이냐등은 블루프린트가 담당한다고 볼 수 있습니다. 액터의 "정체성"을 담당한다는 점에선 둘다 비슷하죠.
상단사진에 기재된 디테일은 "스태틱 메쉬"의 디테일입니다. 모든 디테일은 공통적으로 트랜스폼 옵션을 가지고 있습니다만, 트랜스폼 밑으로 있는 StaticMesh, Lighting등의 디테일은 액터가 스태틱 메쉬 일경우에만 활성화되는 디테일입니다. 만약 액터가 스태틱메쉬가 아니라 라이팅이었다면 트랜스폼 옵션은 공통적으로 가지고 있었겠지마는 그 밑으로는 전혀 다른 세부옵션들이 들어있게됩니다. 이건 모두 설명하자면 모든 종류의 액터를 전부 설명해야하는 난해한 일이 벌어지므로 004강좌부터 시작할 "응용법"을 강좌하면서 천천히 배워보도록 하겠습니다. 일단은 공통적으로 모든 액터가 가지고있는 트랜스폼에 대해서 알아보도록합니다.
- 위치 | X,Y,Z - 한 레벨안에 해당 액터가 배치될 위치를 선정합니다. 말 그대로 액터를 옮겨버리는 작업입니다. 정확히 자기가 옮길 위치를 안다면 굳이 끌고 갈필요는 없겠죠.
- 회전 | X,Y,Z - 액터가 바라보는 방향을 회전시킵니다. 거꾸로 뒤집어버릴수도, 휠윈드를 추게할수도 있습니다.
- 스케일 | X,Y,Z - 액터의 크기를 결정합니다. X는 X축(가로)로 N만큼, Y는 Y축(세로)로, Z는 Z축(입체높이)로 크기를 늘리거나 줄일 수 있습니다. 크기가 커지면 모양은 같더라도 느낌이 달라지는 경우가 은근히 있으므로, 3D게임을 만들때는 꼼수로 같은 액터의 크기를 조절해서 여러개를 곂친뒤, 거대한 구조물을 만들기도합니다.
- 모빌리티|무버블은 변화하는 액터, 스태틱은 고정된 액터입니다. 추후 랜턴과 같은 강좌를 시작할때 중요하게 사용됩니다.
살짝 진도를 더 나가서, 스태틱메쉬 전용 디테일옵션인 StaticMesh는 모양 자체를 바꿔버리는걸 말합니다. 구 모양의 메쉬를 이용한 액터를 배치했다고 가정할때, 액터의 모양이 마음에 들지않으면 정육면체 모양으로 교체할 수 있습니다. 이 때 구 모양의 메쉬를 여기서 정육면체 모양의 메쉬로 치환하는 작업을 거칩니다.
머티리얼은 설정된 액터가 가진 메쉬의 재질을 정합니다. 지난강좌에서 질감을 입히는 걸 보여드렸죠?
3번의 강좌가 완료되었습니다. 이번 강좌의 종합적인 결론을 따지자면, 컨텐츠 브라우저에 있는 에셋들을 뷰포트에 배치하고, 배치한 "액터"들을 씬 아웃라이너와 디테일에서 편집할 수 있다, 정도가 되겠군요. 다음 강좌에서는 좀 더 본격적으로 지난 강좌에서 설명해드린 인터페이스를 이용하도록 하겠습니다. 인터페이스를 클릭하면 인풋되는 새로운 기능과 창들을 사용하도록 하겠습니다.