[UE] Stack-O-Bot 프로젝트 튜토리얼 스터디 노트 - 1편
작은 톱다운 어드벤쳐 게임 제작 튜토리얼
커리큘럼
- Static Mesh, Texture 임포트
- Material 제작
- Skeletal Mesh, Animation 임포트
- Simple Interaction 시스템 제작
- 약간의 마무리, 폴리싱 작업
프로젝트 생성
"기본" 템플릿으로 빈 프로젝트를 생성.
Stack-O-Bot 프로젝트의 에셋을 활용해서 빈 프로젝트를 채워나가는 구성.
기존 맵은 사용하지 않고, 아무것도 없는 빈 레벨에서 시작.
초반엔 기본적인 에디터 설명.
Ctrl + Space : Content Drawer 토글
F10 : 사이드바 토글
스피어를 만들어본다.
뷰포트 라이트 효과를 제거하면 보임.
"메뉴 > 창 > 환경 라이트 믹서" 를 열어서 "디렉셔널 라이트"(혹은 애트머스페릭 라이트) 를 생성하면 빛을 받은 구체가 보이기 시작.
Ctrl + L 로 라이트 각도를 조정할 수 있음. 이 때 Ctrl 입력은 유지하고 있어야 함.
리얼타임 렌더링 설정이 기본 설정임.
프로젝트 설정의 엔진>렌더링 페이지에서 변경 가능. GI 는 기본 Lumen 으로 설정돼있음.
그리고 환경 라이트 믹서에서 순서대로 아래 두 개를 추가. 환경광 처리를 위함.
Atmospheric Light
Sky Atmosphere
Volumetric Cloud
Height Fog
아웃라이너(Outliner) 에서 SkyLight 의 RealTime Capture 를 체크.
Sphere 액터를 제외한 라이팅 엑터들은 아웃라이너에 폴더를 새로 만들어 정리해준다.
Maps 폴더를 만들고 Valley 란 이름으로 맵을 저장.
이제 환경이 셋팅됐으니 첫 에셋을 가져와볼 차례.
StackOBot 프로젝트 파일을 다운로드 받으면 Content 폴더 하위에 FirstGameInUE5_Source.zip 파일이 있음. 이걸 압축 풀어서 리소스를 Import 하는 방식.
모두 압축을 풀었으면, 메시 데이터와 텍스쳐를 Import 해서 첫 프랍을 제작해보기로.
상자 만들기
리소스 임포트.
"모두 임포트"를 누르면 머티리얼 3개와 스태틱 메시 1개를 확인.
스태틱 메시 에셋을 더블클릭하면 메시 에디터 오픈. 메시에 연결된 머티리얼을 콘텐츠 브라우저에서 선택 후 더블클릭해서 머티리얼 에디터 오픈.
여기서 머티리얼 에디터에서 노드를 제작해보기로.
키보드 1을 입력한 상태로 머티리얼 그래프 빈곳을 클릭하면 노드가 생성됨. 0값 노드를 M_Plastic 노드의 러프니스(Roughness) 에 연결하면 반짝반짝한 머티리얼 확인 가능.
이번엔 텍스쳐를 적용해보기로. 그런지 텍스쳐와 노멀 텍스쳐를 Import 한 뒤에, 머티리얼 에디터에서 T_Plastic_N 노멀 텍스쳐를 드래그 앤 드롭으로 노드르 생성하고, M_Plastic 출력 노드의 Normal 핀에 연결하면 미세한 범프가 적용된 걸 확인할 수 있음.
그런지(Grunge_A) 텍스쳐까지 노드를 생성해서 Roughness 핀에 연결해서 플라스틱 머티리얼은 마무리.
M_Plastic 머티리얼에 이어 M_Metal 머티리얼도 제작해줌. 컬러를 조금 밝게 하고, 1 값 노드를 2개 만들어서 각각 Metalic, Roughness 핀에 연결.
텍스쳐 2개를 Import 해서 Normal 은 Tex Coordinate 노드로 U,V 를 5로 설정해서 노멀을 5배 펴주고, Roughness 는 텍스쳐의 R 채널만 가져다 연결.
다음은 카본(Cabon) 머티리얼 작업.
리소스 폴더에 있는 Ribbing 베이스 텍스쳐와 노멀 텍스쳐를 노드로 생성하고 잘 섞어줌.
다 적용했는데 Vertex Color 노드 적용이 안되는 것 같다. Mesh 에디터로 가서 베이스 메시 리임포트를 눌러주니까 적용되더라.
바닥 만들기
맵에 배치해둔 스피어를 큐브로 바꿀건데, 이건 최근 사용한 액터만 보이더라. 액터 배치 탭에서 큐브를 하나 생성했다가 지우고 난 뒤에 우클릭하면 보인다.
큐브로 교체하고, 스케일을 조절해서 바닥을 만들어줌. 바닥 위에 앞에서 만든 상자를 얹어봄.
물체에 첫 블루프린트 적용
컨텐츠 브라우저에서 Content 폴더 아래에 Elements 폴더를 만들고 Actor 클래스를 상속받는 블루프린트 생성.
블루프린트 컴포넌트 뷰에서 +추가 버튼을 누르고 스태틱 메시 컴포넌트(Static Mesh Component)를 추가. 컴포넌트 디테일 뷰에서 Static Mesh 를 앞에서 만든 상자로 설정. 그리고 피직스 섹션에서 질량(Mass)과 다른 물리 속성을 조정.
왼쪽은 StaticMesh 를 바로 생성해서 피직스 시뮬레이션을 건 오브젝트.
오른쪽은 블루프린트로 생성한 오브젝트. 블루프린트 설정을 공유하기 때문에 일괄적으로 수정하기 용이하다.
다음은 랜드스케이프(지형)
더미 바닥을 삭제하고, 모드를 랜드스케이프 모드로 변경하면 지형을 생성/편집할 수 있음.
디테일 설정은 건들지 않고 일단 "생성" 그럼 지형 브러쉬로 편집할 수 있음.
툴 강도, 브러시 크기, 감쇠 를 이용해서 작업 가능.
지형을 클릭하면 높이고, Shift 키를 누르고 클릭하면 움푹 들어가게.
Shift + 1 : 선택모드
Shift + 2 : 지형모드
지형 머티리얼 생성
Landscape 폴더를 만들고 새 머티리얼을 생성. 머티리얼 에디터로 들어가서 완전 러프(Fully Rough) 를 체크해줌.
다음은 Landscape Layer 노드를 생성. 두 개의 레이어를 생성하고 Sand, Grass 로 수정.
레이어 두 개를 블랜딩 해줄건데, 이번엔 숫자 3키를 누르고 블루프린트 그래프 빈 곳을 선택하면 벡터 노드를 생성할 수 있음. 모래와 풀 색상을 표현하기 위해 적당히 색상을 설정하고 연결.
레벨로 돌아가서, 앞서 만든 랜드스케이프에 머티리얼을 적용. 하면 회색/어둡게 보이는데 랜드스케이프 모드로 가서 수정해줘야 함.
랜드스케이프 모드로 가서 "페인트" 탭으로 이동하면 레이어가 추가된 걸 볼 수 있음. 이 레이어 정보를 저장해주어야 함.
레이어의 우측 + 버튼을 눌러주면 "레이어 인포 생성"을 할 수 있는데, 웨이트 블렌딩된 레이어로 저장. 이걸 저장 해두면 랜드스케이프 모드에서 머티리얼이 적용된 걸 확인할 수 있음.
랜드스케이프에 적용할 텍스쳐 두 장을 추가로 임포트.
일단 레이어 블랜드 노드에 연결해서 바로 확인해보는데, Grass 는 어두운 색이기 때문에 잔디처럼 보이지 않음. 타일링도 월드 좌표에 고정되도록 할 필요가 있다고 함.
먼저 모래 텍스쳐의 타일링을 수정해보기로. 월드 포지션을 얻어와서 타일링을 보정해줄 것. 왼쪽이 보정 정, 우측이 월드 포지션 기준으로 UV 보정하고 타일링 강도를 조정한 텍스쳐.
Component Mask 노드로 값을 선택할 수 있는데, 절대 월드 포지션 노드가 이미 값을 적절히 제공하주고 있기 때문에 안 써도 무관.
이렇게 Grass 쪽 노드도 동일하게 설정한 뒤에, Named Reroutes 노드를 활용해보는 걸로. UE5 에 추가된 기능. 핀끼리 와이어를 연결하지 않아도 값을 명명하여 캡쳐해서 다른 곳에서 사용할 수 있도록 함. 노드 값의 원격 전송. 내부적으로는 임시 변수가 생성되는 것으로 추정.
노드간 와이어(연결)을 끊는 방법은 Alt + Click
알파 선형 보간 노드를 추가할 때는 L 키를 입력한 상태로 블루프린트 빈 공간 클릭.
알파 선형 보간 노드는 우클릭해서 "노드 프리뷰 시작" 상태로 만들어주면 좋음.
머리티얼을 모두 섞었을 때 모습.
다음은 맵에 자연 기물들을 배치해볼 차례.
2편에서 이어짐.
참조
Your First Game In Unreal Engine 5
https://dev.epicgames.com/community/learning/tutorials/e2V/your-first-game-in-unreal-engine-5