Overview
+) 4.20버전으로 진행하였습니다.
언론데브에 유료 강좌 배틀그라운드 만들기 11~14강를 보고 정리한 내용입니다.
시작하기
프로젝트 생성
3인칭 시점으로 프로젝트를 생성해줍니다.
프로젝트 세팅
- Packaging 설정
Blueprint Nativization Method
를 Inclusive
로 변경하면, 블루프린터로 작성한 내용을 C++ 코드로 변환해서 패키징 됩니다.
C++로 만들어진 코드가 성능적인 측면에서 더 퀄리티가 높다고 하네요.
- Light Render 설정
Rendering
에 Allow Static Lighting
을 False
로 체크해줍니다.
8k 맵을 생성할 예정이라, 해당 옵션을 켜 놓을 경우 렉이 많이 걸릴 수 있습니다. 제껀 컴이 좋지 않아서..
랜드스케이프 작업하기
Map 생성하기
Maps
폴더를 생성하고 Level
을 생성하여 Jungle
이라는 이름으로 변경해줍니다.
Lighting 세팅
- 태양 만들기
- 우측 상단에 Lighting 폴더를 만들어줍니다.
Directional Light
를 가져와Sun
으로 이름을 변경하고,Rotation Y 값
을-70
으로 수정해줍니다.Mobility
옵션을Movable
로 변경합니다.
-70도는 정오의 태양 각도를 표현하기 위함입니다.
- 하늘 생성하기
sky
를 검색하여BP_Sky_Sphere
를 가져와Sky
로 이름을 변경한 다음Lighting
폴더에 넣습니다.Directional Light Actor
에 방금 만들어 놓은Sun
으로 변경해줍니다.
Sun
의 각도를 변경할 때마다Directional Light Actor
를 재설정 해줘야 합니다.
- 자연스러운 그림자 만들기
Sky Light
를 불러오면 자동으로Sky
에 설정에 따라 빛이 생기며, 자연스러운 그림자를 만들어 냅니다.- Recapture 기능은
Sun
의 변화에 따라 다시 세팅하기 위해서Sun
이 수정되고 나면 한번씩 눌러줘야 합니다.
- 카메라의 HDR(High Dynamic Range)효과 없애기
Heightmap 생성하기
- Heightmap 이란?
Heightmap은 검정색과 힌색으로 이뤄져있으며, 지형의 높낮이를 나타낸 이미지입니다. 검정색이 제일 낮은 곳을 의미하며, 흰색이 제일 높은 곳을 의미합니다.
- Instant Terra 설치
- 링크에서 Free Trial 버전으로 설치해줍니다.
- Free Trial 버전은 한달간 무료로 사용가능한 것으로 보입니다.(아마도..)
- 마스킹 이미지 만들기
- 8161 X 8161 사이즈의 파일을 생성해 간단한 마스킹 이미지를 만들어줍니다.
- PNG 파일로 저장합니다.
- 지형 만들기
Perlin noise
노드에서 가로, 세로의 길이를 8161 X 8161로 변경합니다.Apply color ramp
와Color ramp
노드를 사용해서 바다와 지형을 나눌수 있습니다.Import mask
노드를 사용해 가져온 마스킹 이미지를Sum Using Mask
노드를 통해 기존에 지형과 합쳐줍니다.Cone
은 일부 지형을 원불형태로 돌출시키기 위함이며,Scale&offset
노드를 사용해 전체적인 지형의 높낮이를 선택할 수 있습니다.Apply curve
와Smooth
노드를 사용해 지형을 평평하게 만들어줍니다.- 마지막으로
Export terrain
노드를 사용해 Heightmap을 추출합니다.
저장은 16비트 PNG로 해야합니다.
Landscape 생성
- 지형 생성하기
- 좌측 상단에
Modes
를Landscape
로 변경해줍니다. Import form File
을 선택하고, 저장해논 Heightmap을 불러옵니다.- 해상도를 맞추기 위해 하단에
Fit to Data
를 누르고Import
를 통해 지형을 생성합니다.
주의사항으로 실제 Instant Terra에서 가져온 이미지의 최대 최소와, 언리얼 엔진에서 나타내는 최대 최소 높이가 다르기 때문에, 가져올때
Scale Z
값과 해수면 높이에 맞는Location Z
값을 적용해주어야한다.
+) 계산법
- Scale Z 계산 = [(실제 지형의 최대 높이 - 최소 높이) / 512] X 100
-
Location Z = [(실제 지형의 최대 높이 - 최소 높이) / 2 - 실제 지형의 최소 높이] X 100
- 해수면 만들기
- 평면 액터 추가하고
Ocean
으로 이름을 변경합니다. - Location 값을 (0, 0, 0) 으로 변경하고, Scale은 x, y를 10000으로 변경합니다.
색 칠하기
지형 입히기
- Textures 가져오기
- Textures 폴더와 Materials 폴더를 생성해주세요.
- Textures 폴더에서
Import
버튼을 눌러 Texture들을 가져옵니다.
- Material 생성
- Materials 폴더에서
M_Jungle
이라는 Material을 생성해주세요. - Texture를 불러와 세팅을 해줍니다.
이쪽은 잘 모르겠네요 ㅠㅠ 그냥 따라했습니다.
- Material 적용하기
- 생성한 Material을 Landscape 속성 중
Landscape Material
로 드래그 하여 적용시켜줍니다. - Paint 메뉴에서 Layers에 Material들이 추가된 것을 확인 할 수 있습니다.
- Layer 우측에 + 버튼을 눌러서 가중치 정보를 저장하는
Layer Info
를 생성합니다. (Nomal로 생성) Layer Info
가 생성되면서 자동으로 폴더가 만들어집니다.
바다 색 입히기
- Material 생성
- Materials 폴더에서
M_Ocean
이라는 Material을 생성합니다. M_Ocean
의Blend Mode
를Translucent
로,Lighting Mode
를Surface TranslucencyVolume
으로 변경하고,Screen Space Reflections
옵션을 켜줍니다.- Depth Fade를 사용해 Opacity를 사용해 투명도를 조절해줍니다.
- 물결 무늬를 UV 애니메이션을 통해 물결치는 애니메이션을 구현합니다.
- 1.333의 굴절율을 줘서 바다 속에 굴절을 줍니다.
M_Ocean
X, Y Scale을 100000, 100000 으로 변경합니다.
- Fog 생성
- Exponation Hight를 추가하고, Location 값을 수정합니다.
Fog Density
를 0.01,Fog Height Falloff
를 0.08,Start Distance
를 20000으로 수정합니다.M_Ocean
속성 중Apply Fog Per Pixel
옵션을 선택합니다.
중간에 지형이 좀 이상한거 같아서 수정했습니다.
하늘 디테일 수정
Cloud opacity
를 1.2로 수정합니다.Cloud speed
를 2로 수정해주세요.
결과물
-
게임 실행 모습
-
전체 맵