게임 엔진 Component 기반 구조 완벽 이해
최근 게임 엔진 구조가 지금과 같은 방향으로 발전한 이유와 왜 Component, ECS, Data Oriented Design 같은 기법들이 등장하게 되었는지를 정리했습니다.
시리즈 열기Game Engine Framework Notes
C++와 실제 엔진 사례를 바탕으로 메모리, 자료구조, Unreal/Unity 내부 구조를 설명하는 기술 블로그입니다.
최근에 직접 정리한 허브 글을 기준으로, 먼저 읽으면 좋은 시리즈를 모아 둡니다.
최근 게임 엔진 구조가 지금과 같은 방향으로 발전한 이유와 왜 Component, ECS, Data Oriented Design 같은 기법들이 등장하게 되었는지를 정리했습니다.
시리즈 열기게임 엔진 Transform 구조를 정리한 시리즈 글입니다. Position, Rotation, Scale부터 Local 좌표와 World 좌표, Parent/Child 구조, 행렬까지 게임 엔진의 공간 계산 구조를 함께 설명합니다.
시리즈 열기게임 렌더링 구조와 Rendering Pipeline의 전체 흐름을 입문자 기준으로 정리한 시리즈입니다. GPU가 Vertex 데이터를 어떻게 화면 픽셀로 변환하는지, Vertex Shader와 Rasterizer, Pixel Shader, Output Merger 단계는 왜 필요한지, 그리고 CPU와 GPU는 어떤 방식으로 협력하면서 화면 이미지를 만들어내는지를 전체 흐름 기준으로 설명합니다.
시리즈 열기함수 포인터, callback, std::function, delegate, multicast delegate까지 엔진 관점으로 이어서 읽을 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기fixed timestep, variable timestep, hybrid loop, deltaTime, FPS 제어를 엔진 관점에서 이어서 정리한 게임 루프 시리즈 허브 글입니다.
시리즈 열기allocator 설계, memory pool, placement new까지 C++ 게임 엔진 메모리 흐름으로 이어서 읽을 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기C++ RTTI의 기초부터 custom RTTI, Unreal 스타일 reflection 흐름까지 한 번에 따라갈 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기stack, heap, cache miss, AoS, SoA, ECS까지 게임 메모리 구조 관점에서 이어서 읽을 수 있게 모아 둔 시리즈 허브 글입니다.
시리즈 열기최근에 올린 글을 시간순으로 확인할 수 있습니다.
🚀 들어가며 아래 링크는 C 언어로 코루틴을 구현하는 아주 유명한 글입니다. https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html 처음 보면 굉장히 충격적입니다. 왜냐하면 C 언어에는 coroutine 문법이 없고, yield도 없고, async/await도 없는데 코루틴처럼 동작하는…
🚀 들어가며 이전 글에서는 UClass가 실제로 어떤 정보를 가지고 있는지 살펴봤습니다. 정리하면 UClass는 단순한 클래스 이름 저장 구조가 아니라, 언리얼 엔진의 Reflection 시스템을 구성하는 핵심 메타데이터 객체입니다. 그리고…
🚀 들어가며 이전 글에서는 Unreal Header Tool(UHT)이UCLASS, UPROPERTY, UFUNCTION 같은 매크로를 분석해 Reflection 메타데이터를 생성하는 과정을 살펴봤습니다. UHT를 공부하다보면 자연스럽게 다음 질문이 생길 수 있습니다. UHT가 생성한 Reflection…
🚀 들어가며 Unreal Engine 4 시절의 C++ 코드를 보면 UObject 참조 변수를 아래와 같이 작성했습니다. UPROPERTY() AActor* TargetActor; 굉장히 익숙한 형태입니다. UObject 계열 객체는 언리얼 GC가 관리하고,UPROPERTY()매크로를 붙이면…
🚀 들어가며 이전 글에서는 Unreal Engine이 왜 C++ 기본 RTTI 대신 자체 Reflection 시스템을 사용하는지 살펴봤습니다. 그리고 그 과정에서 자연스럽게 등장했던 것이 바로 UCLASS() UPROPERTY() UFUNCTION() GENERATED_BODY() 같은…
🚀 들어가며 이전 글에서는 Unreal Engine이 왜 C++ 기본 RTTI 대신 자체 Reflection 시스템을 사용하는지 살펴봤습니다. 언리얼은 단순 타입 확인을 넘어서 에디터 블루프린트 직렬화 네트워크 복제 가비지 컬렉션(GC)…
🚀 들어가며 이전 글에서는 C++에서 다운캐스팅이 왜 위험한지, 그리고 dynamic_cast 없이 타입을 확인하기 위한 TypeId/TypeInfo 기반 커스텀 RTTI 시스템을 직접 구현해봤습니다. 그 과정을 보면 자연스럽게 이런 질문이 생깁니다.…
🚀 들어가며 이전 글들에서는 C++ 스마트 포인터의 기본 개념과 함께, shared_ptr, weak_ptr, enable_shared_from_this의 동작 원리를 살펴보았습니다. 그 과정에서 계속 등장한 핵심 개념이 하나 있습니다. 👉 바로 Control Block…