작성
·
32
·
수정됨
0
현재 버전(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
에서 속성 변경을 처리하는 방법입니다. 기본적으로, 이 연산자는 다음을 의미할 수 있습니다:
Base Value: 이는 해당 속성의 초기값을 의미하며, 반영되지 않은 기본값을 가리킵니다. 게임 플레이 중에 변경되지 않은 원래 값을 의미합니다.
Current Value: 이는 현재 게임 상태에서 변화된 결과 값을 의미합니다.
Add(Base)
라는 용어는 Base Value
에 어떤 추가 연산을 수행할 수 있게 하려는 의도를 가질 수 있지만, 생성된 실제 효과는 Current Value
에 영향을 미치는 것처럼 설계되는 것이 일반적입니다. Add(Base)
가 오해를 불러일으킬 수 있는 지점은 Base
가 직접 변경될 것이라는 느낌을 주기 때문입니다.
Current Value
만 변경될까요?이와 같은 경우는 설정된 Effect
가 Current Value
만을 대상으로 하기 때문입니다. 이는 대부분의 Gameplay Effect
가 원래의 Base Value
를 건드리지 않고 게임 중에만 적용되는 값을 변경하여 유연한 게임플레이 상태를 만들어내기 위한 자바 가능합니다.
관련한 예제들 역시 유사한 방식으로 작동되며, 보다 정확한 이해를 위해선 각 기본값과 연관되어 게임의 실질적 구현이 어떻게 이루어지는지 더 확인해볼 필요가 있습니다.
아래 기존 유사한 질문과 답변 링크를 통해 더 많은 정보를 얻을 수 있습니다:
- 게임플레이 시스템에서의 값 처리 방식
- 언리얼 엔진에서의 Modifier 처리 방식 이해
제가 해드린 설명이 도움이 되기를 바랍니다. 현재 베타 기능으로 작성된 답변이므로 도움을 못 드리거나 만족스럽지 않을 수 있다는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.