
책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)
책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code
1. 게임 객체(Game Object)
게임을 구성하는 요소들이다.
그동안 Game 클래스가 멤버 변수를 사용해서 모든 일을 처리했다.
즉, 하나의 게임 객체안에 모든 기능(요소)을 구현했다.
2. 게임 객체 분리
현재까지 구현한 게임 객체로 분리할 수 있는 요소는 3가지이다.
a. 배경
b. 우주선
c. 게임 관리자(Game 클래스)

이렇게 게임 객체를 분리하면, 좀 더 유연한 구조로 게임을 만들 수 있다.
3. 컴포넌트(Component) 게임 객체 모델
\( \text{Game Object} = \text{Actor} + \text{Component} \)
게임을 구성하는 각 요소를, 각각의 객체로 분리하고, 이렇게 분리된 하나의 객체를 Actor라 부른다.
그리고 Actor를 자기 역할(?)에 필요한 Componet(기능)를 가진다.

현재까지 만든 게임을 Actor - Component 형태로 변경하려면,
a. 배경 Actor
b. 우주선 Actor
c. Actor 관리자(Game Manager)로 분리하면 된다.
4. 프로그램 흐름 변화
그동안 작성한 코드를 컴포넌트 게임 객체 모델로 변경하면, 다음과 같은 형태로 변경된다.

Game 클래스는 Actor 관리자(Game Manager)로 변한다.
이전에는 runLoop()에서 직접 처리했다면, 이제는 Game에서 동작하고 있는 Actor들을 호출만 하면 된다.
Game에게 호출당하는 Actor들은 각각 가지고 있는 Component에 의해 동작이 달라질 것이다.
5. Actor와 Component의 구분
컴포넌트 기반 게임 객체 모델에서, Actor는 독립적인 존재이고, 고유의 정체성과 생명 주기를 가진다.
예를들면, 플레이어, NPC, 총알 등은 게임내에서 독립적인 위치, 상태, 생명주기를 가지므로 Actor로 생성해야 한다.
반면 컴포넌트는 Actor의 특성이다.
예를들면, 충돌감지, 이미지 출력, 애니메이션 등은 모든 Actor가 필요한 것이 아니다.
특정 Actor가 자신의 역할을 수행하기 위해 필요한 특성(기능)이다.
6. Sprite
스프라이트는 2D 게임상의 시각적 오브젝트(캐릭터, 배경 등)를 뜻한다.
텍스처는 이미지 그 자체이고, 스프라이트는 그 이미지를 어디에 어떻게 그릴지를 포함하는 더 큰 정보이다.
Component 구조에서 텍스처는 스프라이트로 관리된다.
모든 Actor가 이미지를 출력해야하는 것은 아니므로, Sprite는 Component로 구현한다.
'Game Programming in C++' 카테고리의 다른 글
| Game Programming in C++ Chapter2 - Actor (0) | 2025.09.05 |
|---|---|
| Game Programming in C++ Chapter2 - Game Manager (0) | 2025.09.05 |
| Game Programming in C++ Chapter2 - Animation (0) | 2025.08.31 |
| Game Programming in C++ Chapter2 - 배경 스크롤 (0) | 2025.08.30 |
| Game Programming in C++ Chatper2 - 개요 (0) | 2025.08.30 |