반응형

분류 전체보기 136

[UE5] PlayerState, PlayerController의 Replicate 시점

1. 서버에서는 PossessedBy 호출되면 Pawn에 Controller 및 Controller의 PlayerState 둘 다 세팅되어서 유효함 2. 클라에서도 PlayerState가 Replicate 되면 OnRep_PlayerState, Controller가 Replicate되면 OnRep_Controller 가 각각 호출된다. 문제는 이 두 함수의 순서가 보장이 안된다. 따라서 PlayerState, Controller가 확실하게 유효할 때 접근해서 사용하기 위해 각각의 함수에서 InitAbilityActorInfo(아니면 아래 출처의 블로그처럼 RefreshAbilityActorInfo)를 호출해주는 게 좋다 https://vorixo.github.io/devtricks/gas-replicat..

공부/UE 2025.10.14

[UE] GAS in Multiplayer Game

게임 모드는 서버에서만 있다. 클라에서 접근하면 nullptr를 반환서버에선 모든 클라의 Player Controller를 갖고 있고 각자 클라는 각자 Player Controller의 local version을 갖고 있다서버에선 모든 클라의 Player State를 갖고 있고 클라는 본인 것 포함 다른 클라의 Player State의 local version을 갖고 있다서버에서 모든 Pawn을 다 갖고있고 각자 클라도 마찬가지로 모든 Pawn의 local version을 갖고 있다각자 클라는 본인의 HUD와 Widget만들 갖고 있다서버에서 바뀐 변화를 클라에게 뿌려주는것을 Replication이라고 한다Replication은 서버->클라 한 방향으로만 가능하다

공부/UE 2025.10.03

[UE] Rotation

Orient Rotation to Movement“Pawn/Character를 이동 입력 방향으로 자동 회전시키는 기능”Controller 회전을 바꾸는게 아님Use Pawn Control Rotation Spring Arm, Camera 두 컴포넌트 모두에 Use Pawn Control Rotation 옵션이 있다.여기서 Control Rotation은 캐릭터가 바라보는(=카메라) 시야 Spring Arm의 Use Pawn Control Rotation- Spring Arm의 회전이 Pawn의 Control Rotation을 따라 갈 것 인지Camera의 Use Pawn Control Rotation- Camera의 회전 이 Pawn의 Control Rotation을 따라 갈 것 인지 Spring Ar..

공부/UE 2025.10.03

[UE] 입력을 매핑하는 과정

1. Input Action 만들기 2. Input Mapping Context 만들기아까 Input Action을 만든 이유는 Input Mapping Context에 Mapping해주기 위함이다 3. UEnhancedInputLocalPlayerSubsystem에 내가 만든 InputMappingContext 연결해주기UEnhancedInputLocalPlayerSubsystem는 언리얼에서 제공하는 Subsystem의 일종이다(https://welikecse.tistory.com/193) 4. InputComponent에 내가 원하는 동작에 대한 함수를 바인딩InputComponent는 Player Controller 클래스가 멤버로 갖고 있다InputComponent를 냅다 자식 클래스인 UEn..

공부/UE 2025.10.03

[UE] FString, TCHAR

TCHAR LogCharArray[] = TEXT("Hello Unreal"); FString LogCharString = LogCharArray; UE_LOG(LogTemp, Log, TEXT("%s"), *LogCharString);UE_LOG 마지막에 인자에는 왜 FString타입에서 *operator로 한 번 더 접근해야할까.코드를 타고 들어가보면 결국 위에서 %s에 해당하는 인자는 TCHAR* 타입을 넘겨야하는걸 알 수 있다. 그럼 FString에서 * operator로 한 번 접근하면 TCHAR*라는 말인가? DataType 이라는 타입은 여기서 TArray 타입(TArray → ElementType = TCHAR)따라서 GetData()의 반환 타입은 TCHAR*

공부/UE 2025.09.24

[UE] AttributeSet을 생성만 해줘도 자동으로 ASC가 인식하는 이유

ChatGPT에게 이런식으로 CDO 영역에 Actor가 AttributeSet를 생성만 해줬는데 어떻게 ASC가 이를 인식하고 적용한 지 물어봤고 아래는 그에 대한 답변이다 좋은 포인트 짚으셨어요 👍UAbilitySystemComponent::InitializeComponent 시점에서 AttributeSet들이 자동으로 ASC(AbilitySystemComponent)에 붙는 이유를 단계별로 설명드릴게요.1. AttributeSet은 UObjectUAttributeSet은 UObject 기반이라서, 보통 UAbilitySystemComponent의 DefaultSubobject 또는 Owner의 Subobject로 만들어집니다.즉, ASC가 소유한 액터(보통 ACharacter, AActor 등)에 ..

공부/UE 2025.09.20

[UE] 각종 Ability가 GAS의 ActorInfo에 접근할 수 있는 이유

GetAbilitySystemComponentFromActorInfo_Checked() 함수는 CurrentActorInfo를 통해 AbilitySystemComponent에 접근할 수 있다. 그럼 CurrentActorInfo는 언제 세팅된건지 파악해보면 게임 시작 직후에 Player가 빙의될 때, AbilitySystemComponent가 블프로 세팅한 각 어빌리티들에 대해 GiveAbility를 호출해주고 있다. 이때 FGameplayAbilitySpec타입의 FGameplayAbilitySpec을 전달해준다 코드를 타고 들어가다보면 UAbilitySystemComponent::OnGiveAbility 내에서 각 어빌리티들에게 자신이 갖고 있는 AbilityActorInfo를 넘겨준다. 그럼 AS..

공부/UE 2025.09.20
반응형