UnrealEngine 개임개발 사전캠프 [1 일차]

초보 게임개발자·2024년 12월 9일

UnrealEngine

목록 보기
1/19
post-thumbnail

Unreal 이란 무엇인가?

링크텍스트

학습 목표

1. Unreal Engine의 기본 개념과 역할에 대해 이해합니다.
2. 게임씬(Game Scene)의 개념과 게임개발에서의 중요한 부분에 대해 알아봅니다.
3. Unreal Engine이 게임 산업에서 사용되는 사례를 찾아보고 탐구합니다.

1. Ureal Engine 조사

1. 게임 엔진이란 무엇인가?
-비디오 게임, PC 게임의 개발에 기반이 되는 구성 요소들을 가진 필수 구성 요소들인 그래픽 엔진, 물리엔진, 오디오 엔진, UI 시스템, 게임 플레이 프레임워크 등이 잘 융합된 상태의 소스 코드와 그 기능들을 디자이너들이 사용 가능한 툴을 겸비한 게임 개발 소프트웨어를 일컫는 말이라고 합니다.
출처: 나무위키

태초의 게임 엔진이 나무도막이나 모래상자 수준이었다면 현대의 게임 엔진은 자동차 생산라인이라고 봐도 무방할 정도로 많은 기능을 제공하고 있다고 합니다.

2. Ureal Engine 소개

언리얼 엔진은 에픽 게임즈(Epic Games)에서 개발한 게임 엔진인데요. 첫 번째 버전은 1998년 1인칭 슈팅 게임 언리얼을 위해 만들어졌습니다. 그 이후로 엔진은 지속적으로 업데이트되면서 2022년 언리얼 엔진 5가 공식적으로 출시되었는데요.
언리얼 엔진은 PlayStation 5 및 Xbox Series X를 포함한 대부분의 차세대 콘솔에서 이미 사용하고 있으며, 리니지2, 포트나이트, 스트리트 파이터 V, 파이널 판타지 VII 리메이크 등 다양한 장르의 인기 게임을 제작하는 데 사용되었습니다. 또한 언리얼 엔진은 게임 외에도 사실적이고 몰입감 넘치는 VR 경험에 필수적인 고퀄리티의 리얼타임 그래픽을 제작할 수 있는데요. 모션 트래킹 및 시선 추적 지원과 같이 VR을 위해 특별히 설계된 다양한 기능을 제공하고 있으며 강력한 그래픽 성능과 다양한 개발 옵션, 시장의 동향에 따른 빠른 변화와 적응 등을 장점으로 실시간 3D 그래픽 제작 분야의 산업을 주도하고있습니다.

언리얼 엔진의 특징

  • 강력한 렌더링 엔진
    언리얼 엔진의 렌더링 엔진은 가장 호평받는 기능 중 하나인데요. 실시간 레이 트레이싱, 다이내믹 라이팅 및 섀도잉, 리플렉션, 파티클 시스템과 같은 복잡한 이펙트를 포함하여 고품질의 사실적인 그래픽을 제작할 수 있습니다. 특히 언리얼 엔진의 렌더링 기능은 게임 및 기타 애플리케이션을 위한 몰입감 있고 시각적으로 멋진 환경을 만드는 데 도움이 되는데요. 게임 장면에서 더욱 사실적인 조명과 색상을 구현하는 데 기여하는 HDR(high dynamic range) 이미징을 지원합니다.

  • 블루프린트 비주얼 스크립팅 시스템
    블루프린트는 언리얼 엔진의 비주얼 스크립팅 시스템입니다. 이 기능을 사용하면 개발자는 기존 코드를 작성할 필요 없이 게임플레이 요소, 로직, 동작을 만들 수 있는데요. 대신 개발자는 노드 기반 인터페이스를 사용하여 스크립트를 생성하고 편집할 수 있으므로, 특히 텍스트 기반 프로그래밍 언어에 능숙하지 않은 개발자의 경우 개발 프로세스를 크게 간소화할 수 있습니다. 이는 프로토타이핑, 테스트, 최종 제품 개발에도 유용한데요. 또한 블루프린트의 시각적 특성 덕분에 게임 로직의 흐름을 쉽게 디버깅하고 이해할 수 있습니다.

  • 방대한 에셋 라이브러리
    언리얼 엔진은 언리얼 엔진 마켓플레이스를 통해 방대한 에셋 라이브러리를 제공하고 있는데요. 이러한 에셋에는 3D 모델, 텍스처, 사운드, 애니메이션, 스크립트 및 전체 프로젝트 예제가 포함됩니다. 이러한 에셋을 그대로 사용하거나 프로젝트의 필요에 맞게 커스터마이징할 수 있으므로 개발자는 이러한 요소를 처음부터 새로 제작하는 데 드는 시간과 노력을 크게 절약할 수 있는데요. 또한 에픽 게임즈의 퀵셀 인수로 언리얼 엔진 사용자는 실제 오브젝트와 환경의 방대한 3D 스캔 컬렉션인 퀵셀 메가스캔 라이브러리에 액세스할 수 있어 프로젝트의 사실성과 퀄리티를 크게 향상시킬 수 있습니다.

  • 다양한 플랫폼 지원
    언리얼 엔진은 크로스 플랫폼을 지원하므로 엔진에서 개발한 게임을 여러 플랫폼에 배포할 수 있는데요. Windows, macOS, Linux, iOS, Android, HTML5, PlayStation, Xbox, Nintendo Switch, 가상현실(VR) 및 증강현실(AR) 기기 등이 있습니다.

3. Unreal Engine의 주요 기능

나나이트(Nanite)

영화에서 사용되던 마이크로 폴리곤 수준의 메시를 지오메트리 가상화를 통하여 실시간으로 렌더링하기 위한 기술
지오메트리 가상화: 버추얼 텍스처링의 지오메트리 버전

버추얼텍스처링
씬에서 필요한 디테일한 텍스처를 가상화된 하나의 큰 텍스처로 모아서 사용하는 기능

가상화 된 지오메트리 데이터로 아트에선 폴리곤의 개수나 드로우 콜 제약 없이 퀄리티에만 집중 가능!
개발목표: 폴리곤 수, 드로우 콜, 메모리 제약없이 가상화된 지오메트리를 통해 영화에서 사용되는 하이폴리곤 에셋을 퀄리티 손실 없이 표현

드로우 콜(Draw call)
드로우 콜 이란 Cpu가 현재 프레임에 무엇을 그릴지 결정하고 Gpu에 오브젝트를 그리라는 명령을 보내는것

나나이트는 한 가지 기능이 아니라 여러가기 기술들이 복합적으로 적용된 결과물

  • 버추얼 텍스처링처럼 지오메트리 버전
  • 뷰에 따라 필요한 디테일 수준의 지오메트리 데이터만 가상화
  • 폴리곤 수나 드로 콜의 제약 없이 하이폴리곤 메시를 바로 사용
  • 로우폴리곤 + 노멀 맵 대신 하이폴리곤 모델을 바로 사용 가능

나나이트 개발 목표

  • 영화에 사용되는 에셋을 퀄리티 손실 없이 그대로 사용
  • 가상화된 지오메트리 -> 화면에 보이는 것만 렌더링
  • 제한 없는 렌더링 예산 -> 폴리곤 수, 드로 콜, 메모리
    개발자분이 말하길 :"나나이트는 렌더링 파이프 라인을 새로 발명하는 수준의 개발이였다"라고 하셨다.

Gpu주도 파이프라인

Retained 모드 렌더러

Retained(보유 모드)
3차원 프로그래밍에 사용되는 추상화(텍스쳐 맵핑, 광원, 카메라, 프레임)된 기능을 쉽게 지원해주
는 서비스를 말합니다
[출처] 개요, 3차원의 종류 - Retained Mode|작성자 나뭇잎

전체 장면을 담은 GPU 씬을 비디오 메모리에 저장하고 GPU 씬을 여러 프레임에 걸쳐 유지하며 이전 프레임과 비교하여 달라진 부분만 보수(Conservative)하며 빠르게 업데이트 (나나이트 뿐만 아니라 루멘에서도 활용)
모든 나나이트 메시의 버텍스와 인덱스 데이터를 하나의 큰 리소스에 보관하여 각각의 뷰에 대하여 비저블한 인스턴스를 찾는 과정을 한 번에 래스터화가 가능

  • 전체 GPU씬 유지
  • 변경된 부분에 대해서만 보수(Conservative) 하면서 업데이트
  • 모든 버텍스/인덱스 데이터를 하나의 큰 리소스에 보관 뷰 단위로 한 번에 래스터화한다
  • 전체 장면의 깊이를 그릴 때 드로 콜 1회 사용
  • 머터리얼 연산은 별도의 패스로 분리가 되어 머터리얼 평가나 쉐이더의 변경 없이 전체 장면에서 깊이 버퍼만 그린다고 한다면 하나의 드로우 콜로 래스터화 하는 것이 가능 해짐

2Pass 오클루전 컬링

이전 프레임에 보였던 것들이 현재 프레임에서도 보일 가능성이 높다는 가정하에 2번의 패스에 걸쳐 진행

  • 가시성 검사 과정
    1 이전 프레임의 Hierarchical Z-buffer를 기준으로 현재 보이는 것들을 빠르게 그림
    2 현재 프레임의 Hierarchical Z-buffer를 다시 빌드
    3 이전 프레임에서 안보였지만 현재 프레임에서 보이는 걸 추가로 보수하여 그림
    4 다음 프레임에서 필요한 Hierarchical Z-buffer를 빌드

HZB: Hierarchical Z-Buffer
빠른 렌더링을 위한 오브젝트 제외 기술


오브젝트 단위가 아닌 픽셀 단위로 가시성 판단, 완벽한 오클루전 컬링, 장면의 변화가 크지 않다면 보수방식으로 효율적인 컬링이 가능
고정비용이 적진 않지만 오브젝트 개수에 따른 비용 증가가 거의 발생하지 않는 장점이 있음
화면 전체를 두 번에 걸쳐 레스터화 한다고 하면 엄청 느릴 것으로 생각 될 수 있으나 생각 보다 빠른데 그 이유는 비저빌리티 버퍼 덕분이다.

비저빌리티 버퍼 (Visibility Buffer)

패스가 2번 진행되어 느릴 것 같지만 가시성 검사를 위해 최소한의 정보만을 사용하고, 캐시 히트 성공률도 높고 오버 드로우 발생도 적음, 거의 고정된 비용
가시성 검사를 한번에 마치기 위해 머티리얼 평가 부분은 가시성 검사에서 분리하여 별도의 디퍼드 머티리얼 패스에서 Gbuffer에 기록, 그 외에는 기존 디퍼드 셰이딩 렌더러에 통합
불투명 지오메트리들을 한 번의 드로우 콜로 그리기 가능해짐

  • 최소한의 데이터 만으로 비저빌리티 버퍼 구성
  • 캐쉬 히트율이 높게 개발 되었다
  • 오버 드로가 거의 발생하지 않는다
  • 오브젝트 개수에 관계없이 거의 고정 비용으로 처리한다

디퍼드 셰이딩 렌더러(Deferred Shading)
라이팅계산을 먼저 하지 않고, 미루어 두었다가 실행하기 때문에 지연 셰이딩이라고 불린다.

클러스터 컬링

메시의 일부가 다른 오브젝트에 가리는 상황에서 화면에 보이지 않는 부분의 불필요한 연산 비용 발생
효율적인 컬링을 위하여 메시를 클러스터라는 작은 단위로 나눔
클러스터는 GPU 성능을 최대한 활용할 수 있도록 128개 이하의 아주 작은 삼각형으로 구성
각 클러스터 단위로 바운딩 박스를 만들고 클러스터 단위로 컬링

클러스터 LOD

가시성 버퍼와 클러스터 컬링으로 훨씬 더 빨라지긴 했지만 화면내 삼각형의 밀도가 높아 질 수록 점점 느려지는 문제는 여전히 남아 있었습니다. 크기가 작은 삼각형을 레스터화할때 효율이 떨어지는 편인데 삼각형의 크기가 레스터의 크기와 가까워 질 수록 성능은 더욱 떨어 집니다. 다음 그림가 같은 경우 입니다.

삼각형의 개수와 상관없이 일관된 성능을 유지하려면 화면 전체에서 픽셀보다 작은 삼각형이 되도록 나타나지 않도록 삼각형의 밀도를 화면 전체에 고르게 유지해야함 그래서 메시보다 조금 더 작은 단위인 클러스터 단위 LOD를 만듦

LOD 사이의 경계가 끊김없도록 이어지도록 클러스터 경계 보존을 합니다. (위 그림 주황색 점선)
폴리곤 개수에 관계 없이 고정된 성능을 가지게 되었다.

  • 고정된 클러스터 개수만 랜더링
  • 해상도에 비례한 성능 비용
    메쉬 전체가 메모리에 로딩 되는 것이 아니라 스트리밍 방식으로 선택된 LOD만 로드되고 언로드 되기 때문에 메모리에는 화면에 보이는 데이터만 올라가게 된다. 만약, 장면 전환이 빠르거나 밀도가 높은 씬이라면 고성능의 디스크가 필요하다.

이러한 방식으로 화면 대부분을 픽셀 크기에 가까운 삼각형으로 채우는 것이 가능해짐 기본의 하드웨어 래스터라이저는 화면에 차지하는 삼각형이 작을 수록 효율이 떨어짐
작은 삼각형을 래스터라이저하기 최적화된 SW 래스터라이저를 컴퓨트 셰이더를 이용하여 구현 (HW 래스터라이저에 비해 3배 빠른 속도)

삼각형의 클 경우에는 HW 래스터라이저가 유리할 수 있다. 때문에 장면 별로 마스킹 하여 SW + HW 하이브리드하게 래스터라이저를 사용한다.

밀도가 높은 부분은 SW 래스터라이저, 밀도가 낮은 부분은 HW 래스터라이저 사용.

[출처]https://devjino.tistory.com/219

나나이트 제약

캐릭터 뼈대 애니메이션과 같은 변형되는 오브젝트는 아직 지원되지 않는다.
형대가 변하는 피부나 옷은 나나이트가 적용되지 않지만 캐릭터에 부착하는 단단한 장비같은건 스택틱 메시라 지원된다.


루멘

특별한 하드웨어 가속 없이도 실시간으로 사용 가능한 완전한 다이내믹 글로벌 일루미네이션 기능
사실적인 간접광 표현에 사용 무한하게 바운스되는 글로벌 일루미네이션을 지원
간접광으로 인한 간접 섀도우나 색이 물드는 컬러 브리딩 현상도 나타남

  • 다이나믹 글로벌 일루미네이션/리플렉션
  • 리플렉션 캡처, 라이트 uv, 라이트맵 굽는것 모두 할 필요 없음
  • 표면캐시에 대해 빛 계산, 간접광도 빠르게 계산 가능
  • 벽면의 경우 메시의 두께를 10cm이상 하는것이 빛이 투과가 되지 않는다.
  • 조명의 Mobility가 Movable일때 가장 잘 작동한다.
  • 루멘을 사용하면 스태틱 라이팅에서 사전 연산된 라이팅이 제거된다.
  • 루멘 글로벌 일루미네이션과 라이트맵의 스태틱 라이팅은 함께 사용할 수 없다. 
  • 라이트맵의 빌드 시간이 전혀 들지 않는다.
  • 소프트웨어 레이트레이싱을 사용하려면 프로젝트 설정에서 Generate Mesh Distance Fields가 활성화 되어있어야 한다.
  • 루멘과 소프트웨어 레이트레이싱은 셰이더 모델 5와 DX11 이상을 지원하는 디바이스에서만 적용이 가능하다. (모바일 X) 
  • 자체발광 머티리얼(이미시브 머티리얼)도 추가 퍼포먼스 비용 없이 빛을 전파할 수 있지만 그 양이 크지는 않다.
  • 뷰포트의 메시 디스턴스 필드를 통해 소프트웨어 레이트레이싱의 대상을 확인할 수 있다. 루멘 시스템으로 구하려는 정확도와 퀄리티를 판단할 수 있다.
  • 퀄리티가 너무 낮으면 디스턴스 필드 해상도 스케일을 높여줌으로써 해결할 수 있지만 값이 높아질수록 퍼포먼스 비용도 커지기때문에 최소한의 필요량으로 표현하는 것이 좋다.
  • 표면 캐시에서 노란색은 사용되고 있지 않은 항목이고 분홍색은 문제가 있는 항목이다. 보통 루멘 정보를 시각화할 표면 카드가 부족하거나 아예 표면 카드가 없는 경우이다.
    출처: https://erikanes.tistory.com/345 [erikanes's Macchiato:티스토리]


스카이 라이트를 사용하면 태양광이 대기중에 산란하여 지상 곳곳을 밝혀주는 Gi 효과

왜곡 없이 정확한 위치에 반사

거울같은 사실적인 반사 표면은 하드웨어 레이 트레싱을 선택적으로 사용하여 표현 가능


버추얼 섀도 맵

가상화된 텍스처를 사용하여 고해상도의 섀도 맵을 사용 가능하여, 해상도 부족으로 인해 그림자가 깨지는 일 없이 선명하게 표현 가능
캐싱이 활용되어 라이팅 환경이 동적으로 크게 변경되지 않는다면 빠르게 처리 가능, 빛이 크게 바뀌면 캐시 무효화로 일시적으로 성능 비용 증가
기존 섀도우 방식을 완전히 대체하기에 뎁스 바이어스(Depth bias)로 인해 발생되었던 Shadow Acne, Peter Panning 현상 발생하지 않음

Shadow Acne
빛이 닿는 영역이 그림자 처리되는 현상
Peter Panning
그림자를 만드는 물체가 그림자와 붙어 있지 않고 분리되어 나타나는 현상

씬에 나나이트가 아닌 지오메트리 수가 많거나 라이트 수가 늘면 추가적인 드로우 콜 발생

  • 소프트 섀도우
    경계가 부드러운 그림자 표현
  • 그림자 해상도 조절

[출처] https://velog.io/@dnjfs/%EB%82%98%EB%82%98%EC%9D%B4%ED%8A%B8-%EB%A3%A8%EB%A9%98
나나이트, 루멘 관련 [참고 영상][링크텍스트](https://youtu.be/laCeIFasZsg?si=K0wHrHnfsTDXtFyR)


오픈월드기능

월드파티션 : 그리드시스템, 서브레벨로 나눠 관리할 필요 없이 그리드시스템이 계층구간별로 관리해줌
먼 거리는 HLOD로 로딩해놓은걸 보여줌
액터당 한개 파일 : 레벨과 액터간 관계를 끊음, 액터에 대한 정보는 레벨에 저장되지 않고 컨텐트>익스터널액터스에 저장됨, 작업한 액터들만 빠르게 저장
데이터 레이어 : 상황에 따라 레이어 활성/비활성
레벨 인스턴스 : 2D 그리드시스템, 계층적 하위구조를 가질 수 있음


메타사운드

언리얼 엔진 5에서 도입된 메타사운드(MetaSounds) 는 오디오 디자이너가 사운드 소스를 생성하기 위한 디지털 신호 처리(DSP) 그래프를 완벽하게 제어할 수 있는 하이 퍼포먼스 오디오 시스템입니다.메타사운드는 사용자 커스터마이제이션, 타사 확장성, 그래프 재사용, 에디터 내에서 사운드를 디자인할 수 있는 강력한 툴을 제공합니다.

차세대 프로시저럴 오디오 : 오디오 소스 없이 새로운 오디오를 생산해낼수도 있음
게임플레이에 맞춘 사운드 제공 가능
DSP 플로우 그래프
프로그래머블
샘플레이트 기반 정교한 컨트롤


카오스 (ue5물리엔진)

카오스(Chaos) 는 뛰어난 퍼포먼스를 자랑하는 언리얼 엔진의 피직스 및 디스트럭션 시스템입니다. 사용자는 카오스 디스트럭션(Chaos Destruction) 으로 대규모 디스트럭션 레벨이 있는 씬에서 실시간으로 시네마틱 퀄리티 비주얼을 구현할 수 있으며, 콘텐츠 제작 시 예술적 요소를 마음껏 가미할 수 있습니다.

카오스 디스트럭션 (폭발 등)
에디터에서 미리 녹화 후 재생만 해주는 방식으로 성능향상
실제같은 cloth 시뮬레이션
게임스레드가 아니라 별도의 피직스 스레드에서 작동, 비동기 피직스틱을 활성화, 고정틱 간격으로 실행되어 예측가능한 결과값을 얻을수있음 (네트워크피직스)


나이아가라

나이아가라는 언리얼 엔진의 차세대 VFX 시스템입니다. 테크니컬 아티스트는 나이아가라를 사용하여 프로그래머의 도움을 받지 않고도 추가 기능을 직접 생성할 수 있습니다. 시스템은 유연하며 조정 가능합니다. 초보자는 템플릿이나 행동 예제를 수정하면서 시작하고, 고급 사용자는 자신만의 커스텀 모듈을 생성할 수 있습니다.

프로그래밍 가능한 VFX 툴세트
유체시뮬레이션 추가

[참고][링크텍스트](https://dev.epicgames.com/documentation/ko-kr/unreal-engine/overview-of-niagara-effects-for-unreal-engine)


인공지능

mass entity : 십만여개의 ai를 관리 가능, 오픈월드용 ai 시뮬레이션 프레임워크
LOD에 따라 행동 구체화
스마트 오브젝트 : ai 가 물체와의 거리 등을 계산하여 어떤행동을 할 수 있을지 시뮬레이션 하고 행동하도록 함
mass avoidance : 주변의 다른 ai를 인식하고 경로가 겹치면 계속해서 업데이트 하며 자신의 경로를 찾아감
zone 그래프 : 규칙에 기반한 네비게이션, 월드에 배치한 zone shape의 규칙에 따라서 ai가 자신이 해야할 행동을 파악 → 장거리 이동 손쉽게 구축 가능, 특히 차량이동


4. Unreal의 장점과 단점

장점

  • 높은 품질의 그래픽을 구현할 수 있다.
  • 강력한 물리 시뮬레이션을 제공한다.
  • 다양한 플랫폼에서 지원되며, 모바일 게임 개발도 가능하다.
  • 무료로 사용할 수 있으며, 로열티 모델을 통해 성공적인 게임 출시 시 수익을 공유할 수 있다.
  • 커뮤니티 및 지원 체계가 크고 활발하다.
  • 블루프린트 시스템: 비주얼 스크립팅 언어로 개발된 블루프린트 시스템은 비개발자들도 쉽게 게임 로직을 구현할 수 있게 해준다.

단점

  • 다른게임 엔진에 비해 학습 곡선이 높다 (C++)
  • 초기 설정이 다른 게임 엔진에 비해 복잡하다.
  • 매우 높은 그래픽 품질과 물리 시뮬레이션 기능을 제공하기 때문에, 하드웨어 요구사항이 높다.
  • 무료로 사용할 수 있지만, 게임 출시 후 로열티를 지불해야한다.
  • 큰 커뮤니티를 가지고있지만, 유니티에 비해 상대적으로 부족하다.

5. Unreal Engine으로 제작된 대표적인 게임

언리얼 엔진으로는 1998년부터 25년이 넘는 오래된 역사만큼이나 셀 수도 없을 만큼 수많은 게임들이 개발이 되었는데요
대표적으로는 바이오쇼 시리즈, 기어스 오브 워 시리즈, 모탈 컴뱃 시리즈 등이 있습니다.

국대에는 리니지, ava, 테라, 사이퍼즈, 스페셜 포스, 블레이드 앤 소울, 배틀그라운드, 로스트아크 등 유명한 게임들의 상당수가
언리얼 엔진 기반으로 개발된 것들입니다.

그 중 언리얼 엔진으로 제작된 대표 게임들과 UnrealEngine의 역할 을 보면

1. 포트나이트(Fortnite)

Engie의 역할 :
1. 고품질 그래픽
2. 크로스 플랫폼 지원: 언리얼 엔진은 크로스 플랫폼 개발을 쉽게 만들 수 있도록 하여 플레이어들이 서로 다른 기기에서
함께 플레이 할수 있도록 지원하고 있다.
3. 강력한 물리 엔진 : 포트나이트의 건설 시스템은 언리얼 엔진의 물리 엔진을 활용하여 즉석에서 벽, 바닥 등을 배치하고 접착되도록 설계되었고, 컨테이너의 충돌 및 충돌 모양이 장식되었습니다.
4. 최신 언리얼 엔진 기능 적용 : 포트나이트는 언리얼 엔진의 최신 버전(현재는 언리얼 엔진 5)을 사용하며, 나나이트(Nanite)와 루멘(Lumen)동일한 최신 기술을 적용하여 개발 되었습니다.

2. 철권 8

  1. 혁신적인 그래픽 기술

루멘(Lumen): 최근에 조명과 반사를 운동하는 글로벌 일루미네이션 기술을 통해, 철권 8의 캐릭터 모델과 관련이 더욱 사실적이고 생동감있게 표현되었다고합니다. 예를 들어, 배열의 조명의 움직임의 움직임에 따라 동적으로 빛의 반사가 변합니다.
나나이트(Nanite): 고해상도 폴리곤 데이터를 끌어서 이동시키는 기술로, 캐릭터의 소형과 내구성의 복합 구조를 높은 성능으로 구현했다고합니다. 특별한 특성의 가죽, 옷의 주름, 근육의 클러스터 등이 더 많이 존재합니다.

  1. 캐릭터 애니메이션 개선

언리얼 엔진의 물리적 기반: 철권 8의 애니메이션은 언리얼 엔진의 물리적 기반 시스템을 통해 더욱 독특하고 보이도록 개선되었습니다.
흥미로운 효과, 근육의 움직임 등이 세밀하게 등장했습니다.
진짜타임 페이셜 애니메이션: 언리얼 엔진 5의 페이셜 캡처 기능을 활용하여 캐릭터의 매력을 한층 더 특별하게 활용하고 보이도록 구현합니다.

  1. 환경요소 시스템

날씨 효과(비, 눈 등)와 환경 파괴는 언리얼 엔진의 강력한 파티클 시스템 과 배경이 전투에 따라 함께 역동적으로 움직이는 요소도 엔진의 입체감을 선사 하는 기술을 사용.

  1. 멀티플랫폼 최적화

철권 8은 다양한 플랫폼(PC, PlayStation 5, Xbox Series X|S)에서 실행할 수 있도록 설계되었으며, 언리얼 엔진은 플랫폼 간 최적화 와 여러분께 게임플레이 경험 을 제공했습니다. 접이식 콘솔의 성능을 최대한 활용하고, 프레임 드롭 없이도 편안한 전투를 할 수 있게 되었습니다.

  1. 온라인 플레이 강화

롤백 넷코드: 언리얼 엔진은 철권 8의 온라인 대전에서 롤백 넷코드를 지원하여, 줄이지 않고 더 많은 것을 가능하게 했습니다.
대전 격투 게임에서 중요한 "정밀한 반응 속도"를 나타냅니다.

3. 배틀그라운드

  1. 사실적인 그래픽 구현

언리얼 엔진 4는 외부의 기술을 통해 광범위한 오픈월드 맵에 사실적인 그래픽을 제공합니다. 크기의 축소(지형, 원형, 식물)과 캐릭터 모델(의복, 무기 등)의 세부 묘사가 다루며, 다양한 형태와 배치(낮은/밤)의 배치도가 높습니다.

포스트 프로세싱 효과
HDR, 블룸 효과, 안티앨리어싱 등을 적용하여 감동적인 감동을 선사합니다.

  1. 오픈월드 최적화

PUBG의 월드 맵(에란겔, 미라마, 사녹 등)은 언리얼 엔진의 월드 스트리밍 기술로 제작되었습니다.
이 기술은 플레이어의 이동에 따라 필요한 맵 데이터를 새롭게 불러오는 방식으로, 큰 맵에서도 성능을 강화합니다.

다양한 지도 디자인 지원
맵 제작에 필요한 설명과 조건(눈, 비 등)을 보다 쉽게 사용할 수 있는 환경을 제공합니다.

  1. 물리엔진과 복합체

물질의 물리적 효과

언리얼 엔진의 물리 엔진은 PUBG에서 차량의 움직임, 무기 반동, 탄도학(총알 낙차, 속도 등)을 사실입니다.
물리 기반 충돌과 파손 효과도 전투의 특별한 데 기여합니다.

이렇게 다양한 게임에서 UnrealEngine의 어떻게 사용되어지고 어떤 역할을 하고 있는 알아봤는데요 UnrealEngine만의 강력한 기능적 장점들 덕분에 많은 게임회사들이 이를 사용해 게임을 제작중에 있으며 게임 뿐아니라 다양한 영상 관련 분야에서도 사용되고 있는 만큼
다방면으로 사용하기 좋은 엔진이라 생각이 들었습니다.

저도 앞으로 Unreal을 공부해 가면서 이를 활용해서 어떤 게임을 만들고 싶은지 어떤 게임 개발자가 되고 싶은지 생각을하며 열심히 노력하고 공부해서 좋은 게임을 만드는 개발자가 되도록 하겠습니다.


2. 게임씬(Game Scene)의 개념 탐구

1. 게임씬이 무엇을 의미하는지 정의하고, 게임씬이 게임의 구성 요소에서 어떤 역할을 하는지 설명해주세요.

게임씬이란 게임이나 어플리케이션의 일부 또는 전체를 포함하는 에셋으로, 콘텐츠를 사용하여 작업하는 공간을 의미 합니다.
씬을 사용하면 게임을 세세하게 디자인할 수 있으며, 하나의 씬 파일은 한 레벨로 생각할 수 있습니다.

게임씬의 역할은

1. 게임의 상태관리

  • GameScene은 게임의 특정 상태( 메인 메뉴, 게임 플레이, 게임 오버 화면 등)을 나태냅니다.

2. 렌더링 및 UI 구성

  • 특정 GameScene은 해당 씬에 표시될 그래픽 요소(스프라이트, 애니메이션)과 UI 컴포넌트를 관리합니다.

3. 논리 및 동작 처리

  • GameScene 내에서 이벤트, 충돌, NPC의 행동, 그리고 플레이어 입력 같은 요소들이 처리됩니다.

4. 리소스 관리

  • GameScene은 그 씬에서 필요한 리소스(텍스처, 사운드, 애니메이션)을 로드하고, 필요하지 않은 리소스를 메모리에서 해제함으로써
    성능 최적화를 돕는다.

5. 게임 흐름 연결

  • GameScene은 게임의 흐름을 제어하는데 사용됩니다. 예를들어 MainMenuScene에서 GameScene으로, 그리고 GameOverScene으로의 전환이 가능합니다.

요약하자면
GameScene은 게임을 구조적으로 나누고 관리하기 위해 필요한 핵심적인 요소로, 게임의 상태, 렌더링, 논리, 리소스 및 흐름 제어를 담당합니다. 잘 설계된 GameScene은 게임의 유지보수성과 확장성을 높이는 데 큰 도움을 줍니다.


2. Unreal Engine에서 사용하는 주요 게임씬 구성 요소(월드, 액터, 라이트, 카메라 등)를 조사하고, 각 요소의 역할을 간략하게 설명해주세요.

Unreal Engine에서 GameScene은 여러 구성요소로 이루어져 있으며 각 요소별 특징은

1. 월드 (World)

  • 역할: 게임의 기본 공간을 정의하며, 게임의 레벨 또는 씬을 나타낸다.
    모든액터가 배치되는 공간으로, 게임의 물리적인 경계와 환경을 결정합니다.
  • 특징 : 여러 레벨을 로드하거나 언로드하는 기능을 지원하며, 로딩 시간을 최적화할 수 있으며 게임의 시간, 날씨,
    그리고 물리적 규칙 등을 관리할 수 있습니다.

2. 액터 (Actor)

  • 역할 : 게임 월드에서 모든 개체를 표현하며, 게임의 동적 또는 정적 요소를 나타낸다.
    플레이어, NPC, 건물, 무기, 트리거 등 모든 개체는 액터의 하위 클래스로 구현됩니다.
  • 특징: 기본적인 트랜스폼(위치, 회전, 스케일) 기능을 제공하며 컴포넌트를 통해 추가적인 기능(Ex: 메시, 충돌, 스크립트)을 부여할 수 있습니다.

3. 컴포넌트 (Component)

  • 역할 : 액터에 기능적 요소를 추가하는 모듈이며 예를들어 메시 컴포넌트(시각적 표현), 충돌 컴포넌트(물리와 상호작용),
    오디오 컴퍼넌트(소리재생) 등이 있습니다.
  • 특징 : 액터가 필요한 여러 기능을 조합하여 확장 가능하게 만듭니다.

4. 라이트 (Light)

  • 역할: 씬을 조명하며, 게임의 분위기를 결정하며 다양한 조명 유형을 제공하여 사실적이고 역동적인 환경을 만들어줍니다.

  • 특징 및 라이트의 주요 유형:

    Directional Light: 태양처럼 모든 방향에서 동일한 빛을 제공.
    Point Light: 모든 방향으로 퍼지는 빛을 제공.
    Spot Light: 원뿔 형태로 빛을 투사.
    Sky Light: 전체적으로 균일한 환경 조명을 제공.

5. 카메라 (Camera)

  • 역할: 플레이어의 시점을 정의하며, 게임에서의 시각적 경험을 제공하고
    1인칭, 3인칭, 고정 시점 등 다양한 시점 구성이 가능합니다.

  • 특징: 포스트 프로세싱 효과(예: 블룸, 모션 블러, 색상 조정)를 추가하여 더욱 사실적인 화면을 구현할수 있으며
    Camera Shake, Field of View 변경 등을 통해 역동적인 효과를 추가할 수 있습니다.

6. 메시 (Mesh)

  • 역할: 3D 오브젝트의 형태와 외관을 정의하며
    정적 메시(Static Mesh): 움직이지 않는 오브젝트(건물, 나무 등)
    스켈레탈 메시(Skeletal Mesh): 뼈대 애니메이션을 지원하는 캐릭터 및 동적 오브젝트 가 있습니다.

  • 특징: 충돌 정보와 함께 물리 엔진과의 상호작용을 지원합니다.

7. 머티리얼과 텍스처 (Materials and Textures)

  • 역할: 메시에 적용되어 표면의 외관(색상, 반사, 투명도 등)을 정의합니다.

  • 특징: 머티리얼은 쉐이더 그래프를 통해 복잡한 시각 효과를 구현할 수 있으며, 텍스처는 머티리얼의 세부적인 시각적 디테일을 제공합니다.

8. 사운드 (Sound)

  • 역할: 게임에서의 음향 효과와 음악을 담당하며 소리는 게임 분위기, 상호작용 피드백, 몰입감을 강화합니다.

  • 특징: 3D 공간에서의 음향 위치 및 거리감을 설정이 가능고 리얼타임 사운드 믹싱 및 효과(에코, 필터링 등) 지원합니다.

9. 레벨 블루프린트 (Level Blueprint)

  • 역할: 특정 씬에서 발생하는 이벤트와 스크립트를 정의하며 문이 열리는 트리거, 라이트 변화, NPC 이동 등의 씬 관련 동작을 구현.

  • 특징: 레벨 블루프린트는 특정 레벨에서 발생하는 이벤트와 상호작용을 처리하는 도구로, 레벨 단위의 로직을 빠르게 구현할 수 있으며 간단한 연출, 씬 전환, 타임라인 애니메이션 등 다양한 기능을 제공하지만, 복잡한 시스템은 액터 블루프린트 또는 C++로 처리하는 것이 더 적합하다고 합니다.

10. 지형 (Landscape)

  • 역할: 대규모 지형(산, 계곡, 평야 등)을 생성하고 편집할 수 있으며, 실시간으로 커스터마이징 가능한 환경을 제공합니다.

  • 특징: 페인트 도구를 사용해 지형의 텍스처를 빠르게 변경 가능하고 나무, 바위, 잔디 등 환경 요소를 배치하여 풍부한 월드를 구성합니다.

요약하자면
Unreal Engine에서의 게임 씬 구성 요소는 서로 상호작용하며, 시각적, 물리적, 음향적 요소를 결합하여 몰입감 있는 게임 환경을 만들수 있으며 이러한 요소들은 팀 협업 및 제작 효율성을 높이는 데 중요한 역할을 합니다.

profile
기록은 기억을 지배한다!

0개의 댓글