Unreal Engine GC는 어떻게 UObject를 추적할까?
🚀 들어가며 이전 글에서는 Unreal Engine이 왜 C++ 기본 RTTI 대신 자체 Reflection 시스템을 사용하는지 살펴봤습니다. 언리얼은 단순 타입 확인을 넘어서 에디터 블루프린트 직렬화 네트워크 복제 가비지 컬렉션(GC) 같은 엔진 전체 기능과 연결되기 때문에,…
Series Archive
게임 개발 및 프로그래밍에 관련된 주제에 대한 카테고리 입니다.
🚀 들어가며 이전 글에서는 Unreal Engine이 왜 C++ 기본 RTTI 대신 자체 Reflection 시스템을 사용하는지 살펴봤습니다. 언리얼은 단순 타입 확인을 넘어서 에디터 블루프린트 직렬화 네트워크 복제 가비지 컬렉션(GC) 같은 엔진 전체 기능과 연결되기 때문에,…
🚀 들어가며 이전 글에서는 C++에서 다운캐스팅이 왜 위험한지, 그리고 dynamic_cast 없이 타입을 확인하기 위한 TypeId/TypeInfo 기반 커스텀 RTTI 시스템을 직접 구현해봤습니다. 그 과정을 보면 자연스럽게 이런 질문이 생깁니다. ❓ 그런데 Unreal Engine은 왜 C++의…
🚀 들어가며 이전 글들에서는 C++ 스마트 포인터의 기본 개념과 함께, shared_ptr, weak_ptr, enable_shared_from_this의 동작 원리를 살펴보았습니다. 그 과정에서 계속 등장한 핵심 개념이 하나 있습니다. 👉 바로 Control Block 입니다. shared_ptr은 객체의 생명주기 관리를 위해…
🚀 들어가며 이전 글에서는 weak_ptr이 왜 필요한지와 함께, shared_ptr의 순환 참조 문제를 어떻게 해결하는지 정리해보았습니다. shared_ptr은 매우 편리한 스마트 포인터입니다. 객체의 생명주기를 자동으로 관리해주고, 객체의 소멸 시점을 정확하게 알 수 없는 상황에서도 안전하게 객체를…
🚀 들어가며 이전 글에서는 shared_ptr의 내부 구조를 살펴보았습니다. shared_ptr은 객체의 생명주기를 관리하기 위해 Control Block을 사용하고, Control Block 안에는 strong count와 weak count 같은 정보가 저장됩니다. shared_ptr은 매우 편리한 도구입니다. 객체의 소멸 시점을 정확하게…
🚀 들어가며 이번 글에서는 shared_ptr의 내부 구조 즉, 동작 매커니즘을 살펴보고자 합니다. 이전 글에서는 C++ 스마트 포인터의 기본 개념과 함께 unique_ptr, shared_ptr, weak_ptr의 사용 기준을 살펴봤습니다. 특히 shared_ptr을 설명할 때 중요한 문장이 있었습니다. “객체의…
🚀 들어가며 C++ 스마트 포인터에 대해 살펴봅니다. C++에서 메모리 관리는 항상 중요한 주제입니다. C++는 사용자(개발자)에게 메모리 관리 책임을 맡기는 대표적인 프로그래밍 언어입니다. 원시 포인터를 직접 다룰 때는 아래와 같이 메모리를 할당하고 해제할 수 있습니다.…
🚀 들어가며 deltaTime은 게임 개발에서 반드시 이해해야 하는 핵심 개념입니다. 게임을 만들다가 이런 경험을 해보셨을 겁니다. 컴퓨터가 빠르면 게임이 빨라지고 컴퓨터가 느리면 게임이 느려진다 같은 코드인데 실행 환경에 따라 게임 속도가 달라집니다. 이 문제를…
dynamic_cast를 왜 써야 하는지, RTTI 개념부터 typeid 활용까지 한 번에 정리했습니다. 👉 잘못된 캐스팅으로 인한 버그, RTTI로 안전하게 해결할 수 있습니다. C++로 게임이나 엔진을 개발하다 보면 이런 문제를 만나게 됩니다. “이 포인터가 실제로…
유니티 GC 완전 정리 (시리즈 모음) 👉 유니티 GC 개념 정리 👉 유니티 GC 동작 원리 👉 유니티 GC 발생 코드 패턴 👉 유니티 GC 줄이는 방법 들어가 유니티 GC Collect를 사용해도 되는지 고민하는…