본문 바로가기

전체 글

(23)
[CPP] Visual Studio 사용 시 불편한 점 해결 1. sprintf 사용 시 계속 sprintf_s 를 사용하라고 나온다. 문제 발생 이유 : sprintf 는 문자열에 무언가 집어넣고 싶을 때 사용한다는 것을 알고 있을 것이다.sprintf 는 아래와 같다.요컨대, char 버퍼에다가 Printf format string 을 넣으며, ...을 통해 다른 인자들이 들어올 수 있음을 의미한다.따라서 우리는 이를 아래와 같이 사용한다.그런데 이 코드를 보면 의문이 하나 생긴다.만약 입력되는 문자열이 버퍼 사이즈보다 크면 어떻게 되는거지? 그렇다. sprintf 에서는 이에 대한 고려가 되어있지 않다.그렇기 때문에 오버플로우로 인한 잠재적인 메모리 침범 문제가 발생할 수 있다.따라서 컴파일러에서 이 sprintf 대신 sprintf_s 를 사용할 것을 권장..
게임에서의 벡터와 내적, 그리고 외적 벡터란 뭘까?(참고) 나는 수학에 거의 문외한이다.그렇기 때문에 더 수학을 이해하고자 노력하려고 하며,내 설명은 철저히 나와 같은 문외한들이 이해할 수 있도록 말하는 것을 목적으로 한다.그러므로 다소 틀린 부분, 정확하지 않은 부분이 있을 수 있으며이에 대해 태클을 건다면 당연히 여러분의 말이 정답이다.아 그리고 태클 환영합니다 제발. 나 잘 몰라 알려줘.. 벡터를 알기 전에 우리는 스칼라에 대한 이해와 체에 대한 이해가 필요하지만이건 나도 명확하게 모르고 대충 이해하고 있기 때문에 시간이 되면 나중에 자세하게 적어보기로 한다. > 체(Field)란?간단하게만 말하자면, 체라는 것은 실수나 무리수와는 다르게 수를 정의하는 방법이며대수의 한 정의로, 사칙연산(특히 덧셈과 곱셈. 뺄셈은 덧셈으로 정의가 가능..
[CPP] 함수 반환형이 갖는 의미 여러 프레임워크를 사용하다 보면,어떤 함수는 반환형이 있고 어떤 함수는 반환형이 없는 대신 참조에 의한 결과값 전달을 수행한다. 왜 이런 차이가 있을까? 여기에는 어떤 의미가 있는걸까?예를 들어 이런 함수 시그니처가 있다고 가정해 보자. 멤버 변수를 보면, OutExecutionOutput 이라는 참조 변수를 통해 결과값을 전달한다는 것을 알 수 있다. const 가 없고, 참조가 있는 이유는 바로 결과값 전달을 위해선 비 const 여야 하고, 참조로 받아야 결과를 받을 수 있기 때문이다. 그런데 왜 직접 FGameplayEffectCustomExecutionOutput& 으로 반환하면 안되는걸까? 자, 우선 반환형을 FGameplayEffectCustomExecutionOutput& 로 하기 위해서는..
[Unreal 5] GAS - Gameplay Effect Modifier Gameplay Effect 는 Gameplay Tag 와 Attribute 를 수정하거나 변경할 수 있는 방법이다. 예를 들어 어떤 스킬이 있다면, 이 스킬이 주는 대미지나어떤 포션이 있다면, 이 포션이 회복하는 값을 Gameplay Effect 를 통해 정의할 수 있다는 소리다. 이 Gameplay Effect 에는 Modifier 이라는 것이 존재하여 이름과 일맥상통하게 Attribute 를 수정할 수 있는데Modifier 에는 4가지 종류가 있다. 1. Scalable Float Scalable Float 은 값을 단순하게, 직접적으로 변경하는 방법이다.아래 사진과 같이, 그냥 단순하게 특정한 값을 주어 Attribute 를 변경할 수 있다. 다만, GAS 는 Level 을 기준으로 만들도록 설계..
[Unreal 5] 매크로 지정자 기본적으로 매크로 지정자들은 언리얼 엔진과 에디터에서Reflection 시스템을 사용하기 위해, Blueprint 와 같이 사용하기 위한 기능들을 엔진 내부적으로 구현하기 위해 사용하는 매크로다. 언리얼에는 꽤나 많은 매크로 지정자가 있는데,언리얼 초보 입장에서는 어떤 매크로를 어떤 상황에 써야 하는지 이해하기가 쉽지 않다. 본인 역시 그러하기 때문에 개발하면서 알게 되는 내용들을 여기에 기록해 놓으려고 한다.  UPROPERTY() 지정자 (프로퍼티 지정자)https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-uproperties?application_version=5.3  BlueprintReadOnly, ReadWrite..
[Unreal 5] GAS - Gameplay Ability 본 게시글은 GAS 구조를 공부하던 중 UGameplayAbility 의 주석을 필자가 아는만큼 해석해놓은 글이니 읽으실 때 참고 부탁드립니다.(필자의 수준은 매우 낮다는 것을 고려)   직접 캐릭터의 스킬 등을 GameplayAbility 로 구현할 때에는 어떻게 해야 할지 감이 안잡혀서 일단 클래스 전체를 톺아보기로 했다.  우선은 긴 주석이 나오는데, 어빌리티는 Gameplay Logig 중에서 트리거되거나 활성화될 수 있는 것들이라고 한다.AbilitySystem 이 GameplayAbility 에게 제공하는 주요 특징들은 아래와 같은데,우선 쿨타임을 적용할 수 있다고 한다. 실제로 어빌리티를 상속받아 BP를 만들어 보면, 아래처럼 Cooldown Gameplay Effect 를 적용할 수 있도록..
[Unreal 5] Delegate 메모 공부하다가 자꾸 Delegate 원형을 까먹어서 쓴다. UPrimitiveComponent 클래스 정의를 보면, 아래와 같이 델리게이트가 만들어져 있는 것을 볼 수 있다. /** * Delegate for notification of blocking collision against a specific component. * NormalImpulse will be filled in for physics-simulating bodies, but will be zero for swept-component blocking collisions. */DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_FiveParams( FComponentHitSignature, UPrimitiveCo..
[Unreal 5] GAS - UAbilitySystemComponent 본 게시글은 GAS 구조를 공부하던 중 UAbilitySystemComponent 의 주석을 필자가 아는만큼 해석해놓은 글이니 읽으실 때 참고 부탁드립니다.(필자의 수준은 매우 낮다는 것을 고려) UAbilitySystemComponent 란, Ability System 의 아래 3가지 요소를 사용함에 있어 조금 더 쉽게 상호작용하기 위해서 존재하는 컴포넌트다.   1. Gameplay Abilities : - 플레이어나 AI 등의 사용자가 "어빌리티" 를 획득하거나 부여하는 방법을 제공한다.- "어빌리티" 인스턴스를 관리한다. (무언가가 어빌리티를 갖고 있는 경우 등)- 리플리케이션 기능을 제공한다.          - "어빌리티"는 반드시 UGameplayAbility 자신에 의해 리플리케이트 되어야..