2024-12-16_TIL

별빛에소원을·2024년 12월 16일

TeamSparta-Unreal1기-TIL

목록 보기
9/90
post-thumbnail

오늘 수업에서 언리얼 엔진 환경을 준비하고 프로젝트를 생성하는 법을 배웠습니다! 이제 하루 동안 아래의 과제를 수행해보며 조금 더 언리얼 엔진에 직/간접적으로 익숙해지는 시간을 가져보시기 바랍니다!

1. 팀원 간 아이스-브레이킹

간단하게 자기소개하고 팀원들의 자기소개를 들으면서 우리 팀은 어떠한 팀인지 느껴보세요.

팀 Notion을 작성하고 간단하게 소개를 하였다. 경험이 다들 다르지만 배울게 많을 거 같아서 앞으로의 활동이 기대된다.

언리얼 엔진 트랙을 수료하고 어떠한 길들을 걷고 싶은지 얘기도 나누시면서 인사이트를 얻어보도록 하세요!

다들 목표가 클라이언트 개발자로 들었다. 가는 길이 같으니 함께 멀리갔으면 좋겠다고 생각했다.


2. 언리얼 엔진 실행 및 환경 둘러보기

상단 메뉴, 월드 아웃라이너(World Outliner), 디테일 패널(Details Panel) 등 기본 UI 요소들이 어떤 기능을 담당하는지 감각적으로 익혀봅시다.

MenuBar
언리얼 엔진의 각 에디터에는 에디터 창의 우측 상단(Windows) 또는 화면 상단(macOS)에 메뉴 바 가 있습니다. 파일(File), 창(Window), 도움말(Help) 과 같은 일부 메뉴는 레벨 에디터뿐만 아니라 모든 에디터 창에 표시됩니다. 다른 메뉴는 에디터별로 다릅니다.

MainToolBar

MainToolBar
언리얼 엔진의 가장 일반적인 툴과 에디터 일부를 위한 단축 키를 포함하고 있으며, 이 단축키를 통해 Play (언리얼 에디터에서 게임 실행) 모드를 입력하고 프로젝트를 기타 플랫폼에 디플로이 할 수 있다.

Level ViewPort

Level_ViewPort
언리얼이 구현한 World에 배치된 Actor들을 Rendering한다.
World에 배치된 Actor의 Component를 편집할 때 사용하기 용이하다.
레벨 뷰포트는 일반적으로 두 가지 방법으로 레벨의 콘텐츠를 표시한다.

  • 원근(Perspective)는 다른 각도에서 뷰포트의 콘텐츠를 보기 위해 탐색할 수 있는 3D뷰이다.
  • 직교(Ortographic)는 주요 축(X,Y 또는 Z) 중 하나를 내려다 보는 2D 뷰입니다.

Outliner

Outliner
아웃라이너 패널(이전의 '월드 아웃라이너')은 레벨의 모든 콘텐츠에 대한 계층형 뷰를 표시한다. 언리얼 에디터 창의 우측 상단에 디폴트로 위치한다.

각각 고유한 열 레이아웃과 필터 환경설정이 있는 최대 4개의 서로 다른 아웃라이너를 사용할 수 있다.
관련된 눈 버튼을 클릭하여 액터를 표시하거나 감출 수 있다.

해당 액터를 우클릭하여 액터의 컨텍스트 메뉴 에 액세스합니다. 그런 다음 해당 메뉴에서 추가적인 액터 특정 연산을 수행할 수 있습니다. 콘텐츠 폴더를 생성, 이동 및 삭제합니다.

Details Panel

Details_Panel

레벨 뷰포트에서 액터를 선택하면 디테일 패널에서 선택한 액터에게 영향을 미치는 세팅 및 프로퍼티를 표시한다. 다양한 컴포넌트의 프로퍼티 또한 수정이 가능하다. 월드 아웃라이너(World Outliner) 패널의 언리얼 에디터 창 우측에 디폴트로 위치한다.


3. 공식 문서 및 커뮤니티 자료 찾아보기

언리얼 엔진 공식 문서에 접속해 어떻게 생겼는지 둘러보세요.
해당 사이트엔 어떤 정보들이 있고 어떻게 문서가 구성되어 있는지 익숙해지면 좋습니다!

언리얼 엔진 용어

Project

언리얼 엔진 5프로젝트는 게임의 모든 콘텐츠를 담고 있다. 프로젝트에는 Blueprints, Materials 등 하드디스크 안의 많은 폴더가 포함된다. 프로젝트 안의 폴더는 원하는 대로 이름을 변경하고 정리 할 수 있다. 언리얼 에디터(Unreal Editor)의 콘텐츠 브라우저(Content Browser)패널은 하드디스크의 프로젝트 폴더와 동일한 구조를 보여준다.
모든 프로젝트에는 연관된 .uproject 파일이 존재하고 .uproject 파일로 프로젝트를 생성하거나, 열거나, 저장할 수 있다. 프로젝트는 원하는 수 만큼 생성하고 병렬 작업할 수 있다.
프로젝트 및 템플릿 해당 링크에서 자세하게 확인 가능

Blueprint

Blueprint Visual Scripting 시스템은 Node기반의 인터페이스를 사용하여 언리얼 에디터 내의 게임플레이 엘리먼트를 생성하는 완전한 게임플레이 스키립팅 시스템이다. 여러 일반적인 스크립팅 언어와 마찬가지로, 블루프린트 비주얼 스크립팅도 엔진에서 오브젝트 지향(Object-Oriented, OO) 클래스 또는 오브젝트를 정의하기 위해 사용됩니다. 언리얼 엔진을 사용하다 보면, 블루프린트로 정의된 오브젝트를 '블루프린트'라고 줄여 부른다.
블루프린트 << 블루프린트 문서

Object

오브젝트는 언리얼 엔진에서 가장 기본적인 클래스이다. 오브젝트는 구성단위 역할을 하며, 에셋에 필수적인 기능을 많이 포함하고 있다. 언리얼 엔진에서는 거의 모든 것이 오브젝트로부터 상속받거나 함수 기능을 사용한다. 언리얼 아키텍처

Class

클래스는 언리얼엔진에서 특정 Actor나 Object의 행동과 프로퍼티를 정의한다. 클래스는 계층적이다. 다시 말하면 부모 클래스로부터 상속받고 자손클래스에게 다시 상속하는 구조이다.

Actor

엑터는 카메라, 스태틱 메시, 플레이어 스타트 위치 등과 같이 레벨에 배치할 수 있는 모든 오브젝트를 가리킨다. 엑터는 이동, 회전, 스케일링 등의 3D 트랜스폼을 지원한다. 또한 C++ or Blueprint 게임플레이 코드를 통해 생성 및 소멸될 수 있다.

Casting

형변환은 특정 클래스의 엑터를 다른 클래스인 것처럼 간주하려 시도하는 작업이다. 형변환은 성공할 수도 있지만 실패할 수도 있다 성공하면 형변환한 엑터의 클래스 전용 기능에 엑세스할 수 있다
성공하려면 사용하려는 클래스가 하위클래스고 상위클래스로 형변환 하는 것이 실패확률이 적고,
상위클래스에서 하위클래스를 형변환하려면 먼저 하위 클래스에서 상위클래스로 형변환 했을 경우 가능
하다 이를 어기면 상속구조에서 형변환을 실패할 가능성이 매우 높을 뿐 아니라 치명적인 오류를 가져올 수 있다.

Component

컴포넌트는 Actor가 가질 수 있는 기능 단위이다.
엑터에 컴포넌트를 추가할 경우, 엑터는 해당 컴포넌트가 제공하는 기능을 사용할 수 있다.

  • SpotLightComponent는 엑터가 Light처럼 빛을 내게 한다.

  • Rotating Movement Component는 Actor를 회전시킨다.

  • Audio Component는 Actor가 사운드를 재생 시킨다.
    Component는 Actor에 추가 되어야 하며, 단독으로는 존재할 수 없다.

  • Component1

  • Component2

  • Component Window

Pawn

폰은 액터의 서브클래스이며, 인게임 아바타 또는 페르소나의 역할을 한다. 폰은 플레이어 또는 게임AI로 제어되는 NPC등이 존재하게 된다.

인간이나 AI플레이어가 폰을 제어하면, 폰은 Possessed(빙의)상태로 간주한다. 반대로 인간이나 AI플레이어가 제어하지 않는 폰은 Unpossessed된 것으로 여겨진다.

Character

캐릭터는 플레이어 캐릭터로 사용하기 위한 폰의 서브클래스이다. 캐릭터 클래스에는 Collision, Biped 움직임을 위한 입력 Binding, 플레이어가 제어하는 움직임을 위한 추가 코드 등이 포함된다.

플레이어 컨트롤러(Player Controller)

플레이어 컨트롤러 는 플레이어의 입력을 게임 안의 상호작용으로 변환. 모든 게임에는 최소 하나의 플레이어 컨트롤러가 있다. 플레이어 컨트롤러는 게임 안에서 플레이어를 나타내는 폰이나 캐릭터에 빙의할 때가 많다.

플레이어 컨트롤러는 또한 멀티플레이어 게임의 주요한 네트워크 상호작용 지점이다. 멀티플레이어 게임의 플레이 동안에는 서버가 각 플레이어에게 네트워크 함수 호출을 할 수 있어야 하기에 게임 안의 모든 플레이어에 대해 하나의 플레이어 컨트롤러 인스턴스를 지닌다.

각 클라이언트는 자신의 플레이어에 해당하는 플레이어 컨트롤러만을 가지고, 서버와 통신하는 용도로만 사용할 수 있다.

AI 컨트롤러(AI Controller)

플레이어 컨트롤러가 게임 안에 플레이어를 나타내는 폰을 소유하듯이, AI 컨트롤러 도 게임 안에 NPC를 나타내는 폰을 소유한다. 폰과 캐릭터는 특정 플레이어 컨트롤러가 빙의했거나 스스로 AI 컨트롤러를 생성하지 말라는 명령을 받지 않았다면 기본적으로 베이스 AI 컨트롤러에 빙의된다.

플레이어 스테이트(Player State)

플레이어 스테이트 게임 참여자의 스테이트를 말한다. 인간 플레이어 또는 플레이어를 시뮬레이션하는 봇 등이 있다. 게임 월드의 일부로 존재하는 논플레이어 AI의 경우 플레이어 스테이트가 없다.

  • 이름
  • 현재 레벨
  • 체력
  • 점수
  • 깃발 뺏기(Capture the Flag) 게임에서 현재 깃발을 들고 있는지 여부

멀티플레이어 게임의 경우 모든 컴퓨터에 모든 플레이어의 플레이어 스테이트가 존재하며, 동기화를 유지하기 위해 서버에서 클라이언트로 데이터를 리플리케이트할 수 있다. 이는 특정 플레이어 컨트롤러가 나타내는 플레이어의 컴퓨터에만 존재하는 플레이어 컨트롤러와는 다르다.

게임 모드(Game Mode)

게임 모드 는 플레이 중인 게임의 규칙을 설정합니다. 규칙에는 다음이 포함될 수 있습니다.

  • 플레이어가 게임에 참여하는 방법.
  • 게임의 일시 정지 가능 여부.
  • 승리 조건 등 특정 게임 전용 행동.

프로젝트 세팅에서 디폴트 게임 모드를 설정하고 레벨별로 오버라이드할 수 있다. 어떤 방법으로 구현하든, 한 레벨에는 하나의 게임 모드만 존재할 수 있다.

게임 스테이트(Game State)

게임 스테이트 는 게임 내의 모든 클라이언트에 복제할 정보가 들어 있는 컨테이너다.

다음은 게임 스테이트의 몇 가지 예입니다.

  • 게임 점수에 대한 정보.
  • 대결이 시작됐는지 여부.
  • 월드에 있는 플레이어 수를 기준으로 스폰할 AI 캐릭터의 수.

멀티플레이어 게임의 경우 게임 스테이트에 대한 로컬 인스턴스가 각 플레이어의 컴퓨터에 하나씩 있다. 로컬 게임 스테이트 인스턴스는 서버의 게임 스테이트 인스턴스에서 업데이트된 정보를 가져온다.

브러시(Brush)

브러시 는 큐브, 구체와 같은 3D 셰이프를 묘사하는 액터입니다. 레벨에 브러시를 배치하여 레벨 지오메트리를 정의할 수 있습니다. 이를 바이너리 스페이스 파티션(Binary Space Partition) 또는 BSP 브러시라고 합니다. 레벨의 윤곽 작업을 빠르게 하고 싶은 경우 등에 유용합니다.

볼륨(Volume)

볼륨은 연결된 효과에 따라 용도가 달라지는 바운드된 3D 공간이다

  • 블로킹 볼륨(Blocking Volumes) 은 보이지 않으며 액터가 통과하지 못하게 막습니다.
  • 페인 코징 볼륨(Pain Causing Volumes) 은 오버랩되는 액터에 시간이 지남에 따라 대미지를 줍니다.
  • 트리거 볼륨(Trigger Volumes) 은 액터가 들어오거나 나갈 때 이벤트를 유발하도록 프로그래밍됩니다.

레벨(Level)

레벨 은 여러분이 정의하는 게임플레이 영역이다. 레벨에는 지오메트리, 폰, 액터 등과 같이 플레이어가 보고 상호작용할 수 있는 모든 것이 포함된다.

언리얼 엔진은 각 레벨을 별도의 .umap 파일로 저장합니다. 그래서 때로는 레벨이 맵 이라고 불리기도 합니다.

월드(World)

월드 는 게임을 구성하는 모든 레벨이 담겨 있는 컨테이너다. 월드는 레벨의 스트리밍과 다이내믹 액터의 스폰(생성)을 처리한다.


4. 공식 유튜브 채널 혹은 커뮤니티 살펴보기

언리얼 엔진 유튜브 채널에 방문해 간단한 영상 하나를 골라 시청해보세요.

우리가 같이 봤던 영상은 언리얼에 기능에 대한 소개영상이었다.
애니메이션은 리깅을 더욱 편리하게 할 수 있고, 게임캐릭터와 음성이 위화감 없이 이야기를 한다던가, 언레얼 서버를 이용하여 멀티게임을 만든 다던가, 다양한 랜더링 효과에 대해서 소개하는 영상이었다.

내가 느낀점은 다음과 같다. 언리얼을 이용하여 영화를 만들더라도 위화감이 없을 거 같다는 생각을 크게 하게 되었고, 언리얼을 이용한 콘텐츠는 모두 Actor를 활용하므로 영화에 사용된 리소스는 모두 게임으로 만들어도 된다. 이는 굉장한 비용 절감이 가능할 것이고,앞으로 게임엔진을 활용한 무수히 많은 콘텐츠가 나올 수 있음을 시사한다.

앞으로 언리얼을 이용한 콘텐츠가 늘어날 수록 언리얼 엔진을 잘 다루는 기술자의 수요가 폭증할 것인데
지금 기반을 다지지 않는것은 어리석은 판단이라고 까지 생각하게 되었다.

이번 기회를 잘 살려서 언리얼을 활용할 수 있는 업계에 취업하여 기술자가 되기를 간절히 희망한다.

profile
취미로 게임하는사람

0개의 댓글