게임 엔진 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까지 게임 메모리 구조 관점에서 이어서 읽을 수 있게 모아 둔 시리즈 허브 글입니다.
시리즈 열기최근에 올린 글을 시간순으로 확인할 수 있습니다.
게임 개발을 하거나 게임 개발 공부를 하다보면, 힙에서 사용할 객체를 생성할 때 자연스럽게 new를 사용하게 됩니다. 사전에 객체 생성 시점을 정확하게 예측하기 어렵고, 언제 해제될지도 명확하지 않은 상황이라면…
자료구조를 처음 공부할 때는 보통 시간 복잡도(Big-O)를 중심으로 배우게 됩니다. 그래서 연결 리스트(linked list)는 삽입/삭제가 빠르고, 동적 배열(vector)은 중간 삽입이 느리다고 배우게 됩니다. 저도 처음에는 게임 엔진에서도 연결…
게임 개발에서 스택과 힙을 아는 게 중요할까요? 개발을 처음 공부하시는 분들은 스택과 힙을 아는 게 그렇게 중요할까? 그냥 적절하게 변수를 생성하고, 생성한 변수를 다루는 함수를 잘 작성해서 기능을…
들어가며 C++에서 메모리 관리는 단순히 new와 delete를 사용하는 수준에서 끝나지 않습니다. 특히 게임 엔진이나 고성능 시스템을 직접 구현하다 보면 메모리를 언제 확보하고, 객체를 언제 생성하며, 이미 확보한 메모리를…
들어가며 이전 글에서는 allocator를 사용해 직접 구현한 Vector를 개선해봤습니다. 그 과정에서 allocator는 단순 메모리 할당기가 아니라, 메모리 확보와 객체 생명주기를 분리하기 위한 구조라는 이야기를 했습니다. 그리고 allocator를 사용하다…
들어가며 이전 글에서는 C++ allocator의 기본 개념을 정리했습니다. allocator는 쉽게 말하면 메모리 할당 정책을 컨테이너와 분리하기 위한 구조입니다. 그런데 allocator는 설명만 들으면 조금 추상적으로 느껴질 수 있습니다. 이번…
들어가며 C++ STL 컨테이너를 보다 보면 이런 코드를 자주 보게 됩니다. std::vector<int, std::allocator> numbers; 그런데 대부분의 경우, allocator는 직접 건드리지 않습니다. 왜냐하면, 기본 allocator만 사용해도 대부분 잘 동작하기…
들어가며 최근 흥미로운 글 하나를 읽었습니다. 바로 Sebastian Aaltonen의 “No Graphics API“라는 글입니다. 제목만 보면 마치 그래픽스 API 자체가 필요 없다는 주장처럼 보이기도 합니다. 하지만 실제 내용은 조금…