본문 바로가기

C++11

5. 언리얼 엔진 GAS에 대해서 GAS란 무엇인가GAS는 게임 내 캐릭터의 능력을 관리하는 프레임워크다. 다음과 같은 기능들을 구현할 수 있다:파이어볼을 쏘는 스킬체력 회복 포션 사용독 데미지를 받는 디버프이동속도 증가 버프이러한 기능들을 체계적으로 관리하는 것이 가능하다.GAS의 4대 핵심 구성요소1. Ability System Component (ASC)모든 것을 관리하는 중앙 관리자다. 캐릭터에 하나씩 부착하여 사용한다.2. Gameplay Ability실제 스킬이나 행동을 정의한다. "파이어볼 쏘기", "점프하기" 등이 이에 해당한다.3. Gameplay Effect능력이 만들어내는 효과다. "데미지 10", "5초간 이동속도 20% 증가" 등을 정의한다.4. Attribute Set캐릭터의 스탯을 정의한다. 체력, 마나, 공격.. 2025. 7. 15.
9. 비트 연산과 Bitflag, Bitmask에 대해서 비트 연산이란?비트연산은 그렇게 자주 사용되지는 않지만 특정상황에서는 매우 유용하다. 대표적으로 게임서버에서 ID를 생성할 때 정보를 압축해서 저장하거나,특정 숫자의 개별 비트를 조작할때 사용된다. 기본 비트 연산자 1. Bitwise Not(~)모든 비트를 뒤집는 연산이다. 0은 1로, 1은 0으로 변환된다. int a = 5; // 0101int result = ~a; // 1010 (음수로 표현됨) 2. Bitwise And(&)두 비트가 모두 1일 때만 1을 반환한다. int a = 5; // 0101int b = 3; // 0011int result = a & b; // 0001 = 1 3. Bitwise or(|)두 비트 중 하나라도 1이면 1을 반환한.. 2025. 7. 9.
8. C++로 GameObjectPool을 구현 해보자. C++ 게임 오브젝트 풀 패턴 상세 구현 게임 개발에서의 성능은 핵심 요소이다. 특히 미사일, 총알, 파티클 등 수많은 객체가 동시에 생성되며, 소멸되는 상황에서메모리 관리는 게임의 프레임률과 직결된다. 이번글에서는 메모리 관리 최적화의 대표적 기법인 오브젝트 풀(Object Pool) 패턴을 C++로 구현 해보겠다. 오브젝트 풀 패턴이란?오브젝트 풀 패턴은 자주 생성되고 파괴되는 객체들을 위해 미리 메모리를 할당해 주고서필요할 때 이 풀에서 객체들을 가지고와서 사용한 후 다시 풀로 반환하는 방식이다. 주요 장점은 메모리 할당 및 해제시 오버헤드가 감소한다. new와 delete 연산의 빈번한 호출을 피하게 된다. 또한 메모리 파편화를 방지하여 동적 메모리의 반복적인 할당 및 해제로 인한 메모리 파.. 2025. 5. 21.
7. C++ friend, 동적메모리 관리, 클래스 상속에 대해서 알아보자. C++ Friend 에 대해서 객체지향 프로그래밍의 핵심 원칙중 하나는 캡슐화, 그리고 데이터 은닉이다. 하지만 때로는 예외를 둘필요가 있는데, C++에서는 friend 키워드를 사용하여 은닉성의 예외를 두기도 한다. Friend 키워드는 C++에서 제공하는 특별한 접근 권한 지정자로. 다른 클래스나 함수에게 자신의 private 또는 protected 멤버에 접근할 수 있는 권한을 부여한다. 해당 기능으로 코드의 효율성이나 유연성을 높이기 위해서 제공이 된다. 1. 전체 클래스 권한 부여.class PlayLevel{ // 다른 멤버들... friend class DesignedLevel; // DesignedLevel 클래스에 접근 권한 부여private: int mCompon.. 2025. 5. 21.
0. Direct X 기초 이해하기 : SDK, 라이브러리, Dx역사. DirectX 기초 이해하기: SDK, 라이브러리, 그리고 DirectX의 역사 게임 및 3D 그래픽 프로그래밍에서 가장 중요한 위치를 차지하는 Direct X.그런 다이렉트 X에 대해서 오늘은 알아보고자 한다. 하지만 그전에 용어에 대해서 알아할 개념들이 몇가지 있다. SDK 란 무엇인가?기본적으로 다이렉트 X를 개발하는 사람들은 DX SDK를 사용한다. 즉, SDK는(Software Development Kit)소프트웨어 개발 키트의 약자이다.정확한 정의 : SDK는 특정플랫폼, 운영체제, 또는 프로그래밍 언어를 위한 개발도구 모음.SDK vs API : SDK는 API(Application Programing Interface)를 포함하는 더 큰 개념이다. API는 소프트웨어 간의 통신 방법을 정.. 2025. 5. 21.
6. C++ string 타입에 대해서 1. String 타입string은 문자열의 모음이라고 할수 있다.#include using std::string;가변길이 문자열이며, 해당 string타입을 사용하려면이렇게 string 헤더를 사용하여야 한다.(참고로 string은 std::string에 정의 되어 있다.)string s1; // string의 기본 초기화. s1은 빈문자열이다.string s2 = s1; //s2는 s1의 복사본이다.string s3 = "hiya"; //s3는 문자열의 복사본이다.string s4(10,'c'); //s4는 cccccccccc(c가 10개)라는 뜻.위에 코드 마다 주석에 달린 내용으로 사용법을 대략 알수 있겠지만,보다시피 초기화를 하는 방법이 두 가지이다.1-1. string의 직접초기화.. 2024. 12. 5.
5. C++ auto & decltype에 대해서. 1. auto 타입 지정자auto는 컴파일러에서 초기값으로 타입을 추론하고 타입을 결정짓는 타입이다.즉, 쉽게 이야기 하자면 해당 객체의 타입을 컴파일러가 알아서 결정해줌.-> 때문에 무조건 auto 같은 경우에는 선언 시에 초기값이 있어야 한다.auto item = val1 + val2; //item은 val1 + val2을 이용해 타입을 추론해 초기화.만약 item 변수를 함수가 호출해서 사용할 때 호출값이 double형(소수점)이면, auto는 double로,int형(정수)라면 int형으로 초기화 시킨다.다만 여기에는 약간의 제약이 있는데...auto i = 0, *p = &i; //i는 int, p는 int에 대한 포인터로 추론될 예정이다.auto s2 = 0, pi = 3.14; //err.. 2024. 12. 5.
4. C++ Typedef(타입 별칭)에 대해서 1. 타입 별칭이란?다른 타입과 동의어인 이름 -> 복잡한 정의를 더 간단하게 바꿔줌.자료형을 다른 이름으로 재정의 한다고 생각하면 된다.* 전통적인 typedef 별칭 선언typedef double wages; // wages는 double과 동일어.typedef wages base, *p // base는 double, p는 double*이다. 위에 코드 예시를 보면 첫번쨰 줄에서는 동의어를 선언,아래는 위에 만든 동의어를 이용해서 다시한번 동의어를 만들며포인터를 만드는 방식으로 응용을 한 것이다. 즉, typedef로 동의어를 선언할 때 typedef가 맨 앞에,그 뒤에 타입(int, double, char등등..) 마지막으로 동의어 이름을 지정하면 된다. 어떻게 보면 typedef 키워드는 선언.. 2024. 12. 5.