본문 바로가기

Unreal

(17)
[Unreal] Lyra 프로젝트 분석 - 05. Input Input Action입력을 받을 시 행동(반환 값 등) Input Mapping Context키 입력과 Input Action을 매핑함 Action에 들어갈 값을 Modifier로 수정 가능 (ex.W 누를 시 y축 양의방향 값) DlkInputActionInputAction과 게임플레이 태그를 묶는 구조체 DlkInputConfigDlkInputAction Array를 들고 있으며 게임플레이 태그로 InputAction을 찾아준다.이동과 같이 기본적인 액션들은 NativeInputAction, 사격이나 스킬 같은 추가 능력 액션들은 AbilityInputAction에 저장된다.PawnData가 들고 있다. InputComponent::BindActionInputAction이 Trigger되었을 때 실..
[Unreal] Lyra 프로젝트 분석 - 04. Camera CameraManager는 PlayerController에 CameraComponent는 Character에 만든다.플레이어 컨트롤러가 다른 캐릭터에게 부착될 수도 있기 때문에 CameraManager을캐릭터에 종속되지 않도록 컨트롤러에 붙이는 것이 합리적이다. CameraMode는 FPS에서 조준을 할 때, 차에 탈 때, 기본 상태에서 시점이 모두 다른데,Lyra에서는 이것들을 모두 각각의 CameraMode로 만들었다. CameraMode들은 스택에 담는다. 그래서 현재 모드와 다음 모드를 보간해 자연스러운 시점 변경을 한다. CameraManager: 실질적으로 보이는 시야를 결정, 출력CameraComponent: 보이는 시야를 찍는 것은 맞는데 정보를 종합해 출력하는 것은 Manager   Ca..
[Unreal] Lyra 프로젝트 분석 - 03. Modular Gameplay Actor GameFrameworkComponentManager이것은 클래스에 컴포넌트를 자유롭게 탈부착하는데 이용한다. 그런데 컴포넌트를 장착할 때 순서가 중요할 수 있다.(예를 들면 종속성)그래서 RegisterInitState 로 초기화 방식을 정할 수 있다. 게임플레이 태그 Spawned, DataAvailable, DataInitialized, GameplayReady 네 가지로 초기화 방식을 정한다.   PawnExtensionComponent폰에 컴포넌트를 붙일 때 중재자 역할을 한다.Tick을 사용하지 않고 델리게이트를 사용해 효율적임다른 폰 컴포넌트들의 관리자기 때문에 보다 먼저 초기화되어야 한다. 언리얼은 무조건 native C++ class가 SCS(블루프린트 클래스)보다 먼저 초기화 되기 때문..
[Unreal] Lyra 프로젝트 분석 - 02. Experience 언리얼 버전 업데이트에 따라 GameMode는 점점 무거워졌고 그것을 대체할 수 있는 것이 Experience다. UserFacingExperience는 프라이머리 에셋으로 Experience의 단위라고 볼 수 있다.FPS모드가 있고 AOS모드가 있다면 모드별로  UserFacingExperience로 정의한다. UserFacingExperience는 Map과 ExperienceDefinition으로 이루어져 있고ExperienceDefinition안에는 PawnData가 있다. PawnData는 어떤 Pawn을 생성하는지, 입력을 어떻게 하는지, 어떤 능력을 사용 가능한지 정보를 갖는다.   Character, PlayerController, PlayerState, GameState 클래스를 만들고 이..
[Unreal] Lyra 프로젝트 분석 - 01. AssetManager Asset Manager은 프라이머리 에셋에 대하여 로딩과 언로딩을 한다. (프라이머리에셋에 대해서는 나중에) 핵심 함수SynchronousLoadAsset(const FSoftObjectPath& ..)동기식으로 로딩한다. 동기: 로딩을 다 하기 전까지 다른 것을 하지 않지만 빠르다. 로딩화면 때 사용됨비동기: 로딩을 하면서 다른 작업과 같이 진행하기 때문에 게임플레이 중 로딩이 필요할 때 사용됨 이 함수는 동기식 로딩 때 문제가 생기는 지 찾기 위해 따로 만든 함수이다. 결국 GetStreamableManager().LoadSynchronous() 함수를 래핑했는데,로딩에 걸리는 시간을 LogTimePtr에 저장하는 것만 추가했을 뿐이다. SynchronousLoadAsset(const FSoftOb..
[Unreal] Unfallen 플레이 영상
[Unreal] BTTaskNode에서 ExecuteTask, TickTask 사용법 BTTaskNode는 Behavior Tree에서 사용된다. BTTaskNode는 ExecuteTask로 한번 실행되고 TickTask는 FinishLatentTask가 실행될 때까지 매 틱마다 실행된다. 함수들은 EBTNodeResult를 반환하고 EBTNodeResult의 종류는 Succeded,Failed,InProgress,Aborted 4가지가 있다. EBTNodeResult::Type UMyBTTask::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { if (!OwnerComp.GetAIOwner()) { return EBTNodeResult::Failed; } //Do logic here return EBTNodeRes..
[Unreal] 카메라 회전 관련 변수 Use Controller Rotation Yaw - 캐릭터의 Yaw가 컨트롤러의 Yaw와 같아진다. Use Controller Desired Rotation - 캐릭터가 컨트롤러 방향으로 회전한다. Orient Rotation to Movement가 이것을 오버라이드한다. Orient Rotation to Movement - 카메라가 바라보는 방향과 상관없이 캐릭터는 캐릭터가 움직이는 방향을 향한다. 그렇다면 컨트롤러 방향에 따라 캐릭터의 회전을 제어하려면 어떻게 해야 할까? 확인하기 위해서 실험을 해봤다. Use Controller Rotation Yaw는 false, Orient Rotation to Movement는 true일 때 캐릭터가 컨트롤러 방향 상관없이 회전한다. 즉, 캐릭터의 회전에는 ..