게임 프로그래밍에서 자료 구조는 매우 중요하며 다양한 방식으로 활용된다.게임의 성능, 메모리 사용, 기능 구현 등에 직접적인 영향을 미치기 때문에 효율적인 자료 구조 선택과 구현이 필요하다. 아래는 게임 프로그래밍에서 자주 사용하는 주요 자료 구조와 그 응용에 대한 설명이다. I. 배열(Array)정의 : 동일한 타입의 요소를 연속적으로 저장하는 자료 구조응용 : 게임 내 객체들의 위치, 상태, 속성 등을 저장, 예를 들어, 게임 맵의 타일 정보, 캐릭터의 애니메이션 프레임 등을 배열에 저장한다. II. 연결 리스트(Linked List)정의 : 각 요소가 다음 요소에 대한 포인터를 가지고 있어 동적으로 요소를 추가하거나 제거할 수 있는 자료 구조응용 : 동적 데이터 목록을 다루는 데 유용. 예를 들어 ..
기초 학습 자료 구조알고리즘 문제 해결 전략게임 기초 수학 TCP/IP, UDP시스코 네트워킹컴퓨터 시스템(CSAPP)컴퓨터 프로그램의 구조와 해석(SICP)원도우 API 게임 기술BOX2DSTL 프로그래밍GoF 디자인 패턴 게임 프로그래밍 패턴그래픽스 API3D공간에 대한 이해 / 선형대수학렌더링 파이프라인 / 셰이더 프로그래밍물리 라이브러리 (PhysX)게임 시스템(게임 루프, 입력 처리, 충돌 처리, AI, 렌더링)
DECLARE_ATTRIBUTE_CAPTUREDEF?Unreal Engine에서 사용되는 매크로로, 속성 값을 캡처하고 사용할 때 유용하다. 주로 ' GameplayEffectExecutionCalculation' 클래스에서 사용되어, 특정 애트리뷰트(속성) 값을 캡처하고 이후 계산에서이를 사용할 수 있도록 한다. 이 매크로는 Unreal Engine의 능력 시스템(Ability System)과 관련이 있다. 더보기캡처이는 특성 속성(attribute)의 현재 값을 획득하여 이후의 계산이나 논리에 사용하기 위해 저장하는 과정을 의미한다.이는 특히 게임플레이 효과나 애미메이션 시스템에서 중요한데, 예를 들어 플레이어의 현재 체력, 마나 또는다른 스탯 값을 기반으로 특정 효과를 적용할 때 필요하다. DEC..
https://www.acmicpc.net/problem/117262 x n 크기의 직사각형을 1 x 2, 2 x 1 타일로 채우는 방법의 수를 구하는 프로그램을 작성해야한다. 이는 다이나믹 프로그래밍을 이용하여 해결이 가능하며, 이 문제는 피보나치 수열과 유사한 점화식을 따른다. 이는 다음과 같다. 점화식 유도2 x n 크기의 직사각형을 채우는 방법은 다음 두 가지로 나눌 수 있다.I. 세로로 2 x 1타일을 맨 왼쪽에 하나 놓고 나머지를 채우는 방법II. 가로로 1 x 2 타일을 두 개 놓고 나머지를 채우는 방법 따라서, 첫 번째 경우는 2 x (n - 1) 크기의 직사각형을 채우는 방법의 수와 같고, 두 번째 경우는 2 x (n - 2) 크기의 직사각형을 채우는 방법의 수과 같다. 이를 수식으로 나..
ActivateAbility이 함수는 UE5에서 게임플레이 능력 시스템(GAS)의 핵심 요소이다.이 함수는 능력이 활성화될 때 호출되며 다양한 게임플레이 메커니즘을 구현하는데 사용된다. 함수 서명ActivateAbility 함수는 UGameplayAbility 클래스에서 정의되어 있으며, 이를 상속받는 클래스에서오버라이드한다. 함수 서명은 다음과 같다.virtual void ActivateAbility( const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEv..
포인터포인터는 다른 변수나 메모리의 주소를 저장하는 변수이다.코드를 작성하면서 포인터의 개념이 부족하다고 느껴 포인터에 대해 공부하고 기록하려고 한다. I. 포인터 선언 및 초기화포인터는 특정 데이터 형식의 변수를 가리키는 변수이다. 포인터를 선언할 때는 데이터 형식 뒤에 '*' 를 붙인다.int* ptr; // int 형 변수를 가리키는 포인터char* cptr; // char 형 변수를 가리키는 포인터 또한 포인터는 다른 변수의 주소를 저장한다.주소를 할당하려면 주소 연산자 '&' 를 사용한다.int a = 10;int* ptr = &a; // 'a' 변수의 주소를 ptr에 저장 II. 포인터의 역참조포인터를 통해 실제 변수에 접근할 수 있다.이를 역참조라고 하며 '*' 연산자를 사용한다.in..
TObjectPtrTObjectPtr는 UE5에서 도입된 스마트 포인터로 주로 UObject 타입을 객체를 안전하게 참조하기 위해 사용된다.TObjectPtr는 가비지 컬렉션 시스템과 긴밀하게 연관되어 있어 다음과 같은 이점을 제공한다. I. 가비지 컬렉션 통합가비지 컬렉션 시스템과 통합되어 있어, 객체가 가비지 컬렉션에 의해 해제될 때 자동으로 nullptr로 설정된다.이는 댕글링 포인터 문제를 방지하고, 객체의 유효성을 안전하게 관리할 수 있도록 도와준다. II. 안전한 참조 관리:TObjectPtr은 객체의 유효성을 보장하기 위해, 객체가 삭제되면 자동으로 nullptr로 설정된다이는 참조된 객체가 삭제된 후에도 안전하게 포인터를 사용할 수 있게 한다. TObjectPtr 사용법TObjectPtr..
댕글링 포인터프로그램이 더 이상 유효하지 않은 메모리 주소를 참조하는 포인터를 의미한다. 이는 메모리 안전성과 프로그램의 안전성을 저하시킬 수 있는 중요한 문제이다. 댕글링 포인터가 발생하는 주요 원인과 그 결과, 그리고 이를 방지하는 방법에 대해 알아보자 댕글링 포인터가 발생하는 주요 원인I. 객체 해제 후 포인터 사용:메모리 해제(삭제) 후에도 여전히 포인터가 해당 메모리를 가리키고 있는 경우, 해당 포인터는 더 이상 유효한 메모리를 참조하지 않게 된다. 이때 그 포인터를 댕글링 포인터라고 한다.int* ptr = new int(10);delete ptr; // 메모리 해제*ptr = 20; // 댕글링 포인터 사용, 정의되지 않은 동작(UB) II. 스택 메모리 참조:함수가 반환된 후 스택에..
AActor란Unreal Engine에서 모든 게임 오브젝트의 기본 베이스 클래스 중 하나이다.즉, 게임 내에서 플레이어 캐릭터, 적 캐릭터, 아이템, 환경 요소 등 대부분이 AActor 클래스에서 파생될 수 있다. AAcor 클래스는 게임 내 오브젝트의 기본적인 특징과 동작을 정의한다. 이 클래스를 상속받은 클래스들은 게임 내에서 배치되고, 이동하고, 충돌을 감지하며, 렌더링되고상호작용 할 수 있다. 게임에서 오브젝트의 위치, 회전, 크기 등의 속성을 제어할 수 있으며, 이벤트를 처리하여 게임 로직을 구현할 수 있다. 간단히 말해, AActor 클래스는 Unreal Engine에서 게임 오브젝트의 기본적인 특징과 동작을 제공하는 클래스이다.게임의 거의 모든 것이 이 클래스를 기반으로 만들어진다. ..
Aura 프로젝트를 진행하면서 C++에 대한 지식을 생각보다 얕게 가지고 있었다. 특히 Class가 자주 사용되는데 어떻게 사용되는건지 이해를 확실히 하고 넘어가야겠다고 프로젝트 하면서 자주 느끼게 되어 클래스에 대해 알아보았다. 클래스(Class)란?C++에서 클래스는 데이터와 해당 데이터를 조작하는 함수를 하나의 단위로 묶어주는 기능을 제공한다. 클래스는 객체지향 프로그래밍의 핵심 개념 중 하나이며, 코드의 구조화, 재사용성 및 유지보수성을 향상시키는 데 사용된다. 간단한 C++ 클래스 예시를 확인해보자.#include // 클래스 정의class Rectangle {private: int width; int height;public: // 생성자 Rectangle(int w,..