게임 엔진을 공부하다 보면 생각보다 많은 문제들이 결국 메모리 구조로 연결된다는 것을 알게됩니다.

왜 최근 엔진들이 ECS 구조에 관심을 가지는지,
왜 allocator를 직접 구현하는지,
왜 Cache Locality가 중요한지,
왜 Object Pool이나 SoA(Struct of Array) 같은 구조들이 등장했는지도 결국 같은 흐름 안에 있습니다.
이 시리즈에서는 게임 엔진을 메모리 관점에서 이해해보기 위해 다양한 주제들을 하나씩 정리했습니다.
아래는 현재까지 작성한 글 목록입니다.
1. 스택과 힙은 왜 중요한 개념일까?
개발을 하다 보면 자연스럽게 스택과 힙이라는 개념을 접하게 됩니다.
그리고 실제 게임 엔진도 결국 이 두 메모리 영역과 많은 부분에서 연관되어 있다는 것을 알게됩니다.
객체 생성, 메모리 수명, 동적 할당 같은 개념들이 왜 중요한지 정리한 글입니다.
2. Cache Miss는 왜 게임 성능에 영향을 줄까?
최근 CPU는 굉장히 빠릅니다.
문제는 데이터를 얼마나 빠르게 가져올 수 있는가입니다.
이 글에서는 Cache, Cache Miss, Cache Locality 개념과 함께 왜 최근 엔진들이 데이터 배치를 중요하게 보기 시작했는지 정리했습니다.
3. 게임 엔진은 왜 allocator를 직접 구현할까?
게임은 객체 생성과 제거가 굉장히 자주 발생하는 프로그램입니다.
이 과정에서 힙 할당 비용과 메모리 파편화 문제가 등장하기 시작합니다.
이 글에서는 allocator, memory pool, 메모리 재사용 구조가 왜 중요한지 정리했습니다.
4. placement new는 왜 등장했을까?
처음 placement new를 보면 굉장히 특이한 문법처럼 느껴질 수 있습니다.
그런데 allocator와 memory pool 구조를 이해하기 시작하면 중요한 역할을 한다는 것을 알게 됩니다.
이 글에서는 객체 생성과 메모리 할당을 분리하는 이유를 중심으로 정리했습니다.
5. 왜 게임 엔진은 Object Pool을 사용할까?
게임에서는 총알, 파티클, 이펙트 같은 객체들이 굉장히 자주 생성되고 제거됩니다.
그리고 이 과정은 생각보다 큰 비용이 될 수 있습니다.
이 글에서는 Object Pool 구조가 왜 등장했는지, 그리고 왜 최근 엔진들이 메모리 재사용을 중요하게 보는지 정리했습니다.
6. 왜 최근 엔진들은 SoA 구조를 사용하기 시작했을까?
AoS와 SoA는 처음 보면 굉장히 낯선 용어처럼 느껴질 수 있습니다.
하지만 결국 핵심은 데이터를 메모리에 어떻게 배치할 것인가입니다.
이 글에서는 AoS와 SoA의 차이, Cache Locality, Data Oriented Design 흐름을 중심으로 정리했습니다.
7. 왜 최근 게임 엔진은 ECS 구조에 관심을 가지기 시작했을까?
최근 게임 엔진 구조를 보면 ECS, Data Oriented Design, Job System 같은 키워드를 굉장히 자주 보게 됩니다.
이 글에서는 ECS가 왜 등장했는지, 왜 최근 엔진들이 객체보다 데이터를 중요하게 보기 시작했는지 정리했습니다.
게임 엔진을 살펴보면 많은 문제들이 결국 메모리 구조와 관련되어 있다는 것을 알게됩니다.
그리고 이런 내용들을 이해하기 시작하면 최근 게임 엔진이 왜 지금과 같은 방향으로 발전하고 있는지도 이해되기 시작합니다.
앞으로도 게임 엔진 구조를 지속적으로 정리해보려고 합니다.