C++ 델리게이트 시스템 직접 구현: 게임 엔진 이벤트 구조 만들기
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 std::function과 lambda를 활용해서 유연한 콜백 구조를 만드는 방법을 살펴봤습니다. std::function<void()> func = []() { std::cout <<…
Series Archive
C++의 문법 자체를 설명하기 보다는 왜 이런 구조가 필요한지, 내부에서 어떤 일이 일어나는지, 그리고 실제 게임 개발과 엔진 개발에서 어떻게 활용되는지를 중심으로 정리하는 카테고리입니다.
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 std::function과 lambda를 활용해서 유연한 콜백 구조를 만드는 방법을 살펴봤습니다. std::function<void()> func = []() { std::cout <<…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 함수 포인터를 이용해 함수를 나중에 실행하는 콜백 구조에 대해 살펴봤습니다. void Execute(void (*callback)()) { callback(); }…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 언리얼 엔진의 델리게이트, 유니티의 이벤트 시스템의 기반이 되는 개념인 함수 포인터에 대해 살펴봅니다. 게임에서 어떤 키를 눌렀을…
게임을 만들다 보면 자연스럽게 “게임 루프(Game Loop)”라는 구조를 접하게 됩니다. 캐릭터가 움직이고, 입력이 처리되고, 화면이 계속 갱신되는 이유도 결국 게임 루프가 계속 반복되기 때문입니다. 그런데 처음에는 이런 의문이 생기기도 합니다. 왜 게임은 while 문…
🚀 들어가며 이전 글에서는 C++로 게임 루프를 직접 구현하면서👉 고정 프레임(Fixed Timestep) 구조를 살펴봤습니다. 이번 글에서는 한 단계 더 나아가👉 게임 루프의 다양한 방식들을 비교해보겠습니다. 🎯 이번 글의 목표 게임 루프에는 여러 방식이 존재합니다.…
🚀 들어가며 이전 글에서는 게임 루프의 기본 개념과deltaTime이 왜 필요한지 살펴봤습니다. 👉 게임은 반복되는 루프를 통해 계속 실행된다 이번 글에서는 한 단계 더 나아가👉 C++로 실제 동작하는 게임 루프를 구현해보겠습니다. 🎯 이번 글의 목표…
🚀 들어가며 이번 글에서는 C++ 게임 루프의 기본 구조와 게임이 어떻게 계속 실행되는지를 설명합니다. 게임을 실행하면 캐릭터가 움직이고, 화면이 계속 갱신됩니다. 그렇다면 이런 질문이 자연스럽게 떠오릅니다. ❓ 게임은 어떻게 “계속” 실행되는 걸까? 이 질문에…
예제 코드 깃허브 링크 🚀 들어가며 👉 이 시리즈는 RTTI 개념에서 시작해 엔진 구조까지 단계적으로 확장됩니다. C++에서 타입을 다루는 방법은 단순한 문법 이상의 의미를 가집니다. dynamic_cast로 시작해서👉 직접 RTTI를 구현하고, 나아가 엔진 수준…
예제 코드 깃허브 링크 🚀 들어가며 이번 글에서는 C++ TSubclassOf 구현을 통해 타입 정보를 기반으로 객체를 생성하는 방법을 살펴봅니다. 이전 글에서 우리는 다음의 내용을 이해하고 구현했습니다. dynamic_cast의 원리 이해 다운캐스팅의 위험성 TypeId 기반 RTTI…
예제 코드 깃허브 링크 🚀 들어가며 이전 글에서는 TypeId 기반으로👉 dynamic_cast 없이 타입을 비교하는 방법을 구현했습니다. if (obj->Is(Player::TypeId())) 이 방식은 매우 빠르고 단순합니다.하지만 실제로 사용하다 보면 한 가지 한계에 부딪힙니다. ❗ 타입에 대한 “정보”가…