weak_ptr은 왜 필요할까? shared_ptr 순환 참조 문제 이해하기
🚀 들어가며 이전 글에서는 shared_ptr의 내부 구조를 살펴보았습니다. shared_ptr은 객체의 생명주기를 관리하기 위해 Control Block을 사용하고, Control Block 안에는 strong count와 weak count 같은 정보가 저장됩니다. shared_ptr은 매우 편리한 도구입니다. 객체의 소멸 시점을 정확하게…
Series Archive
게임 엔진 프레임워크의 구조와 설계 방법, 렌더링, 메모리 관리 등 내부 동작 원리를 중심으로 다루는 카테고리입니다.
🚀 들어가며 이전 글에서는 shared_ptr의 내부 구조를 살펴보았습니다. shared_ptr은 객체의 생명주기를 관리하기 위해 Control Block을 사용하고, Control Block 안에는 strong count와 weak count 같은 정보가 저장됩니다. shared_ptr은 매우 편리한 도구입니다. 객체의 소멸 시점을 정확하게…
🚀 들어가며 deltaTime은 게임 개발에서 반드시 이해해야 하는 핵심 개념입니다. 게임을 만들다가 이런 경험을 해보셨을 겁니다. 컴퓨터가 빠르면 게임이 빨라지고 컴퓨터가 느리면 게임이 느려진다 같은 코드인데 실행 환경에 따라 게임 속도가 달라집니다. 이 문제를…
dynamic_cast를 왜 써야 하는지, RTTI 개념부터 typeid 활용까지 한 번에 정리했습니다. 👉 잘못된 캐스팅으로 인한 버그, RTTI로 안전하게 해결할 수 있습니다. C++로 게임이나 엔진을 개발하다 보면 이런 문제를 만나게 됩니다. “이 포인터가 실제로…
유니티 GC 확인 방법을 제대로 이해하면 프레임 드랍의 원인을 정확히 파악할 수 있습니다. 유니티 가비지 컬렉션은 눈에 보이지 않기 때문에 Profiler를 통해 직접 확인하는 과정이 반드시 필요합니다. 많은 경우 “GC 때문인 것 같다”는 추측으로…
유니티 GC 줄이는 방법을 이해하면 프레임 드랍 문제를 효과적으로 해결할 수 있습니다. 유니티 가비지 컬렉션은 자동으로 메모리를 정리해주지만, 반복되는 할당이 많으면 성능 문제를 발생시킬 수 있습니다. 이전 글에서는 유니티 GC를 발생시키는 코드 패턴을…
🚀 들어가며 게임을 만들다가 이런 경험을 해보셨을 겁니다. 컴퓨터가 빠르면 게임이 빨라지고 컴퓨터가 느리면 게임이 느려진다 같은 코드인데 실행 환경에 따라 게임 속도가 달라집니다. 이 문제를 해결하는 핵심 개념이 바로 deltaTime입니다. 🎯 문제 상황…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 이전 글에서는 키 입력을 단순히 확인하는 것을 넘어서, Pressed…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 이전 글에서는 GetAsyncKeyState를 이용해 입력 상태 관리하는 방법을 살펴봤습니다.…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 게임을 만들다 보면 가장 먼저 필요한 기능 중 하나가…
C++를 공부하다 보면 함수 포인터(Function Pointer), std::function, Delegate 같은 개념들을 접하게 됩니다. 그런데 처음에는 이런 생각이 들기도 합니다. 함수를 왜 변수처럼 전달할까? 왜 콜백(Callback) 구조가 필요한 걸까? 그리고 게임 엔진을 조금 더 깊게 보다…