Unreal Engine - AI (1)
·
Unreal Engine
1. NavMeshBoundVolume1 - 1. OverviewNavMeshBoundVolume은 AI가 움직이는 영역을 정의할 수 있는 범위를 말한다.액터 배치 -> 볼륨 -> 내비메시 바운드 볼륨 해당 볼륨의 특징으로는 기본적인 세팅에서는 동적인 범위 생성이 불가능하다는 점이다.아래와 같이 레벨에 설치 후 단축키 P를 통해서 내비메시가 깔린 범위를 체크할 수 있다. 그러나 게임 플레이 도중, 장애물이나 여러 움직임에 따라 내비메시의 범위를 조절하고 싶다면, Dynamic 설정을 해주어야 한다.프로젝트 세팅 -> 엔진 -> 네비게이션 메시 -> 런타임 -> 런타임 생성디폴트 값으로는 static으로 되어있지만, 동적으로 생성하기 위해서는 dymamic을 선택해주면 된다. 1 - 2. Dynamic 종..
Unreal Engine - 멀티플레이 네트워크 최적화 2
·
Unreal Engine
https://gbleem.tistory.com/166 Unreal Engine - 멀티플레이 네트워크 최적화 11. Recap1 - 1. Server - Client 모델언리얼 엔진은 멀티플레이 게임에서 Server-Client 구조를 사용한다.서버만이 결정을 내리며, Authority를 가진다.클라이언트끼리는 직접 통신하지 않는다.클라이언트에서gbleem.tistory.com위의 글에서 이어지는 내용입니다. 3. Actor Replication Optimization3 - 1. Network Bandwidth 관리네트워크 bandwidth는 한정된 자원이기 때문에, 항상 중요한 정보는 놓치지 않고 불필요한 데이터는 줄이는 과정이 필요하다3 - 1 - 1. Relevancy"액터"가 "클라이언트"에게 ..
Unreal Engine - 멀티플레이 네트워크 최적화 1
·
Unreal Engine
1. Recap1 - 1. Server - Client 모델언리얼 엔진은 멀티플레이 게임에서 Server-Client 구조를 사용한다.서버만이 결정을 내리며, Authority를 가진다.클라이언트끼리는 직접 통신하지 않는다.클라이언트에서 진행한 행동을 서버로 보내면, 서버는 해당 행동을 처리하고 그 결과를 다시 클라이언트로 보낸다.1 - 2. Gameplay Framework게임모드와 게임 스테이트는 서버에서 해당 로직을 체크한다.게임 스테이트는 게임 모드는 서버에만 있기 때문에, 게임모드의 결과를 가져와서 리플리케이트 하여 가지고 있게 된다.게임 스테이트를 통해서 게임모드의 결과값을 클라이언트에게 전해준다.플레이어 컨트롤러는 서버, 그리고 소유하는 클라이언트에만 존재한다.플레이어 컨트롤러가 실행한 결과..
UE5 Issues - 리슨 서버 게임 이슈들
·
Unreal Engine
1. 호스트의 권한게임 시작 버튼을 Host만 누를 수 있게 하고 싶어서 아래와 같은 로직을 생각하게 되었다.처음에 시작 버튼을 Hidden 한 상태로 시작한다.해당 UI를 가지고 있는 owning actor를 찾아서HasAuthority() 함수를 통해 서버인지 확인하고 서버라면, 버튼이 Visible 한 상태로 바꿔주는 작업을 해준다.또한, 버튼이 눌러지지 않도록 disable 상태로 만들어 준다.다음으로는 게임모드가 가진 상태에 따라서 UI의 실행 상태를 정해주는 로직을 구성했다.리슨 서버이기 때문에 HasAuthority 체크 후 UGameplayStatics::GetGameMode를 통해서 게임모드를 가져온 후해당 변수르 Tick에서 체크하여 true인 경우, 버튼을 활성화 시켜준다. 궁금증UI..
Unreal Engine - 멀티캐스트 델리게이트
·
Unreal Engine
0. 델리게이트델리게이트 공식 문서 언리얼에서의 사용특정 상황이 발생했을 때 다른 객체에게 알려주기 위해서 사용환다.예를 들어,캐릭터의 체력이 0이 되었을 때 UI와 게임모드, 사운드 등에서 한 번에 반응을 할 때 사용할 수 있다.캐릭터가 체력과 관련된 델리게이트 변수를 가지고 있고, 이 변수를 체력이 0이 될때 BroadCast 하면UI나 게임모드 등 다른 부분에서 바인딩 한 모든 함수들을 동시에 실행할 수 있다.예시//character.hDECLARE_MULTICAST_DELEGATE(FDeathDelegate);...public: void TakeDamage(float Damage); UPROPERTY() FDeathDelegate DeathDelegate; //characte..
Unreal Engine - 데디케이티드 서버 7 (동기화 2)
·
Unreal Engine
캐릭터의 체력을 UI와 연동하는 시스템 구현하기 1. 액터 컴포넌트 동기화1 - 1. 세팅새롭게 생성한 파일Status Component캐릭터의 체력을 set하고 get하는 함수들 존재멀티캐스트 델리게이트를 통해 변수 생성HPWidgetText를 setting 하는 함수와해당 UI의 Owner에 대한 정보를 가진 변수와 해당 변수를 가져오는 함수 존재UPROPERTY(VisibleAnywhere, BlueprintReadOnly)TObjectPtr OwningActor;HPTextWidgetComponent연결된 widget을 가져와서 Owner를 통해 초기화 진행위젯 컴포넌트의 역할?수정한 로직PlayerCharacterStatus Component와 HPTextWidgetComponent 변수 추가 ..
Unreal Engine - 데디케이티드 서버 6 (동기화)
·
Unreal Engine
1. 캐릭터 걷기 및 점프 동기화코드더보기//animinstance.h#pragma once#include "CoreMinimal.h"#include "Animation/AnimInstance.h"#include "DXAnimInstanceBase.generated.h"class UCharacterMovementComponent;UCLASS()class SCC_DEDICATEDX_API UDXAnimInstanceBase : public UAnimInstance{ GENERATED_BODY() public: virtual void NativeInitializeAnimation() override; virtual void NativeUpdateAnimation(float DeltaSeconds) overr..
Unreal Engine - 데디케이티드 서버 5 (RPC, Replication)
·
Unreal Engine
https://gbleem.tistory.com/152  Unreal Engine - 데디케이티드 서버 4 (RPC)1. RPC 개념https://gbleem.tistory.com/140#6.%20RPC-1-5 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST 역할을 하는 서버용gbleem.tistory.com이어지는 글 입니다. 1. NetMulticast RPC vs Replication1 -1. overview게임에서 리플리케이션 된 액터가 있을때, 이 액터의 속성이 서버에서 수정된 경우를 생각해보자넷 멀티캐스트 RPC를 통해서 서버 + 모든 클라이언트에게 변경된 값을 알려주거나프로퍼티 리플리케이션을 ..
Unreal Engine - 데디케이티드 서버 4 (RPC)
·
Unreal Engine
1. RPC 개념https://gbleem.tistory.com/140#6.%20RPC-1-5 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST 역할을 하는 서버용 컴퓨터가 존재 (클라이언트 역할도 수행)GUEST 역할을 하는 클라이언트용 컴퓨터가 존재gbleem.tistory.com자세한 내용은 위의 글 참고 (리마인드)RPC는 함수를 호출하는 PC와 해당 함수의 로직이 실행되는 PC를 다르게 하기 위해서 사용하는 통신 기법 RPC의 용도액터의 기능에는 큰 영향을 미치지 않는 일시적인 효과에 주로 사용된다.게임 이벤트나 사운드, 파티클 재생중요한 로직은 프로퍼티 리플리케이션 써야한다.RPC에서 중요한 것 ..
Unreal Engine - 데디케이티드 서버 3 (Property Replication)
·
Unreal Engine
아래 글에서 이어지는 내용 https://gbleem.tistory.com/148#4.%20Replication-1-3 Unreal Engine - 데디케이티드 서버 21. 로그를 통한 흐름 분석1 - 1. 로그인 흐름 분석GameModeBase와 PlayerController에서 로그를 찍어보면 아래와 같이 정리해볼 수 있다.맨 처음 네모는 서버에서만 생성되는 GameMode 로직이다.아래 네모는 Cgbleem.tistory.comReplicationFrequencyRelevancyNetPriorityNetDormancy1. Relevancy (연관성)1 - 1. 개념레벨에 있는 모든 액터의 정보를 모든 클라에게 실시간으로 전송하는 것은 부하가 매우 클 것이다.이 부하를 줄이기 위해서 "클라이언트의 커..