개발자가 되기위해서는 자신이 원하는 직업의 방향성에 맞는 C++, C#, Java와같은 다양한 언어를 학습하게됩니다.
저는 게임 클라이언트 개발자를 지향하는 개발자로써 가장 많이 알려져있는 프로그래밍 언어 중 C++를 학습하게 되었으며, C++을 통한 상용화된 엔진 중 가장 대중적으로 알려져있는 Unreal엔진을 학습하게 되었습니다.
이번 포스팅에서는 언리얼 엔진의 특징 및 장단점, 그리고 언리얼5에서 변경된 특징등에 대해 알아보겠습니다.
Unreal 엔진이란?
언리얼 엔진은 에픽게임즈에서 개발한 게임엔진으로, 다양한 플랫폼에서 사용되며 고사양 그래픽 렌더링, 블루프린트,
오픈 소스 및 마켓플레이스를 통한 다양한 에셋 등의 특징이 있습니다.
- 특징 및 장점 :
- 블루프린트를 사용한 시각적 스크립팅이 가능하여 테스트 및 비 개발자들과의 협업이 용이하다.
- PC,콘솔,모바일 등 다양한 플랫폼환경에서 게임 개발이 가능하다.
- 오픈 소스 코드로 개발자가 필요에 따라 엔진을 직접 수정 및 최적화가 가능하다.
- 상용화된 엔진을 통해 많은 커뮤니티가 활성화 되어있으며, 듀토리얼 및 문서를 통해 다양한 학습이 가능하다.
- C++에서는 없던 GC(Garbage Collection)이 존재하여 효율적인 메모리 관리가 가능하다.
- 단점 :
- 개발 환경에서 유니티 엔진에 비해 고사양의 PC가 필요하다.
- 모바일 게임 개발은 가능하지만, 최적화 및 저사양의 스마트폰에서는 성능 문제가 발생할 수 있다.
- 초기 접근의 어려움이 있다.
Unreal vs Unity
엔진이 무겁다?
- 개발 환경 하드웨어 자체 의미
- CPU,GPU,RAM 요구사항이 높다
- 고해상도 그래픽, 쉐이더 기술의 적용되는 기능들
- CPU,GPU,RAM 요구사항이 높다
- 엔진의 크기 및 컴파일 시간이 높다.
- 유니티는 모듈식, 언리얼은 추가설정 하지 않아도 적용되는 기술들이 많다
- 언리얼은 기본적으로 제공하는 기능들이 많은 이유가 엔진이 무겁다는 의미 + 초기 접근시 높은 난이도를 요구한다.
- 런타임 환경에서 리소스 사용량이 높다.
- AAA급 게임을 만들기 적합한 이유 (루멘, 피직스 시뮬레이션 등)을 사용한 렌더링의 이유
- 유니티는 유연함을 중점, 최적화를 중점으로 하고있다.
- 엔진의 복잡성
- 언리얼 엔진은 C++기반, 유니티 엔진은 C#기반으로 설계
- C++의 특징인 기계어에 가깝다. 즉, 더 낮은 수준까지 접근을 허용한다.
- 의존성 차이
- 유니티 : 유연하다 → 모듈식으로 필요한 기능들만 추가/제거한다.
- 언리얼 : Material, 시퀀스, 블루프린트등의 편리한 기능들을 기본적으로 제공한다.
그래픽 렌더링의 차이
- 좀더 사실적 그래픽(고 해상도 그래픽)렌더링을 목표로 하기때문.
- 회사의 방향성이 다르다.
- 나노이트, 루멘, 쉐이딩시 매터리얼 에디터등의 추가 기능이 통합되어 있다.
- 유니티의 경우 원하는 기능들을 추가/제거하는 모듈화된 패키지 형식, 유니티에서도 HDRP를 통한 고품질 포스트 프로세싱 가능
- 같은 HLSL을 통한 셰이딩을 할시 어떤 결과?
- 렌더링 파이프라인의 차이가 있다.
- 언리얼 : 고해상도 품질 위주
- 유니티 : 퍼포먼스 위주, HDRP를 설정 시 고품질 그래픽 렌더링 가능
- 포스트 프로세싱의 차이
- 언리얼 : Bloom, Depth of Field, Motion Blur, Anti-Aliasing 등 기본적으로 제공
- 유니티 : 어느정도 포스트 프로세싱이 가능하지만, 기본 설정값에는 최소화 되어있다. → 기본설정+개발환경 설정을 통한 유연함을 강조
- 라이트
- 언리얼5 특징인 루멘과 같은 기술이 적용되어 조명 시스템의 차이가 있다.
- 렌더링 파이프라인의 차이가 있다.
언리얼5에서 추가된 주요 특징
언리얼4 엔진에서 5로 변경되며 추가된 강력하고 다양한 특징들이 있지만, 그 중 클라이언트 개발자가 알아야 되는 몇가지 특징들에 대해 알아보겠습니다.
1. 나노이트(Nanite)
- 가상화된 마이크로폴리곤 지오메트리 시스템으로, 매우 높은 디테일의 모델을 실시간으로 렌더링 할 수 있다.
- 복잡한 모델에서도 디테일 손실 없이 높은 성능 유지가 가능하다.
- LOD(Level of Detail) 작업이 자동으로 처리되며, 개발 시간을 단축시켜준다.
- 거대한 오픈월드 환경 및 건축 시각화에서 사용할 수 있다.
2. 루멘(Lumen)
- 다이나믹 글로벌 일루미네이션 솔루션으로 직접광 또는 지오메트리(Geometry Shader)와 같은 변화에 따른 간접광을 즉시 반영한다.
- 환경변화에 따라 실시간으로 조명과 그림자가 자동으로 조정된다.
- 별도의 라이트맵이 필요없이 자연스러운 조명 구현이 가능하다.
3. 월드 파티션(World Partition)
- 월드를 언리얼 엔진이 담당하여 나누어 관리하는 데이터 스트리밍 시스템이다.
- 액터당 한 개의 파일(One File Per Actor, OFPA)시스템을 통해 여러 개발자가 동일한 월드의 같은 영역을 동시에 작업 할 수 있다.
- 대규모 오픈월드를 언리얼엔진 내부에서 담당하여 효율적으로 제작 및 관리가 가능하다.
- 사용자(유저)는 필요한 부분만 로드하여 메모리 사용을 절감할 수 있다.
4. 메타사운드(Meta Sound)
- 사운드 소스의 오디오 DSP 그래프 생성을 제어하는 시스템.
- 오디오 렌더링의 모든 측면을 관리할 수 있다.
- 프로그래밍이 가능한 매터리얼 및 렌더링 파이프라인과 유사하다.
이번 포스팅에서는 언리얼 엔진의 특징 및 장단점, 그리고 언리얼5의 주요 추가된 기능들에 대해서 알아보았습니다.
이 외에도 언리얼 엔진은 클라이언트 개발자가 개발시 다양한 도움을 주며, 그 중 객체의 생성과 소멸을 언리얼 엔진 내부에서 담당하여 개발자에게 편리함을 주는 기능 중 하나인 GC에 대해 알아보겠습니다.
'Unreal Engine > 개념정리' 카테고리의 다른 글
UE5 - 액터의 라이프사이클 (0) | 2024.12.18 |
---|---|
UE5 - 컨텐츠의 기본 요소 (매크로, 클래스) 정리 (1) | 2024.12.17 |
Unreal Engine 5 : Rendering Pipeline (0) | 2024.12.11 |
언리얼 엔진의 KismetMathLibrary (0) | 2024.12.04 |
언리얼 엔진의 GC(Garbage Collection) (1) | 2024.12.03 |