Inflearn brand logo image

인프런 커뮤니티 질문&답변

hush park님의 프로필 이미지
hush park

작성한 질문수

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

9강 : 아이템 상자 구현

9강 44:59 부분에서 질문이 있습니다.

작성

·

32

·

수정됨

0

GOMCAM 20250814_1956460691.png

 

현재 버전(5.6)에서 modifier op 는 Add가 아니라 Add(Base) 로 기재되어 있는데, 그럼에도 불구하고 강의의 내용과 똑같이 Current Value만을 변경합니다. 그렇다면 현재 버전의 Add(Base) 에서 Base 는 무슨 의미일까요...? 설명이 잘못된건가요? 마치 Base 에 Add를 하는 것 같아서 오히려 혼동을 불러일으키는 느낌인데

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

안녕하세요. 답신이 늦었습니다.
GAS 시스템은 에픽 게임즈에서 업데이트를 자주 진행하다보니 혼란을 주는 부분이 있는 것 같습니다.
문의 주신 내용에 대해 소스 코드를 확인해보니, 열거형의 이름은 다르지만 값이 같습니다.
아래 언리얼 5.4 버전과 5.6 버전의 열거형 값을 확인해보시면, 5.6에 AddBase 값이 에디터에서 Add (Base)로 표기되는데, 그 아래에 Additive, 즉 5.6 이전의 Add로 표시되던 것과 같은 방식으로 처리되도록 하위 버전 호환성 지원을 하는 것을 볼 수 있습니다.
"Base"라는 표기가 혼란을 주는 것 같은데, BaseValue를 의미하기보다 복잡한 계산을 위한 가장 기본 값의 의미로 이해해주시면 됩니다. 실제로는 아래 코드에서 볼 수 있듯이 강의 내용과 같은 방식으로 처리된다고 생각하시면 됩니다.

 

namespace EGameplayModOp
{
	/** Defines the ways that mods will modify attributes. Numeric ones operate on the existing value, override ignores it */
	enum Type : int
	{		
		/** Numeric. */
		Additive = 0		UMETA(DisplayName="Add"),
		
		...
	};
}

 

UENUM(BlueprintType)
namespace EGameplayModOp
{
	/**
	 * Defines the ways that mods will modify attributes. Values of the same type are aggregated, and then applied in the following equation:
	 * ((BaseValue + AddBase) * MultiplyAdditive / DivideAdditive * MultiplyCompound) + AddFinal
	 */
	enum Type : int
	{		
		/** Adds to the Base value. This happens first, before all other mods are considered. */
		AddBase				UMETA(DisplayName="Add (Base)"),

		...

		// Backwards compatible names
		Additive = 0		UMETA(Hidden), // Backwards compat name
		Multiplicitive = 1	 UMETA(Hidden), // Backwards compat name
		Division = 2		UMETA(Hidden), // Backwards compat name

		...
	};
}

 

0

안녕하세요, 인프런 AI 인턴입니다. hush park님.

언리얼 엔진의 최신 버전(5.6)에서의 Gameplay Effect 설정에 대해 질문주신 내용을 바탕으로 설명드리겠습니다. 언리얼 엔진의 Gameplay Ability System에서는 많은 부분이 종종 업데이트되며, 일정한 하나의 함수나 옵션의 의미가 바뀔 수 있습니다.

Add(Base)의 의미

Add(Base) 연산자는 Attribute 변경 방식의 일환으로, 언리얼의 Gameplay Effects에서 속성 변경을 처리하는 방법입니다. 기본적으로, 이 연산자는 다음을 의미할 수 있습니다:

  1. Base Value: 이는 해당 속성의 초기값을 의미하며, 반영되지 않은 기본값을 가리킵니다. 게임 플레이 중에 변경되지 않은 원래 값을 의미합니다.

  2. Current Value: 이는 현재 게임 상태에서 변화된 결과 값을 의미합니다.

Add(Base)라는 용어는 Base Value에 어떤 추가 연산을 수행할 수 있게 하려는 의도를 가질 수 있지만, 생성된 실제 효과는 Current Value에 영향을 미치는 것처럼 설계되는 것이 일반적입니다. Add(Base)가 오해를 불러일으킬 수 있는 지점은 Base가 직접 변경될 것이라는 느낌을 주기 때문입니다.

Current Value만 변경될까요?

이와 같은 경우는 설정된 EffectCurrent Value만을 대상으로 하기 때문입니다. 이는 대부분의 Gameplay Effect가 원래의 Base Value를 건드리지 않고 게임 중에만 적용되는 값을 변경하여 유연한 게임플레이 상태를 만들어내기 위한 자바 가능합니다.

관련 예제 및 자료

관련한 예제들 역시 유사한 방식으로 작동되며, 보다 정확한 이해를 위해선 각 기본값과 연관되어 게임의 실질적 구현이 어떻게 이루어지는지 더 확인해볼 필요가 있습니다.

아래 기존 유사한 질문과 답변 링크를 통해 더 많은 정보를 얻을 수 있습니다:
- 게임플레이 시스템에서의 값 처리 방식
- 언리얼 엔진에서의 Modifier 처리 방식 이해

제가 해드린 설명이 도움이 되기를 바랍니다. 현재 베타 기능으로 작성된 답변이므로 도움을 못 드리거나 만족스럽지 않을 수 있다는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hush park님의 프로필 이미지
hush park

작성한 질문수

질문하기