게임 엔진 Component 기반 구조 완벽 이해
상속 구조부터 ECS, GameObject, Actor 흐름까지
게임 엔진을 공부하다 보면 어느 순간 비슷한 키워드들을 반복적으로 만나게 됩니다.
- Component
- ECS
- Data Oriented Design
- Cache Locality
- GameObject
- Actor
처음에는 각각 독립적인 기술처럼 느껴질 수도 있습니다.
하지만 조금 더 깊게 살펴보기 시작하면,
최근 게임 엔진 구조가 결국 같은 문제를 해결하는 과정에서 고안된 방법이라는 것을 알게됩니다.
최근의 게임은 규모가 점점 커지고, 처리해야 하는 데이터 양도 폭발적으로 증가하기 시작했습니다.
그리고 최근 CPU 구조 역시 과거와는 많이 달라졌습니다.
이 과정에서 다양한 문제들이 더 중요하게 부각되기 시작했습니다.
- 객체를 어떻게 설계할 것인가
- 데이터를 어떻게 배치할 것인가
- 기능을 어떻게 분리할 것인가
- 복잡도를 어떻게 관리할 것인가
이 시리즈에서는 최근 게임 엔진 구조가 지금과 같은 방향으로 발전한 이유와
왜 Component, ECS, Data Oriented Design 같은 기법들이 등장하게 되었는지를 정리했습니다.
1. 왜 게임 엔진은 Component 구조를 사용할까?
최근 게임 엔진들은 점점 상속 중심 구조보다 Component 기반 조합 구조를 선호하기 시작했습니다.
이 글에서는 최근의 많은 엔진들이 Component 기반 구조를 채택한 이유와
“상속”보다 “기능 조합”을 왜 더 중요하게 보기 시작했는지를 정리했습니다.
2. 객체지향 상속 구조는 왜 점점 복잡해질까?
처음 객체지향 프로그래밍을 배우면
상속 구조가 굉장히 이상적으로 느껴질 수 있습니다.
하지만 게임 규모가 커지고 기능 조합이 많아질수록, 클래스 구조는 점점 복잡해지기 시작합니다.
이 글에서는 왜 게임 개발에서 상속 구조가 점점 복잡해질 수 있는지,
그리고 왜 최근 엔진들이 Component 기반 구조를 선호하는지를 정리했습니다.
3. 컴포넌트 기반 구조는 왜 유지보수에 유리할까?
게임은 기능이 계속 추가되고 수정되는 프로그램입니다.
그리고 프로젝트 규모가 커질수록 복잡도를 어떻게 관리할 것인가가 굉장히 중요한 문제가 됩니다.
이 글에서는 왜 Component 기반 구조가 유지보수와 재사용성 측면에서 유리한지,
그리고 최근 엔진들이 기능을 작은 단위로 분리하기 시작한 이유를 정리했습니다.
4. 유니티와 언리얼 엔진의 Component 구조는 어떻게 다를까?
유니티와 언리얼 엔진은 모두 Component 기반 구조를 적극적으로 사용합니다.
하지만 객체를 바라보는 방식과 엔진 철학이 꽤 다릅니다.
이 글에서는 유니티의 GameObject 구조와 언리얼 엔진의 Actor 구조를 비교하면서,
두 엔진이 왜 서로 다른 방향으로 발전했는지를 정리했습니다.
5. GameObject와 Actor는 무엇이 다를까?
유니티를 사용하다 언리얼 엔진을 접하면 GameObject와 Actor가 정확히 무엇이 다른지 헷갈리는 경우가 많습니다.
겉보기에는 둘 다 Scene 안에 배치되는 객체처럼 보이기 때문입니다.
하지만 실제로는 객체를 바라보는 관점 자체가 다릅니다.
이 글에서는 유니티의 GameObject와 언리얼 엔진의 Actor 구조 차이,
그리고 최근 엔진들이 객체를 어떻게 바라보기 시작했는지를 정리했습니다.
6. 왜 최근 게임 엔진은 ECS 구조에 관심을 가지기 시작했을까?
최근 게임 엔진 구조를 보다 보면 ECS(Entity Component System), Data Oriented Design, Cache Locality 같은 키워드들을 점점 더 자주 접하게 됩니다.
이 글에서는 왜 최근 엔진들이 객체보다 데이터를 더 중요하게 보기 시작했는지,
그리고 왜 ECS 구조가 등장하게 되었는지를 정리했습니다.
게임 엔진 구조를 보다 보면 단순히 “객체를 어떻게 설계할 것인가”보다,
다양한 문제들을 어떻게 해결할 것인가를 고려하는 일이 점점 더 중요해지고 있다는 것을 느끼게 됩니다.
- 데이터를 어떻게 배치할 것인가
- CPU를 어떻게 더 효율적으로 사용할 것인가
- 기능을 어떻게 더 잘 분리할 것인가
- 복잡도를 어떻게 관리할 것인가
그리고 이런 고민이 왜 시작되었고, 각 기법들이 어떤 문제들을 해결하려고 했는지를 이해하기 시작하면
최근 엔진 구조의 발전 방향을 보는 관점이 생기기 시작합니다.
앞으로도 게임 엔진 구조와 관련된 다양한 내용을 계속 정리해보려고 합니다.