3D 네비게이션은 다양한 방식을 제공한다. 왼클릭 드래그, 오른클릭 + WASD, 알트 + 마우스 드래그 등등.
네비게이션을 하는 와중 FOV를 일시적으로 조절할 수 있는데, 텍스처를 확대해서 관찰해보는데 요긴하게 쓸수 있다.
W: location, E: rotation, R: scale 툴 키 바인딩은 여느 3D 에디터와 다르지 않게끔 해뒀다.
재밌는 기능 하나. 이동하는 중에 shift키를 누르고 있으면 이동하는 방향에 맞춰 카메라가 같이 움직이는데 은근 편하다.
뷰를 나누고 도킹하는 기본적인 기능을 깔끔하고 꼼꼼하게 해뒀다는 느낌.
레벨 에디팅
BSP brush / Light / Material
BSP brush라는 기능으로 기본적인 맵을 어마어마하게 간단하게 만들어낼 수 있다;
이걸 가지고 어느 정도까지 복잡한 맵을 만들어도 컴퓨터가 괜찮은지는 테스트를 해봐야 알겠지만… 그래도 외부 3D 툴에서
노가다를 하는 방식으로 맵을 에디팅하지 않아도 된다는 점에서 정말 편리하게 느껴짐.
Material 적용을 하기 위한 UV맵 정렬 기능 등등도 훌륭해 보인다.
기본 제공 머티리얼은 따로 손 볼 필요없이 리얼하다는 느낌이 팍 드는 정도.
임의의 오브젝트에 탑승(?)하여 오브젝트의 위치를 카메라 네비게이션하듯 위치시킬 수 있는 기능도 무척 편리해 보인다.
Light를 생성하고 조절하는 과정, 그리고 reflection sphere를 생성하여 배치하는 것으로 사물에 비칠 환경 세팅이
된다는 개념 등등이 재밌다.
옛날 버젼에서 light build를 실행시키면 방화벽 이슈(?) 때문인지 잘 작동하지 않아서 결국 새 버젼을 다운받게 되었다는
점 빼면 아직까지 나쁜 인상은 없다.
그러나 맥북 레티나 가지고 빌드를 수행하면 어마어마한 소음과(…) 매우 뜨거운 열기를 내뿜기 때문에, 결국 제대로 하려면
좀더 성능 좋은 데스크탑이 하나 있어야하지 않을까 싶긴 하다.
블루프린트
말하자면 순서도 같은 개념으루다 스크립트를 대체하는 기능.
임의의 블루프린트를 일단 펼쳐보면 드는 느낌은 ‘응? 간단한 기능임에도 생각보다 복잡해보이잖아?’
하지만 직접 블루프린트를 작성해보는 예제를 따라하니 생각보다 간단하게 느껴짐
Unity에서 따로 구입해야 하는 PlayMaker보다 오히려 더 간단하고 기능도 더 강력하다. 처음 해보는데도, 문이 열리고
닫히는 애니메이션을 구현하는데 십여분 남짓 밖에 안 걸린다. 블루프린트 내에서 타임라인 애니메이션을 생성하고 관리할 수
있기 때문이려나?
레벨 블루프린트
각 맵 파일(유니티에서 말하자면 scene 정도에 해당) 마다 하나씩 있는 게임 스크립트인듯.
레벨 블루프린트만 가지고도 장면에서 발생하는 이런저런 것들을 처리할 수 있다.
클래스 블루프린트
클래스 블루프린트는, 유니티와 빗대어 봤을때 prefab + script 정도에 해당하는 듯.
그러니까, 게임 오브젝트들과 컴포넌트를 묶어서 클래스 블루프린트 내에 세팅할 수 있고, 이 컴포넌트들의 동작을
순서도 엮듯이 엮어서 정의할 수 있다.
여기서 또 게임 중에 실행될 녀석들을 Event graph라고 부르고, 에디팅 중간에 실행될 녀석들은
Construction graph라고 부르는 것 같다.
Event graph가 게임 실행 중에 동작하도록 만드는 녀석이라면, Construction graph는 레벨 에디팅 과정에서
실행되도록 할 수 있는데, 여기서 unity의 MonoBehavior 파생 클래스에 집어넣을 수 있는 public variable과
똑같은 걸 만들어낼 수 있더라.
블루프린트 디테일
블루프린트 내에서 만들어낼 수 있는 그래프 노드 중 변수를 우선 집중적으로 설명하고 있는 영상을 보는 중
기본적인 데이터 타입을 모두 커버하는 것은 당연하고, 구조체를 다룰 수 있으며, 심지어는 클래스 오브젝트도
다룰 수 있는 것 같다.
구조체 내의 특정 멤버에 접근하는 방식으로 break 라는 방식을 이용하는데, 이걸 처리하는 아이디어가 재밌다.
(하지만… 프로그래밍이라면 그냥 . 연산자나 -> 연산자로 끝낼 수 있는 노무 거슬…)
여담
현재 36번째 영상을 보고 있는 중. 아직 다 보려면 멀었;;;
튜토리얼을 진행하는 양반의 이름이 Zak Parrish라고 하는데, 정말 정말 설명을 잘한다. 왠지 팬덤도 생겨있는듯 하다.
(40번째 영상까지 봄): 엥 이거 그냥 프로그래밍입니다. C++에 익숙하다면 그냥 프로그래밍 하는게 훨씬 더 빠를지도 모름니다…
(50번째 영상까지 봄): 블루프린트 에센셜 영상을 모두 보고나서 느낀점이라면, 프로그래밍이긴 한데, 그래도 코드에 익숙치 않은
사람들은 이쪽을 보는 편이 더 나을지도 모르겠다는 것. 그리고 while 루프나 for 루프와 같은 기본적인 노드들도 내부적으로는
더 기본적인 노드들의 조합으로 만들어져 있는 것, 그리고 그걸 다 관찰할 수 있다는 것이 신기함
조금 더 진행하니 블루프린트 에디터에서 브레이크 포인트를 거는 방법이 나왔다. 디버깅은 이걸 이용하면 되겠다.
(60번째 영상까지 봄): Interface 개념이 있다. 미리 Interface를 정의해놓고 어떤 블루프린트에 대해 그 Interface를
구현해두면, Class가 아닌 Interface에 대해 message를 날릴 수 있다. Unity내의 SendMessage와 비슷한
형식이지만, Interface 타입을 이용해 보내거나 받는 message의 형태를 제약할 수 있으니 더 편할듯 싶다.
Tutorial은 4.2를 기준으로 만들어졌는데, 현재 나와있는 최신 버젼은 4.15라서 있던 기능이 사라지거나 다른 기능으로
대체된 경우가 상당히 많다. 튜토리얼 영상을 유심히 보면 종종 레터박스를 띄워서 ‘그 기능은 4.6 이상에서는 어디어디에서 찾을
수 있습니다…’ 같은 설명이 나오는데, 이걸 잘 봐야 무리없이 따라할 수 있다. 그런게 없는 몇몇 영상들은 따라하기 좀
힘들때가 있었음;;
(80번째 영상까지 봄): 3인칭 게임 템플릿을 직접 만들어보면서 애니메이션 시스템을 경험해봄. 언리얼이 가지고 있는
페르소나라는 시스템은 유니티의 메카님 정도에 해당되는듯 싶음. 근데 메카님의 컨트롤을 위한 파라미터 설정이 뭔가 스크립팅과
어울리지 않는다는 인상을 받았다면, 언리얼의 페르소나는 블루프린트와 잘 어울린다는 생각이 듬
하지만 스캘레톤 애니메이션 사용하기 참 더럽게 복잡하다;; 애님 그래프(스테이트 머신)도 만들고, 애니메이션 블랜딩도 설정해주고,
입력기기로부터 들어오는 입력값과 연결도 해주고 (이벤트 그래프), 작은 기능을 구현하는데도 여러가지 그래프를 이것저것 돌봐야
한다.
애니메이션 데이터의 리타게팅 기능은 훌륭한 편인듯 하다.
(84번째 영상까지 봄): 81~84번 튜토리얼은 기본 vehicle 프로젝트에 track event를 심어 간단한 게임처럼 만들고
현재 몇 바퀴째 돌고 있는지와 시간을 측정하는 등 게임다운 기능을 구현하는 튜토리얼로, 특히 HUD 관련 첫 튜토리얼이었다.
그러나 프로그래머의 관점에서 별로 볼만한 튜토리얼은 아닌듯 싶다. 분과 초를 저장하기 위해 timeline 애니메이션을 쓰질
않나, seconds와 minutes를 엮어서 스트링으로 만들기 위해 정말 눈물겨운(=복잡하고 조잡한) 로직을 만들더니, 심지어
이걸 엄청 여러번 복붙해서 여러 군데에다 쓴다. 1) 현재 시간값을 string으로 변환해주는 함수를 찾지도 않고,
2) 동일 로직을 한 소스 내에 여러번 쓰다니! (심지어 이 튜토리얼에서 custom function을 처음으로 사용하는데도 말이지)