작성
·
843
1
언리얼 입문을 블프 튜토리얼로 입문하고나서
이득우님의 강의를 보고 있는데요, 블프로 하면 시각적인 환경에서 간단한 클릭들로 액터를 만들고 메쉬를 지정할수 있는데, 액터를 c++로 만드는 이유가 궁금합니다. 단순히 c++에서의 원리도 알겸 하는건지, c++로 액터를 생성하는게 실무적인 측면에서 더 좋은건지 궁금합니다.
답변 1
4
안녕하세요.
관련해서는 공식문서의 내용을 한번 정리해드립니다.
https://docs.unrealengine.com/4.27/ko/Resources/SampleGames/ARPG/BalancingBlueprintAndCPP/
C++ 클래스 장점
빠른 런타임 퍼포먼스: 일반적으로 C++ 로직은 블루프린트 로직보다 훨씬 빠릅니다. 이유는 다음과 같습니다.
명확한 디자인: C++ 에서 변수나 함수를 노출하면 세밀한 제어를 통해 원하는 것을 정확히 노출할 수 있으므로, 특정 함수/변수를 보호하고 클래스의 공식 "API"를 만들 수 있습니다. 따라서 지나치게 크고 따라잡기 어려운 블루프린트를 만들지 않아도 됩니다.
광범위한 액세스: C++ 에서 정의(하고 제대로 노출)한 함수와 변수는 다른 모든 시스템에서 액세스할 수 있어, 여러 시스템 사이 정보 전달에 완벽합니다. 또한, C++ 에는 블루프린트보다 많은 엔진 함수 기능이 노출되어 있습니다.
더 많은 데이터 제어: C++ 에서는 데이터 저장과 로드 관련해서 구체적인 함수 기능을 더 많이 사용할 수 있습니다. 버전 변경 및 시리얼라이즈 처리를 다양한 사용자 지정 방식으로 처리할 수 있습니다.
네트워크 리플리케이션: 블루프린트의 리플리케이션 지원은 간단하며 작은 게임이나 고유한 일회성 액터에 사용하도록 설계되었습니다. 리플리케이션 대역폭이나 타이밍같은 것을 엄격하게 제어해야 하는 경우 C++ 를 사용해야 합니다.
강력한 연산력: 블루프린트로 복잡한 수학 연산을 하는 것은 어렵고 약간 느릴 수도 있습니다. 복잡한 수학 연산은 C++ 를 고려하세요.
쉬운 Diff/Merge: C++ 코드와 데이터는 (구성 및 커스텀 솔루션을 포함해서) 텍스트로 저장되므로, 여러 브랜치에서의 동시 작업이 쉽습니다.
블루프린트 클래스 장점
빠른 생성: 대부분의 경우 블루프린트 클래스를 새로 만들어 변수와 함수를 추가하는 것이 비슷한 작업을 C++ 로 하는 것보다 빠릅니다. 그래서 완전 새로운 시스템의 프로토타입을 만드는 작업은 보통 블루프린트로 하는 것이 빠릅니다.
빠른 반복처리: 블루프린트 로직을 수정하고 에디터 안에서 미리보는 것이 핫 리로드 기능이 있더라도 게임을 다시 컴파일하는 것보다 훨씬 빠릅니다. 성숙한 시스템은 물론 새로운 시스템에서도 마찬가지이므로 "미세조정" 가능한 모든 값은 가급적 애셋에 저장해야 합니다.
원활한 흐름: C++ 로 "게임 흐름"을 그려 보는 것은 복잡할 수 있으므로, 보통 블루프린트로 (또는 딱 그 용도로 설계된 비헤이비어 트리같은 커스텀 시스템으로) 구현하는 것이 낫습니다. 딜레이 및 비동기 노드는 C++ 델리게이트보다 흐름을 따라잡기 훨씬 쉽습니다.
유연한 편집: 별도의 기술 훈련을 받지 않은 디자이너와 아티스트도 블루프린트를 생성하고 편집할 수 있으므로, 엔지니어 이외에도 수정해야 하는 애셋은 블루프린트가 이상적입니다.
쉬운 데이터 사용: 블루프린트 클래스 안에 데이터를 저장하는 것은 C++ 안에 저장하는 것보다 훨씬 간단하고 안전합니다. 블루프린트는 데이터와 로직이 밀접하게 섞인 클래스에 좋습니다.
정리하면 대규모 프로젝트에서 콘텐츠 제작 단계에서 빈번한 수정이 발생하는 UI 및 데이터 설정 부분을 제외한 대부분의 핵심 로직은 C++로 제작한다고해도 과언이 아닙니다. 특히 네트웍으로 확장하면 블루프린트로는 아예 제어가 불가능한 중요한 기능도 존재합니다.
블루프린트만으로도 간단한 게임을 만들어 출시하는 것이 불가능하진 않지만, 중대형 언리얼 프로젝트라면 C++로 게임 모듈 제작하는 작업은 필수라고 보시면 됩니다.