2026/01 17

퀵 정렬 (Quick Sort)

1. 한 줄 정의퀵 정렬은 기준 원소(Pivot)를 기준으로 분할을 반복하는 분할 정복 정렬 알고리즘이다.2. 핵심 아이디어기준값(Pivot)을 하나 선택Pivot보다 작은 값은 왼쪽Pivot보다 큰 값은 오른쪽좌·우 부분 배열에 대해 재귀 반복3. 동작 과정 예시예시 배열[8, 3, 1, 7, 0, 10, 2]Pivot = 7[3, 1, 0, 2] 7 [8, 10]이후 각 부분 배열에 대해 동일한 과정 반복4. 분할(Partition) 과정이 핵심대표적인 Partition 방식1) Lomuto Partition (로무토 분할)마지막 원소를 Pivot구현 간단성능은 상대적으로 떨어짐2) Hoare Partition (호어 분할)양쪽에서 포인터 이동교환 횟수 적음실무에서 더 자주 사용5. 시간 복잡도평균O..

GameDevelop/Notes 2026.01.26

함수 포인터, 함수 객체, 람다

한 줄 요약함수 포인터는 주소,함수 객체는 객체,람다는 익명 함수 객체다. 함수 포인터 (Function Pointer)함수의 주소를 저장하는 포인터int Add(int a, int b) { return a + b;}int (*FuncPtr)(int, int) = Add;int result = FuncPtr(1, 2); 함수의 이름이 곧 주소이기 때문에, 함수의 이름을 포인터로 저장하거나 매개변수로 넘겨줄 때 함수 포인터를 사용하게 된다. 간편하지만 상태(누적값, 이전 호출 결과 등)를 가질 수 없기 때문에 주로 전역 함수나 static 함수가 사용된다. STL 알고리즘은 Callable을 요구하며, 함수 포인터도 사용할 수 있지만함수 객체나 람다가 더 일반적이다. STL에서 조건자로서 사용할 수..

GameDevelop/Notes 2026.01.20

렌더링 파이프라인

렌더링 파이프라인(Rendering Pipeline)1. 한 줄 정의렌더링 파이프라인은3D 공간의 정점 데이터를최종적으로 화면의 픽셀로 변환하는 전체 과정이다. 2. 전체 흐름 한눈에 보기로컬 스페이스 ↓월드 스페이스 ↓뷰 스페이스 ↓백페이스 컬링 ↓조명 ↓클리핑 ↓투영 ↓뷰포트 변환 ↓레스터라이즈 로컬 스페이스 (Local / Model Space)물체를 기준으로 한 좌표메시가 자기 자신을 원점으로 가짐월드 스페이스 (World Space)월드를 기준으로 한 좌표모든 오브젝트가 공통 기준 공간에 위치뷰 스페이스 (View / Camera Space)카메라 기준 좌표계카메라가 원점가상카메라를 기준으로 물체들을 보여주는데, 이 가상카메라에 회전값이 있거나 하면 투영할 때 등 번..

GameDevelop/Notes 2026.01.20

UBT (Unreal Build Tool)

UBT (Unreal Build Tool)1. 한 줄 정의UBT는 Unreal Engine 프로젝트의 빌드 과정을 총괄하는빌드 시스템이자 자동화 도구다.2. UBT는 왜 필요한가?Unreal은 다음과 같은 특성이 있다.멀티 플랫폼 (Windows, Console, Mobile)수많은 모듈 구조엔진 + 게임 코드 혼합 빌드에디터 / 클라이언트 / 서버 분리 빌드👉 일반 C++ 빌드 시스템으로는 관리가 어렵다.3. UBT의 핵심 역할UBT는 다음을 담당한다.전체 빌드 파이프라인 관리UHT 실행 제어C++ 컴파일러 호출링크 단계 관리플랫폼별 설정 적용4. UBT와 UHT의 관계[ UBT ] ├─ UHT 실행 ├─ C++ 컴파일 ├─ 링크 └─ 패키징 연계👉 UHT는 UBT가 호출한다👉 UH..

UHT (Unreal Header Tool)

UHT (Unreal Header Tool)1. 한 줄 정의UHT는 Unreal Engine의 리플렉션 시스템을 위해C++ 헤더를 분석하고 자동 코드를 생성하는 도구다. 2. UHT는 왜 필요한가?C++ 자체에는 다음 기능이 없다.런타임 타입 정보 확장에디터 노출 메타데이터Garbage Collection 추적Blueprint 연동👉 Unreal은 이를 코드 생성 방식으로 해결한다. 3. UHT의 핵심 역할UHT는 다음을 담당한다.UCLASS, USTRUCT, UENUM, UFUNCTION, UPROPERTY메타데이터 파싱.generated.h 파일 생성리플렉션 데이터 구축4. 동작 흐름 (빌드 파이프라인)[ C++ Header (.h) ] ↓[ Unreal Header Tool ] ..

싱글톤 패턴 (Singleton Pattern)

1. 한 줄 정의싱글톤 패턴은클래스의 인스턴스를 오직 하나만 생성하도록 보장하고,전역 접근 지점을 제공하는 디자인 패턴이다. 2. 왜 싱글톤을 쓰는가?다음과 같은 시스템은 하나만 존재해야 한다.게임 매니저입력 시스템사운드 매니저설정(Config) 관리자👉 여러 개가 생기면 상태 불일치 문제 발생 3. 기본 구현 방식 (C++) class GameManager{public: static GameManager& Get() { static GameManager Instance; return Instance; }private: GameManager() {}}; 특징정적 지역 변수 사용프로그램 종료 시 자동 소멸C++11 이후 스레드 안전 보장 4. 싱글톤의 핵심 ..

GameDevelop/Notes 2026.01.11

옵저버 패턴 (Observer Pattern)

1. 한 줄 정의옵저버 패턴은한 객체의 상태 변화가 발생했을 때이를 구독한 객체들에게 자동으로 알리는 패턴이다. 2. 왜 옵저버 패턴이 필요한가?다음과 같은 문제를 해결하기 위해 사용한다.객체 간 강한 결합(Dependency) 제거상태 변화에 대한 자동 통지이벤트 기반 구조 구현// 나쁜 예Player.TakeDamage();UI.UpdateHP();Sound.Play();Quest.Check();👉 Player가 너무 많은 걸 알고 있음 3. 기본 구성 요소1) Subject (Publisher)상태를 가지고 있음옵저버를 등록 / 제거 / 통지2) Observer (Subscriber)Subject의 변화를 통지받음갱신 로직 수행 4. 구조 다이어그램 (개념)Observer ←─┐Observer ..

GameDevelop/Notes 2026.01.11

가상 함수 테이블 (Virtual Table, vtable)

1. 한 줄 정의가상 함수 테이블은런타임 다형성을 구현하기 위해객체가 사용할 가상 함수 주소들을 저장한 테이블이다. 2. 왜 vtable이 필요한가?컴파일 타임에는 다음을 알 수 없다.Base* obj = new Derived();obj->Update(); // Base 클래스와 Derived 클래스 중 어떤 Update?👉 실제 타입은 런타임에 결정이를 위해 C++은 vtable을 사용한다. 3. vtable 생성 시점컴파일 시클래스마다 vtable 구조가 결정됨런타임 시객체 생성 시 vtable 포인터(vptr)가 설정됨👉 객체마다 vtable이 있는 게 아니다👉 클래스당 하나의 vtable 4. 객체 메모리 구조[..

GameDevelop/Notes 2026.01.11

TArray, TMap

언리얼 엔진의 TArray와 TMap에 대해 정리해보았습니다.구글링 및 AI를 참고했습니다. Unreal Engine의 TArray와 TMap1. Unreal 컨테이너를 왜 따로 쓰는가?언리얼 엔진에는 STL 대신 자체 컨테이너(TArray, TMap, TSet) 가 있다.이유는 다음과 같다.엔진 메모리 관리 시스템과 통합Garbage Collection / Reflection 지원플랫폼별 최적화직렬화(Serialize) 지원👉 STL보다 엔진 친화적 2. TArray란?1) 한 줄 정의TArray는 언리얼 엔진의 동적 배열 컨테이너다.STL의 std::vector 와 유사하다.2) 기본 특징연속 메모리 구조인덱스 기반 접근자동 크기 확장3) 내부 구조 핵심내부적으로 힙 메모리 연속 할당Capacity..

해시테이블과 해시충돌

해시테이블과 해시충돌에 대해 정리해보았습니다.구글링 및 ChatGPT의 도움을 받아 작성했습니다. 해시 테이블과 해시 충돌 정리1. 해시 테이블이란?키(Key)를 해시 함수로 변환해배열 인덱스로 사용하여 값을 저장·조회하는 자료구조 해시 테이블을 사용하는 핵심 이유는 빠른 탐색이다.빠른 탐색 (평균 O(1)) 2. 왜 해시 테이블이 빠른가?일반적인 자료구조와 비교하면: 구조 탐색 시간 배열O(1) (인덱스 필요)리스트O(N)트리O(log N)해시 테이블O(1) (평균)👉 키 → 인덱스로 바로 접근하기 때문 3. 해시 테이블의 기본 구성1) Key검색 기준 값예: ID, 좌표, 문자열2) Hash FunctionKey → 정수값으로 변환이 값으로 배열 인덱스 결정3) Bucket (버킷)실제 데이터가..

GameDevelop/Notes 2026.01.09