기본 콘텐츠로 건너뛰기

250328 Landscape 2, 기본 게임 요소

Foliage

Density/1Kuu : 10m내의 범위에 얼마나 많이 심을 것인가

Radius : 다른 Foliage로부터 최소 얼마만큼 거리를 벌릴 것인가.

Scale X : Foliage의 크기 최소 최대

Z offset : 땅으로부터 위아래 거리

Align to Normal : 땅의 노말(경사)에 따라 설치할 것인가

Cast Shadow : 그림자 설정

Collision Presets : 충돌 연산할 것인가 아닌가


풀과 같은 Foliage 예시

브러쉬 사이즈를 최대로 한번 클릭한다는 생각으로 만든다.

이후에 호수나 풀이 자라지 않는 부분을 Erase한다.

Density : 너무 많지도 적지도 않게

Radius : 거의 건들지 않아도 됨.

Scale X : 플레이어 캐릭터의 크기와 비교해서 작게

Z Offset : 땅에 딱 붙어야 하므로 0

Align to Normal : 상대적으로 위로 뻗는 형태는 끄고, 잡초류는 설정

Cast Shadow : 끄거나 Dynamic Shadow를 꺼준다.

Collision : 충돌하면 안되므로 No Collision


나무와 같은 Foliage 예시

주로 설치되야 하는 곳은 산 평지는 적절하게 배치한다.

Density : 많이 설치되면 안되므로 1또는 그 이하

Radius : 나무가 서로 붙지 않게 1000이상 정도는 넘게

Scale X : 너무 커지지 않게 주의

Z Offset : 더 깊숙히 들어간 느낌을 줘도 되므로 적당히 조절

Align to Normal : 상대적으로 위로 뻗는 형태는 끄고, 잡초 류는 설정

Cast Shadow : 표시해야 함

Ground Slope : 지나치게 경사진 곳은 나무가 없음. 최대 30~45로 설정

Collision : 나무는 비교적 큰 물체이므로 Block All설정.


Foliage의 경우 동일한 위치에 풀과 나무가 생성되는 등의 문제가 생길 수 있다.

이를 보완하기 위해 PCG를 사용한다.


Splines

Ctrl + 마우스 왼쪽 클릭으로 만든다.

Segments :  클릭하면 모든 Splines가 선택된다.

우측에 Spline Meshes 에 +를 누르고, Mesh에 길 메티리얼을 넣어서 길을 만들 수 있다.

Segments를 클릭한 후, All Splines를 클릭하면 길에 맞게 Landscape가 변형되어진다.


Scale y값을 조정하면, 기본적인 길의 범위를 조절할 수 있다.

선택한 후에 z축을 올린 후, All Splines를 클릭하면 길에 맞게 언덕을 만들 수도 있다.


각각의 Segments 는 아이콘을 눌러서 선택할 수 있다.

Half-Width : 값을 조정하면 중심으로부터 좌우 범위가 늘어남

Falloff 또한 적절하게 설정해서 어울리게 만들 수 있다.



Widget Blueprint
오른쪽 클릭 - userinterface - widget blueprint
widget blueprint는 말 그대로 화면상에 띄워놓는 UI를 말한다.
기본적으로 Canvas Panel이 가장 선행되어야 한다.




Widget을 표시하는 방법
Create User Widget Widget : 위젯을 생성한다. 해당 클래스를 넣어주면 됨.
Add to Viewport : 만든 위젯을 뷰포트에 표시한다.

Widget을 없애는 방법
앞서 Create User Widget Widget에서 Widget을 변수로 저장한다. 그리고
Remove from Parent를 사용하면 뷰포트에서 떼어 낼 수 있다.


UI 조작 중에는 마우스를 표시해야 하고, 플레이어의 카메라가 돌아가면 안된다.
1. Set Mouse Cursor Widget을 통해 마우스의 표시 여부를 결정한다.
2. Set InputMode Game And UI를 통해 UI가 조작되는 중에 화면이 회전하지 않도록 한다.

UI조작에서 다시 게임플레이로 돌아간다면,
1. Set Mouse Cursor Widget을 False로 해서 마우스의 표시 여부를 결정한다.
2. Set InputMode Game Only를 통해 화면이 회전되도록 한다.

Button
Normal : 기본상태
Hovered : 마우스 커서가 위에 존재할 때
Pressed : 마우스 버튼을 누를 때
우측 상단에서 Desinger와 Graph를 변경할 수 있다.

우측 아래에서 이벤트를 추가하거나 Graph에서 추가할 수 있다.


Open Level : 해당 레벨로 넘어간다.


Level Blueprint
레벨 자체가 가지고 있는 블루프린트


Text
Anchors : 앵커 위치
Size To Content : 콘텐츠 크기에 맞춤. 텍스트의 경우 텍스트 크기에 맞춤.
Zorder : 화면상 앞인가 뒤인가

Content - Text : 말그대로 표시할 텍스트
Font Family : 폰트 설정
Typeface : 진하게, 기울이기 등의 설정이 있다면 가능
Size : 사이즈
Letter Spacing : 글자 간격
Font Material : 폰트에 애니메이션 효과 등을 넣을 경우 사용
Outline : 테두리 외곽선
Shadow : 글자 그림자
Justification : Size To Content가 체크 되어 있지 않을 때, 정렬 방식


사운드
Volume : 소리 크기
Loop : 반복 여부

Play Sound 2D : 위치와 상관없이 소리 재생. 배경음악 등에 사용.

Game Mode
Player Controller : 캐릭터의 움직임을 담당
HUD : Head Up Display 조준선 등. 주로 Widget을 사용해서 잘 사용안함.
Default Pawn : 기본이 되는 폰/캐릭터
Player State Class : 점수, 킬, 데스 등의 정보를 관리, 네트워크
Game State Class : 게임 시간, 네트워크
Spectator Class : 캐릭터 빙의에서 벗어난 상황. F8

플레이 중 Shift + F1 : 마우스 탈출,Outliner등 게임 

🎄🖼️참고

랜드 스케이프 생성
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/creating-landscapes-in-unreal-engine

랜드 스케이프 페인트 모드
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/landscape-paint-mode-in-unreal-engine

폴리지 모드
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/foliage-mode-in-unreal-engine?application_version=5.5


PCG 프로시저러 콘텐츠
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/procedural-content-generation--framework-in-unreal-engine

게임 모드
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/game-mode-and-game-state-in-unreal-engine?application_version=5.5

플레이어 컨트롤러
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/player-controllers-in-unreal-engine?application_version=5.5

이 블로그의 인기 게시물

250523 PCG 2

PCG Building Volume Sampler를 사용할 경우 Voxel Size를 맞추어주자. 2m길이를 Transform Points로 Offset을 이동시켜 Difference를 통해 메쉬를 생성한다. 사용시에 Pivot의 위치가 중앙이 아니면 제대로 표현되지 않을 것이다. PCG Landscape Landscape 생성후 PCG Volume 생성. Get Landscape Data - Surface Sampler 안보인다면 Generate Surface Sampler 일반 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다. 이 노드에는 다음과 같은 옵션이 있습니다. 포인트 규모(Point Extents) : 서피스의 기본 그리드 셀 크기를 정의합니다. 여유(Looseness) : 변형 가능한 셀 크기를 정의합니다. 실제로 셀 크기는 포인트 규모 * (1 + 여유)입니다. 제곱미터당 포인트(Points Per Square Meter) : 유지되는 셀의 비율을 계산합니다. 이 프로퍼티는 그리드가 클 때 과잉을 제한합니다. Looseness : 기본 1. 0일경우 Extent의 길이 만큼, 1일경우 2배가 됨.  Attribute Filter를 생성하고, Material에 해당하는 Layer를 찾아서 이름을 넣어준다. Type을 Float로 하고 Float Value를 설정하면, 해당 머티리얼이 색칠된 정도 0~1에서 Operator에 의해 >(초과) 0.6초과 일 경우만 생성되게 할 수 있다. 값을 1로 하고 Equal을 이용해서 1인 경우만 생성되게 하는 것도 가능하다. plugin Water body lake를 넣으면, 이또한 Spline이라는 것을 알 수 있다. 따라서 Get Spline Data-Spline Sampler를 통해 사용할 수 있다. GetActorData와 Difference를 통해서 Lake내부를 제거해주기 PCG Mesh Mesh Sampler를 쓰기위해 Get Actor Property를 이용하면, 해당 액터가 ...

250604 저장불러오기

SaveGame 블루프린트 생성 Game Instance 생성, Init 오버라이드 AC_Inventory Save Load

250609 온라인

 Online Subsystem외에도 어느 서버를 사용할 것인지에 따라 플러그인을 추가해주어야 한다. 공통으로 OnlineSubsystem으로 시작한다. 헤더파일 CPP파일 cmd에서 Ipconfig를 통해 Ipv4를 넣어주면 된다. DefaultEngine.ini 수정 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/online-subsystem-steam-interface-in-unreal-engine#%EC%99%84%EC%84%B1%EC%84%B8%ED%8C%85 [/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 bInitServerOnclient=true [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection" 전용 서버 없이 클라이언트가 서버를 만들 수 있게 함. 호스팅 Binaries와 Saved파일을 한번 제거해주고, Generate해주기 헤더파일 헤더파일 CPP 파일 CreateSessionComplete, FindSessionsComplete, JoinSessionComplete 생성자 CreateGameSession 세션을 생성하고 존재하면 제거한다. OnCreateSessionComplete ServerTrav...