[시리즈] 언리얼 3개월 써본 후기
· 언리얼 3개월 써본 후기



아무튼 언리얼 좀 써보니까 감이 잡히는게

아무래도 소규모 팀이면 언리얼로 생산성 뽑기가 극악임

우선 기획자랑 그래픽이 엔진을 어느정도 알아야 개발이 수월한데

유니티 다룰줄 아는 사람은 꽤 되니까 유니티 개발은 소규모라도 문제 없음

근데 언리얼은 할줄 아는 사람이 많이 없음 그러니까 개발이 상당히 지지부진해지는 면이 있음


주변에서 하는 이야기로는 애초에 게임 개발이라는건 어느 엔진이 좋다 나쁘다 해서 엔진을 결정하는게 아니라

개발하려는 게임의 볼륨과 기능에 적합한 엔진을 사용하는게 좋다고 함

예를 들어서, 2D 인디게임 같은 경우는 애초에 볼륨이 큰 경우는 별로 없고 성능적인 제약도 거의 없음

그런 상황에서 굳이 언리얼 엔진을 쓸 필요가 없다는거임

닭 잡는데 닭 잡는 칼 쓰고, 소 잡는데 소 잡는 칼 쓰듯이


만약에 완전 대규모에 퍼포먼스가 좀 나와야 된다고 하는 경우라면

언리얼을 쓰는걸 고려해볼 수 있음 유니티 쓸려면 쓸 수도 있는데

언리얼쪽이 나나이트랑 루멘, 뭐 그런게 있어서 대규모 게임의 경우에는 최적화가 수월한 면이 있으니까

그래서 볼륨 작은 인디 게임을 만든다고 하면 대부분은 유니티를 쓰길 권장하겠음


여기서부터는 프로그래밍적인 이야기를 좀 하겠음

언리얼 엔진은 사용자에 대해서 상당히 강제적인 면모가 있음 있는 정도가 아니라 강함

유니티가 입맛대로 구조를 짤 수 있는 자유로움이 있다면

언리얼은 정해진 구조 내에서 제약된 스크립팅을 해야함 그게 꼭 족쇄 차고 프로그래밍 하는 기분임


당장 내가 진행했던 프로젝트에서도 메인 프로그래머가 언리얼에 적응 못해서 괴로워하더라

유니티에서는 구조를 원하는대로 자기 설계 사상대로 만들었었는데

언리얼은 자기네들의 설계사상을 강요하니까

나는 일단 그 부분에 대해서는 언리얼 엔진이 지향하는 방향에 순응하기로 했음


다만 순응한다면 그만큼 편리한 엔진도 또 없음

대부분 모든게 갖춰져있음 유니티에서는 플머가 직접 구현해야했던 기능들이 언리얼에서는 미리 갖춰져있음

아닌가...? 기분 탓일지도 모르겠는데 일단 나는 갖춰질게 전부 갖춰져있다고 느꼈음

특히 네트워크 쪽은 구조가 이미 완벽하게 짜여있기 때문에 서버 구현하는게 상당히 편함


아... 그리고 블루프린트의 사용은 불가피하더라

외국의 언리얼 권위자가 올린 유튜브 영상을 봤는데 정말 하나하나 내 마음을 뜨끔하게 만드는 이야기를 하더라

"언리얼에서는 순수한 프로그래머란 없다"

이게 프로그래머 종특인지는 모르겠는데 일단 모든걸 코드로 해결하고 싶어하는 성향이 있음

내 주변에도 노드 기반 비주얼 스크립팅 이거를 극혐하는 프로그래머가 꽤 있더라

결론적으로 말하자면, 언리얼 엔진이 지향하는 방향은 기본 구조를 C++로 짜고, 내용을 블루프린트로 채우는거임


이게 생산성 측면에서도 그렇게 될 수 밖에 없는 이유가 있음

언리얼 좀 다뤄봤다고 하는 프로그래머면 언리얼 엔진의 단점 중의 하나를 뼈저리게 느낄거임

컴파일 시간이 너무 오래걸려

유니티처럼 엔진 실행중에 코드 수정하고 저장하면 한 10초도 안걸려서 바로 적용되는데

언리얼 엔진은 일단 코드 작성하고 저장하면 아무것도 안이루어짐 코드를 저장하고 엔진에 있는 컴파일 버튼을 눌러야됨

그리고 그 컴파일 버튼 누르고 얼마나 오래 기다리는지 앎? 한 2분 정도 기다려야됨

프로젝트가 커지면 커질수록 그 시간이 정말 끔찍할 정도로 길어짐


그래서 디버그가 어려움

유니티에서 했던 방식대로 하면 생산성이 극악으로 떨어짐

그래서 언리얼 엔진에서는 구조만 C++로 짜고 내용을 블루프린트로 채우는 기법을 자주 쓰는거임

왜냐하면 블루프린트는 컴파일이 겁나 빠르니까!


그리고 에셋 참조 측면에서도 블루프린트를 쓰는게 이득임

언리얼 엔진에서는 에셋을 스트링 형태의 경로 이름으로 참조하는게 가능한데

이거 왠만하면 안하길 바람

왜냐하면 이거 하드코딩이니까


코드로 에셋을 참조해봤자 경로가 바뀌면 엔진이 오류를 뿜뿜 뿜어냄

게다가 참조시키고 있던 에셋을 삭제했다? 엔진은 아무런 경고도 안띄워줌

근데 블루프린트로 에셋을 참조하고 있었다?

엔진이 "어 너 여기 블루프린트에서 이 에셋 참조중인거 아니었음?" 하고 물어봐줌


저번 글에서 언리얼 엔진은 싱글톤 싫어한다고 말했는데

정확히는 지들은 싱글톤 쓰면서 플머한테는 쓰지말라고 그러는거임

싱글톤 대신 지네들이 서브시스템 이라는걸 만들어 놨으니까 그걸 쓰라는거고


일단은 이 글은 여기까지. 물어보고 싶은거 있으면 물어보고.

다음에도 노하우 같은거 더 풀어볼 생각. 반응 좋으면