Make Unreal REAL.
article thumbnail
생명 주기 함수들의 호출 순서
Unreal Engine/고찰 2023. 4. 1. 10:51

액터 말고도 플레이어 컨트롤러의 OnPossess(), 게임 모드의 PostLogin() 등의 호출 순서도 이해하기 위해 많이 쓰이는 생명 주기 함수들을 구현해 직접 실험해봤다. 결과 메모리에 월드 로드 오디오 장치 초기화 GameMode::OnConstruction() 플레이를 위해 월드 가져오기 GameMode::PreInitializeComponents() 호출 GameState::OnConstruction() GameState::PreInitializeComponents() GameState::PostInitializeComponents() GameMode::PreInitializeComponents() 종료 GameMode::PostInitializeComponents() 월드 가져오기 완료 온..

article thumbnail
Network Role

Unreal Engine 5 C++ Multiplayer Shooter 멀티 플레이어 게임에서 한 캐릭터의 역할(ENetRole)에는 총 3개가 있다. ROLE_AutonomousProxy 로컬 머신에서 조작중인 캐릭터 ROLE_Authority 서버에 존재하는 캐릭터 ROLE_SimulatedProxy 다른 클라이언트 머신에서 Replicated 된 캐릭터 ROLE_None 특별한 역할이 없다. 캐릭터 위에 역할을 표시할 위젯을 생성한다. 언리얼 엔진 5.1+ 버전부터는 OnLevelRemovedFromWorld() 함수 대신, NativeDestruct() 함수를 오버라이드 하도록 한다. 레벨을 이동할 때 뷰포트에서 위젯을 제거하도록 한다. 우선은 내 머신을 기준으로 하는 Local Network R..

article thumbnail
Seamless Travel

Unreal Engine 5 C++ Multiplayer Shooter Non-Seamless Travel 클라이언트는 레벨을 이동할 때, 연결이 끊어졌다가 다시 같은 서버에 연결된다. 연결이 끊겼다가 재연결되기 때문에, 서버 연결 문제나 최대 인원 수 초과 등으로 인해 재연결이 불가능할 수도 있다. 레벨을 처음 로드할 때 발생한다. 서버에 처음 연결할 때 발생한다. 멀티 플레이어 매치가 끝난 후 새로운 게임이 시작할 때 발생한다. Seamles Travel 레벨을 이동할 때 연결이 끊기지 않으므로 유저에게 매끄러운 경험을 제공할 수 있다. 재연결과 관련된 문제를 피할 수 있다. 사용하기 위해서는 Transition 레벨이 필요하다. 많은 메모리를 차지하는 레벨에 있을 때 그 레벨에 있는 상태에서 또 큰..

article thumbnail
애니메이션 적용

Unreal Engine 5 C++ Multiplayer Shooter NativeInitializeAnimation() 함수는 애님 인스턴스에서 BeginPlay() 함수와 같은 역할을 한다. NativeUpdateAnimation() 함수는 Tick() 함수와 같은 역할을 한다. UAnimInstance::TryGetPawnOwner() 함수를 통해 애님 인스턴스를 사용 중인 폰을 가져올 수 있다. Speed 변수는 Z축을 제외한 XY 속력을 기준으로 한다. UCharacterMovementComponent::GetCurrentAcceleration() 함수는 현재 가속도를 FVector 타입으로 반환한다. 방향 키를 누르는 동안에는 0이 아니고, 떼면 0이 된다. 애님 그래프는 다음과 같다. Jum..

article thumbnail
캐릭터 카메라와 이동

Unreal Engine 5 C++ Multiplayer Shooter 웅크리기 기능을 사용할 때 캡슐의 크기가 작아지기 때문에, 스프링 암이 함께 이동하지 않게 하기 위해 메시에 부착한다. 보통 스프링 암은 루트 컴포넌트(캡슐)에 붙인다. USpringArmComponent::SocketName은 스프림 암의 끝에 붙어 있는 소켓이다. Project Settings에서 키 입력을 매핑한다. 바인딩할 함수들은 자식에서 접근할 수 있도록 protected 섹션에 구현한다. GetActorForwardVector() 대신 Controller->GetControlRotation() 함수를 사용한 이유는, 액터의 방향이 아닌 컨트롤러의 방향으로 이동하고 싶기 때문이다. 각 함수의 Direction은 컨트롤러의 ..

article thumbnail
C++ 클래스 생성 후 컴파일 실패
Unreal Engine/오류 2023. 3. 30. 15:37

가끔 새로운 C++ 클래스를 생성한 후 컴파일이 실패할 때가 있다. VS를 열어보면 include 구문에 문제가 있다고 표시된다. C++ 클래스를 생성할 때 Character 폴더를 추가했기 때문이다. .h 헤더 파일과 .cpp 소스 파일이 이미 같은 폴더에 있는데, Character라는 폴더에서 헤더 파일을 찾고 있기 때문이다. 헤더 파일 경로를 수정해주면 된다.

검색 태그