게임 개발자를 위한 메모리 구조 1 – 스택과 힙이 중요한 이유
게임 개발에서 스택과 힙을 아는 게 중요할까요? 개발을 처음 공부하시는 분들은 스택과 힙을 아는 게 그렇게 중요할까? 그냥 적절하게 변수를 생성하고, 생성한 변수를 다루는 함수를 잘 작성해서 기능을 구현하면 되는 게 아닐까? 정도로 생각하실…
Series Archive
게임 엔진 프레임워크의 구조와 설계 방법, 렌더링, 메모리 관리 등 내부 동작 원리를 중심으로 다루는 카테고리입니다.
게임 개발에서 스택과 힙을 아는 게 중요할까요? 개발을 처음 공부하시는 분들은 스택과 힙을 아는 게 그렇게 중요할까? 그냥 적절하게 변수를 생성하고, 생성한 변수를 다루는 함수를 잘 작성해서 기능을 구현하면 되는 게 아닐까? 정도로 생각하실…
들어가며 최근 흥미로운 글 하나를 읽었습니다. 바로 Sebastian Aaltonen의 “No Graphics API“라는 글입니다. 제목만 보면 마치 그래픽스 API 자체가 필요 없다는 주장처럼 보이기도 합니다. 하지만 실제 내용은 조금 다릅니다. 이 글은 아래와 같이 현대의…
🚀 들어가며 이전 글에서는 weak_ptr이 왜 필요한지와 함께, shared_ptr의 순환 참조 문제를 어떻게 해결하는지 정리해보았습니다. shared_ptr은 매우 편리한 스마트 포인터입니다. 객체의 생명주기를 자동으로 관리해주고, 객체의 소멸 시점을 정확하게 알 수 없는 상황에서도 안전하게 객체를…
🚀 들어가며 이전 글에서는 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…