https://dev.epicgames.com/documentation/ko-kr/unreal-engine/gameplay-ability-system-component-and-gameplay-attributes-in-unreal-engine?application_version=5.3

 

언리얼 엔진의 게임플레이 어빌리티 시스템 컴포넌트 및 게임플레이 어트리뷰트를 살펴봅니다.

게임플레이 어트리뷰트 및 어트리뷰트 세트와 함께 어빌리티 시스템 컴포넌트를 사용하는 방법을 살펴봅니다.

dev.epicgames.com

  • UGameAbilitySystemComponent는 Actor와 GAS 사이의 가교 역할을 한다.
  • GAS와 상호작용해야 하는 Actor는 다음 2가지 조건 중 하나를 반드시 만족해야 한다.
    • Ability System Component(이하 ASC)를 가지고 있거나
    • 다른 Actor의 ASC에 Access 할 수 있거나.
  • ASC는 FGameplayAbilitySpecContainer ActivatableAbilities 중 승인된 Gameplay Abilities를 가지고 있다.
  • 언제나 ActivatableAbilities.Items를 통해 iterate를 하려 한다면,
    List의 변화를 막기 위해 ABILITY_SCOPE_LOCK()을 반복문 앞에 추가해 Lock을 걸어야 한다.
  • 매 ABILITY_SCOPE_LOCK() 호출 범위마다 AbilityScopeLockCount가 증가하고,
    그 범위를 벗어나면 AbilityScopeLockCount가 감소한다.
  • ABILITY_SCOPE_LOCK() 호출 범위 내에서 Ability를 제거하지 말 것.
    • List가 Lock이 걸려 있으면 AbilityScopeLockCount를 확인하여 제거를 방지한다.

기본 요구사항

  • Actor가 Game Ability System를 사용하려면 다음 2가지를 충족해야 한다.
    • IAbilitySystemInterface 구현
    • GetAbilitySystemComponent 함수 override
  • Actor가 자체 ASC를 가지고 있는 것이 일반적이다.
  • 하지만 다른 Actor가 소유한 ASC를 사용하려는 경우가 있다.
    • Player의 Pawn/Character가 소환/소멸 되거나 처리할 때 리셋되면 안되는 것들이 포함되어 있기 때문.

Replication Mode

  • ASC는 GameplayEffects, GameplayTags, GameplayCues에 대해 3가지 Replication Mode를 제공한다.
  • Attributes는 속한 AttributeSet에 의해 Replicate된다.

Full

  • Single Player에서 사용
  • 모든 GameplayEffects가 모든 Client에 Replicate된다.

Mixed

  • Multiplayer에서 유저가 Control 하는 Actor
  • GameplayEffects가 소유한 Client에게만 Replicate된다.
  • GameplayTags와 GameplayCues만 모두에게 Replicate된다.

Advanced

  • 이 Mode에서 OwnerActor의 Owner가 Controller가 되는 것을 권장한다.
    • PlayerState의 Parent는 기본적으로 Controller이지만, Character는 그렇지 않다.
    • OwnerActor가 PlayerState가 아닌 상태에서 Mixed Mode를 사용하는 경우, 
      SetOwner() 함수를 호출해 OwnerActor를 Controller로 명시해야 한다.
    • 4.24 버전 이후(현재)에는 PossessedBy() 함수로 Owner를 Controller로 지정한다.

Minimal

  • Multiplayer에서 AI가 Control 하는 Actor
  • GameplayEffects가 어디에도 Replicate 되지 않는다.
  • GameplayTags와 GameplayCues만 모두에게 Replicate 된다.

예시

 

GitHub - tranek/GASDocumentation: My understanding of Unreal Engine 5's GameplayAbilitySystem plugin with a simple multiplayer s

My understanding of Unreal Engine 5's GameplayAbilitySystem plugin with a simple multiplayer sample project. - tranek/GASDocumentation

github.com

ASC가 Actor에 있는 경우

  • 더보기
    AGDPlayerState::AGDPlayerState()
    {
    	// Create ability system component, and set it to be explicitly replicated
    	AbilitySystemComponent = CreateDefaultSubobject<UGDAbilitySystemComponent>(TEXT("AbilitySystemComponent"));
    	AbilitySystemComponent->SetIsReplicated(true);
    	//...
    }

     

    class APACharacterBase : public AActor, public IAbilitySystemInterface
    {
    	//~ IAbilitySystemInterface 시작
    	/** 어빌리티 시스템 컴포넌트를 반환합니다. */
    	virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
    	//~ IAbilitySystemInterface 끝
       
    	/** 어빌리티 시스템 컴포넌트입니다. 게임플레이 어트리뷰트 및 게임플레이 어빌리티를 사용하려면 필요합니다. */
    	UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities")
    	UAbilitySystemComponent* AbilitySystemComponent;
    }

     

    void APACharacterBase::PossessedBy(AController * NewController)
    {
    	Super::PossessedBy(NewController);
    
    	if (AbilitySystemComponent)
    	{
    		AbilitySystemComponent->InitAbilityActorInfo(this, this);
    	}
    
    	// ASC MixedMode replication requires that the ASC Owner's Owner be the Controller.
    	SetOwner(NewController);
    }
    
    UAbilitySystemComponent* APACharacterBase::GetAbilitySystemComponent() const
    {
    	return AbilitySystemComponent;
    }

     

    void APAPlayerControllerBase::AcknowledgePossession(APawn* P)
    {
    	Super::AcknowledgePossession(P);
    
    	APACharacterBase* CharacterBase = Cast<APACharacterBase>(P);
    	if (CharacterBase)
    	{
    		CharacterBase->GetAbilitySystemComponent()->InitAbilityActorInfo(CharacterBase, CharacterBase);
    	}
    
    	//...
    }
    • ASC는 Server, Client 양쪽에서 모두 Initialize되어야 한다.
      • 또한 Controller가 Set(Possess)되고 나서 Initialize 되기를 원한다.
      • SinglePlay는 Server 파트에 대해서만 걱정을 하면 된다.
    • ASC가 설정된 Player는 각 파트에서 명시적으로 함수를 호출하여 Initialize를 해야 한다.
      • Server 파트: Pawn::PossessedBy()
      • Client 파트: APlayerController::AcknoledgePossession

고급 시나리오

  • 다른 Actor가 소유한 ASC를 사용하는 Actor를 구성할 수 있다.
    • ex) UPlayerState가 소유한 ASC를 사용하는 Pawn
  • 이를 위해 GetAbilitySystemComponent 함수가 Owner에서 ASC를 얻거나, 캐싱해야 한다.
  • 이 방식은 다음 속성이 있는 프로젝트에서 주로 발생한다.
    • Player가 제어하는 Actor가 리스폰을 하고, 그 과정에서 Game Ability System 정보가 필요한 경우
    • 장비나 Modular Machine, 신체 부위를 표현하기 위해 Actor가 자신에게 다른 Actor를 Attach하는 경우
    • 간단한 AI나 MOBA 게임
  • Attach 된 Actor의 Gameplay Ability System Interaction은 Parent의 ASC에 라우팅 할 수 있다.
    • 가장 간단하게 구현하는 방법은 Attach된 Actor의 GetAbilitySystemComponent가 Parent로 전달되는 것.
    • Actor 다른 ACtor에 Attach되거나 처리되는 동안 Cache 된 Pointer를 유지하면 Performance를 향상할 수 있다.
  • 단, ASC가 PlayerState에 있는 경우, PlayerState의 NetUpdateFrequency를 늘려야 한다.
  • Gameplay Ability System은 다수의 Actor가 하나의 Ability System Component를 공유하는 것은 지원한다.
    • 하지만 하나의 Actor가 다수의 Ability System Component를 가지는 것은 지원하지 않는다.
    • Actor의 Ability system Component에 변경사항을 적용하고 이를 얻을 때 모호함을 유발할 수 있기 때문.
 

Replicate Actor Properties In Unreal Engine | Unreal Engine 5.4 Documentation | Epic Developer Community

Learn how to replicate actor properties in Unreal Engine; including conditional replication, custom conditions, and object references.

dev.epicgames.com

ASC가 PlayerState에 있는 경우

  • 더보기
    // Server only
    void AGDHeroCharacter::PossessedBy(AController * NewController)
    {
    	Super::PossessedBy(NewController);
    
    	AGDPlayerState* PS = GetPlayerState<AGDPlayerState>();
    	if (PS)
    	{
    		// Set the ASC on the Server. Clients do this in OnRep_PlayerState()
    		AbilitySystemComponent = Cast<UGDAbilitySystemComponent>(PS->GetAbilitySystemComponent());
    
    		// AI won't have PlayerControllers so we can init again here just to be sure. No harm in initing twice for heroes that have PlayerControllers.
    		PS->GetAbilitySystemComponent()->InitAbilityActorInfo(PS, this);
    	}
    	
    	//...
    }

     

    // Client only
    void AGDHeroCharacter::OnRep_PlayerState()
    {
    	Super::OnRep_PlayerState();
    
    	AGDPlayerState* PS = GetPlayerState<AGDPlayerState>();
    	if (PS)
    	{
    		// Set the ASC for clients. Server does this in PossessedBy.
    		AbilitySystemComponent = Cast<UGDAbilitySystemComponent>(PS->GetAbilitySystemComponent());
    
    		// Init ASC Actor Info for clients. Server will init its ASC when it possesses a new Actor.
    		AbilitySystemComponent->InitAbilityActorInfo(PS, this);
    	}
    
    	// ...
    }
    •  ASC가 PlayerState에 있는 경우에는 명시적으로 Initialize 하는데 호출되는 함수가 달라진다.
      • Server: Pawn::PossessedBy()
      • Client: Pawn::Onrep_PlayerState()
    • 이 모든 과정은 Client에 PlayerState가 있다는 것을 상정하고 작업된다.
    • 만약 아래 로그가 발생하면, ASC가 Client에서 Initialize가 되지 않은 것이다.
      • LogAbilitySystem: Warning: Can't activate LocalOnly or LocalPredicted ability %s when not local!

'UE5 > GAS' 카테고리의 다른 글

[GAS] Ability Task  (0) 2024.05.16
[GAS] Gameplay Effect  (0) 2024.05.15
[GAS] Attribute Set  (1) 2024.05.14
[GAS] Gameplay Attribute  (0) 2024.05.13
[GAS] Gameplay Ability System 소개  (0) 2024.05.10

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/gameplay-ability-system-for-unreal-engine?application_version=5.3

 

언리얼 엔진의 게임플레이 어빌리티 시스템 | 언리얼 엔진 5.4 문서 | Epic Developer Community

게임플레이 어빌리티 시스템 개요

dev.epicgames.com

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/understanding-the-unreal-engine-gameplay-ability-system?application_version=5.3

 

언리얼 엔진 게임플레이 어빌리티 시스템을 살펴봅니다. | 언리얼 엔진 5.4 문서 | Epic Developer Commu

게임플레이 어빌리티 시스템 및 각 컴포넌트 클래스가 어빌리티에 기여하는 방법을 살펴봅니다.

dev.epicgames.com

Gameplay Ability란?

  • RPG나 MOBA의 Ability, Attribute 구축을 지원하는 고도로 유연한 Framework
  • 다양한 인게임 Ability를 설계, 구현하고 효과적으로 연결할 수 있도록 기능을 지원
    • Action의 결과로 다양한 Attribute를 조절하거나 Effect를 생성
    • Timer나 자원 비용을 구현하여 Action의 빈도 조절
    • Ability의 Level과 그에 따른 Effect 변경
    • Particle 및 Sound Effect를 활성화
    • 점프와 같은 단순한 Action 기능
  • Gameplay Ability System과 상호작용하는 Actor에는 Ability System Component가 있어야 한다.
    • Ability를 활성화
    • Attribute 저장
    • Effect Update
    • Actor간 상호작용 처리
  • Game Ability System을 생성하고 Ability System Component가 있는 Actor를 생성하면
    Ability를 생성하고, Actor가 Ability에 어떻게 반응하는지 결정할 수 있다.

Gameplay Ability

  • UGameplayAbility를 상속받은 Class나 BP들을 지칭
    • 특정 Ability에서 어떤 역할을 하는지 정의
    • 해당 Ability의 Replication과 Instancing Activity와 같은 요소가 어떻게 처리될지 정의

Ability Task

  • Gameplay Ability에서 호출하는 일련의 비동기 구성 요소
    • UAbilityTask Class를 상속 받음.
  • C++로 작성된다.
  • 작업이 끝날 때 cpp의 Delegate나 BP의 출력 실행 핀을 호출한다.

Gameplay Attribute

  • FGameplayAttribute 구조체에 저장되는 float 값
    • Game이나 Actor에 특정한 방식으로 영향을 미치는 값들
  • 캐릭터의 health, power, jump height 등의 수치들이 이에 해당한다.

Gameplay Effects

  • Gameplay Attribute를 변경하는 수단
    • 즉시 변경할 수도 있고, 일정 시간동안만 변경할 수도 있다.
    • 후자는 버프/디버프

Owner Tracking

  • Ability와 Effect는 "Owner"라는 개념을 유지해야 한다.
    • Effect가 계산을 수행할 때에는 Owner가 누구인지 알아야 Attribute를 사용할 수 있다.
  • 이 때 Owner는 Network Replication의 것과 다르다.

State Tracking

  • Ability는 다음과 같은 State 순환을 Tracking 할 수 있어야 한다.
    • Ability가 활성화 된 시점
    • Ability의 실행이 현재 진행중인 시점
    • Ability가 완전히 완료되고 더 이상 활성화되지 않은 시점

실행 조정하기

  • Ability는 실행 도중 특정 타이밍에 System과 다양한 Interaction을 할 수 있어야 한다.
    • Animation Montage 활성화
    • Character의 Movmenet를 일시적으로 제어
    • Visual Effect Trigger
    • Overlap 및 Collision Effect 수행
    • 일시적 혹은 영구적으로 Attribute 변경
    • 인게임 Resource 증감
    • 다른 Ability 활성화 허용 또는 차단
    • Ability 사용을 제한하기 위한 쿨다운 처리
    • 인게임 Evnet에 의한 중단
    • 진행 중인 다른 Ability 취소
    • Character의 주요 State 변경사항 적용
      • 새로운 MovementMode 활성화
    • 다른 Interaction 도중 입력에 반응
    • UI에 Ability의 인게임 상태 전달

시스템 구성

  • Edit -> Plugin에서 Gameplay Abilities를 검색해 활성화, Editor 재시작
  • [MyProjectName].Build.cs에 다음 항목 추가
    • GameplayAbilities
    • GameplayTags
    • GameplayTasks

Various Components of Gameplay Ability System

Owner Tracking

  • Gameplay Ability를 사용하기 위해서는 Ability System Component를 Actor에 Attach해야 한다.
  • Ability System Component는 다음 기능을 제공한다.
    • Actor에 Ability 추가/제거
    • Actor가 소유한 Ability가 무엇인지 지속적으로 Tracking, 활성화
    • Ability system의 Context에서 소유 Actor를 나타내는 주요 수단
    • 다양한 요소를 Tracking하기 위한 System과 소유 Actor에 직접 Access하기 위한 Interface 제공
      • Attribute
      • 진행중인 Effect
      • Gameplay Tag
      • Gameplay Effect
  • Multiplayer Game 환경에서 Ability System Component는 다음 기능또한 제공한다.
    • Client 정보 Replicate
    • Server에 Player Action 전달
    • Client가 Ability System Component의 State를 변경 할 권한이 있는지 확인
  • Ability System Component의 부모 Actor는 원격 활성화를 수행하기 위해 로컬에서 제어되는 Player가 소유해야 한다.

Ability 활성화 및 실행 처리

  • Gameplay Ability는 Ability의 모든 Event를 실행하는 것을 담당하는 BP Object이다.
    • Animatino 재생
    • Effect Trigger
    • Owner로부터 Attribute 가져오기
    • Visual Effect 표시

Ability 활성화 제어

  • Gameplay Ability를 활성화 할 경우 System은 Ability가 진행중인 것으로 인식
  • 이후 활성화 Event에 Attach 된 Code를 실행해 완료 함수를 호출
    • Ability의 실행이 완료됨을 알리기 전까지 각 함수와 Gameplay 작업을 거쳐 이동
  • 정리 작업을 추가로 징행해야 하는 경우 완료 시 Event에 Code를 추가로 Attach 할 수 있다.
  • Ability를 취소하여 실행을 중단할 수 있다.
  • Gameplay Ability는 Gameplay Tag를 사용하여 실행하는 것을 제한한다.
    • 모든 Ability는 활성화 될 때까지 2가지 Tag 목록을 가지고 있는다.
      • 소유 Actor에 추가하는 Tag 목록
      • 활성화를 차단하거나 Ability를 자동으로 취소하는 Tag 목록
  • 자체 Code로 Ability 실행을 수동을 취소/차단/허용 할 수 있다.
  • Gameplay Ability는 다음 4가지 방법을 통해 활성화 할 수 있다.
    • Gameplay Ability Handle
      • BP나 C++에서 Ability를 명시적으로 활성화
      • Ability가 부여될 때 Ability System Component에 의해 제공 됨
    • Gameplay Event
      • 일치하는  Ability Trigger로 모든 Ability를 실행
      • Input/Define Machanism을 추상화해야 하는 경우에 유연성 극대화를 위해서는 이 방식을 적극 권장 함
    • 일치하는 Tag와 함께 Gameplay Effect
      • 일치하는 Ability Trigger로 모든 Ability 실행
      • GamePlay Effect의 Trigger Ability를 끄려는 경우 선호 됨
      • 비활성화 된 Animation을 재생하고 다른 Game Action을 차단하는 Ability를 Trigger하는 Sleep Deburf
    • Input Code
      • Ability system Component에 의해 추가 됨
      • 호출 시 일치하는 모든 Ability Trigger
      • Gameplay Event와 유사

Ability 실행 제어

  • Gameplay Ability는 일반적으로 사용되는 다양한 사용 사례와 기능을 제공
    • Cooldown
    • Resource 비용 할당
    • Animation
    • 기타 일반적인 Unreal Engine System을 처리하는 Preprocessed Gameplay Ability Working Library
  • 표준 BP Function Node가 실행을 즉시 종료할 때 상태를 계속 Tracking 하며 도중에 다른 Event를 실행
  • 부모 Gameplay Ability가 적절하게 취소되고 정리되었는지 Tracking 가능
  • Game에서 Gameplay Ability 작업을 확장해 Custom Gameplay Logic 구현하는 것이 일반적인 용례이다.
  • 소유 Actor에서 Gameplay Tag와 Event Data Struct를 수신하기 위해 대기하는 Gameplay Event에 응답 가능.

Attribute Set 및 Attribute

  • Gameplay Attribute System은 Attribute로 구성된 Attribute Set를 통해 Actor와 Interact한다.
    • Attribute Set은 계산에 사용되는 소수값으로, 보통 핵심 통계값을 Tracking 하는데 사용된다.
  • 기본 변수 대비 Gameplay Attribute 사용을 했을 시 얻는 이점이 몇가지 있다.
    • System을 Build할 수 있는 일관적이고 재사용 가능한 Attribute Group을 제공
    • Reflection을 통해 Access 할 수 있어 BL Editor에서 간단한 계산과 Effect 생성 가능
    • Default/Current/Max Value를 별도로 Tracking해 일시적인 수정 및 지속적인 Effect를 쉽게 생성
    • 값을 Client에 Replicate해 UI 시각화에 안전함
  • Actor에서 Gameplay Ability를 사용하려면 Ability System Component에 Attribute Set을 추가해야 한다.
    • 그러면 Ability System Component는 Attribute Set에 할당된 Attribute에 Access할 수 있게 된다.

Gameplay Effect 처리

  • Gameplay Ability System은 Gameplay Effect를 사용해 Target Actor에 변경사항을 적용한다.
    • Damage 적용
    • 지속되는 Effect를 적용하는 One-shot Effect
      • 이 경우에 Gameplay Effect는 제거될 때까지 Target Actor에 자신을 Attach한다.
      • 만료되거나 정리되기 전까지로 제한된 수명을 미리 설정 할 수 있다.
      • 혹은 Target Actor의 Gameplay attribute에 적용된 변경사항을 실행 취소할 수도 있다.
  • Gameplay Effect는 Attribute에 기반하여 계산을 한다.
    • BP Editor에서 간단하게 계산을 직접 생성할 수도 있다.
    • 하지만 복잡한 로직을 가지고 있고,
      다수의 Attribute에 동시에 영향을 미치는 Custom Effect 계산은 C++로 작업하는 것이 적절하다.
  • 보통 Gameplay Ability의 Owner Actor와 Target Actor 모두에서 정보를 처리할 수 있다.
    • 그렇기에 일반적으로 계산을 재사용이 가능한 코드로 결합할 수 있다.

Cosmetic Effect 처리

  • Gameplay Queue는 Visual Effect와 Sound Effect 실행을 담당하는 Actor 및 UObject이다.
    • Multiplay Game에서는Cosmetic Feedback을 Replicate하는데 선호되는 Method이다.
    • 생성할 때 Event Graph 내에서 재생할 Effect를 위한 Logic을 실행
    • 일련의 Gameplay Tag와 연관될 수 있으며, 일치하는 Gameplay Effect를 자동으로 적용한다.
  • Gameplay Queue는 신뢰할 수 있는 Replication을 사용하지 않는다.
    • 때문에 일부 Client가 Queue를 수신하지 못하거나, Feedback을 표시하지 못하는 경우가 있다.
  • Gameplay Code와 결합되어 있는 경우 이 때문에 동기화가 해제될 수 있다.
    • 따라서 Gmaeplay Queue는 Cosmetic Effect에서만 사용되어야 한다.
  • 모든 Client가 Replicate 되어야 하는 경우에는 Replication 처리를 위해 Ability 작업에 의존해야 한다.
    • Montage 재생 Ability 작업이 이에 적합한 예시이다.

Network Multiplay

Ability System Component 및 Replication

  • Ability System Component가 모든 Component에 전체 State를 Replicate하면 안된다.
    • 대역폭 절약 및 부정행위 방지 목적
  • 모든 Client에 Ability와 Gamplay Effect를 Replicate하면 안된다.
    • 영향을 받는 Gameplay Attribute와 Tag만 Replicate 해야 한다.

Ability Replicate 및 Prediction 사용

  • Network Game의 Ability 대부분은 Server에서 실행되고 Client로 Replicate되어야 한다.
    • 이로 인해 Ability 활성화에 지연이 발생하는 것은 일반적인 현상이다.
  • 만약 빠른 속도로 진행되어야 하는 Multiplay Game의 경우 Ability를 Local로 활성화 하고,
    그 사실을 Server에 전달해 동기화 하는 방식을 사용한다.
  • Server가 Ability 활성화를 거부하는 경우 Local로 적용한 변경사항을 실행 취소해야 한다.
    • 일부 Gameplay Effect의 경우 Server에 의해 거부된 경우에 대한 롤백 기능을 지원한다.
    • 대부분의 즉각적이지 않은 Gameplay Effect가 포함된다.
    • Damage나 즉각적인 기타 Attribute/Tag 변경사항은 제외된다.

Server가 소유한 Object와 Interact 하기 위한 Ability 사용

  • Gameplay Ability는 Bot, NPC, Server 소유의 기타 Actor 및 Object와의 Interact를 처리할 수 있다.
    • 이는 Local 소유의 Actor(Player/Pawn), Replicated Ability, 비 GAS Server RPC를 통해 수행되어야 한다.
    • 위 호출은 Interaction을 Server에 Replicate한 다음 NPC와의 변경사항을 수행하는 권한을 가진다.

'UE5 > GAS' 카테고리의 다른 글

[GAS] Ability Task  (0) 2024.05.16
[GAS] Gameplay Effect  (0) 2024.05.15
[GAS] Attribute Set  (1) 2024.05.14
[GAS] Gameplay Attribute  (0) 2024.05.13
[GAS] Ability System Component  (0) 2024.05.13

Source Control 활성화

Editor Preference

  • Edit -> Editor Preference -> Loading & Saving에서 활성화 가능

Automatically Checkout on Asset Modification

  • 활성화 시 변경된 Asset을 자동으로 Checkout 한다.

Prompt for Checkout on Package Modification

  • 활성화 시 Source Control로 제어되는 Package가 변경될 때 해당 Package를 Checkout 할지 묻는 창을 띄운다.

Add New Files when Modified

  • 새 파일이 추가되면 Source Control에도 추가된다.

Use Global Settings

  • Project 단위가 하닌 Global Source Control Login Setting을 사용한다.
  • 옵션 변경 시 다시 Login 해야 한다.

Tool for Diff'ing text

  • Text File Version비교에 사용할 Tool의 File Directory를 지정한다.

contents Browser

  • Asset/Folder 우클릭 -> Source Control Sesction에 Connect to Source Control 선택

상태 아이콘

Source Control 작업

  • Source Control 활성화 상태에서 Asset 우클릭 시 다음 메뉴를 볼 수 있다.

Check Out

  • Asset을 편집 가능한 상태로 Check out
  • Asset을 다른 사용자가 동시에 편집하지 못하도록 한다.

Refresh

  • Asset의 Source Control 상태를 새로고침 한다.

History

  • 선택된 Asset의 Revision History를 확인하여 기존 수정 내용을 볼 수 있다.

Diff Against Depot

  • 이 Asset을 현재 Source Control Depot에 저장된 Version과 비교할 수 있다.

Check Out/Check In

  • Asset 편집을 위해 Checkout 하기 위해서는 우클릭해서 Check Out을 선택하면 된다.
  • 하지만 Checkin 할 때에는 다음 규칙을 따라야 한다.
    • Asset 우클릭 -> Check In 선택
      • 선택 시 필요한 Changelist 설명을 입력하라는 창이 뜬다.
      • 필수 사항으로, 입력하지 않으면 Ok 버튼이 나타나지 않는다.
    • 설명을 입력하면 Asset의 Revision History에 추가된다.

Contents Hot Reload

  • Source Control 작업에 의해 Contents가 변경되었을 때 Eidtor 내 Source Control에서 Contents를 Reload 해준다.
  • 현재 Editor 내의 통합된 Source Control을 통해 작업을 할 때에만 작동한다.
    • 외부에서 변경했을 때에는 Reload가 발생하지 않는다.
  • Contents Hot Reload는 명령이 있을 때 ASset의 지난 저장 상태에서 Reload 하는 기능도 제공한다.
    • Asset 우클릭 -> Asset Action -> Reload 선택
    • Asset을 저장하지 않는 변경사항을 revert 하고 Disk 버전으로 되돌리고자 할 때 매우 유용하다.

Source Control 비활성화

  1. Level Editor 우상단 구석에 초록생 화살표 아이콘을 클릭해 Source Control Login 창으로 접속한다.
  2. Run Without Source Control 버튼을 클릭해 초록색 아이콘을 클릭한다.
    • 클릭하면 금지 아이콘으로 변경되어 Source Control이 비활성화 된다.

 

'UE5 > Utility' 카테고리의 다른 글

[Basic] Packaging  (0) 2024.05.09
[Programming Tool] LLM(Low-level Memory Tracker)  (0) 2024.05.07
[ProgrammingTool] Sparse Class Data  (0) 2024.05.07

+ Recent posts