컴포넌트 베이스 구조

컴포넌트란?

  • 독립적, 교체에 용이하고, 재사용 가능한 기능들의 집합
  • 다른 컴포넌트와 상호작용하기 위해 디자인된 소프트웨어 객체
    • 기능을 수행하기 위한 목적이 있고 그에 맞는 인터페이스를 제공

왜 컴포넌트를 사용하는가?

확장성

  • 기존의 컴포넌트를 기반으로 새로운 행동으로 확장하기에 용이
  • Renderer -> Sprite, Model, Text, Particle, …

재활용성

  • 다양한, 다른 상황들에 대해 재사용이 가능

독립성

  • 컴포넌트는 최대한 상호 독립적으로 작동하도록 디자인 됨
  • Transform 같은 건 조금 예외적이긴 한 것 같다

교체성

  • 컴포넌트는 쉽게 다른 컴포넌트로 대체가 가능
  • Object 객체에 추가 / 제거가 용이함

고유 시스템에 의존적

  • 컴포넌트들은 종속되어 있는 각 시스템에 의해서만 업데이트됨
    • Sprite -> Graohics System
    • SFX, BGM -> Sound System
    • Collision -> Physics System

작동 원리

  • 각 컴포넌트는 게임 스테이트에 관련된 데이터를 가지고 있음
  • 엔티티(게임 오브젝트)는 여러 컴포넌트를 가지고 있음
  • 시스템은 각자 업데이트/작동시킬 컴포넌트를 가지고 있고 이를 실행

장점

버전 업데이트에 용이

  • 새로운 컴포넌트를 개발하고 기존 버전에 적용한 컴포넌트를 교체하는 데 용이

저비용

  • 써드파티 컴포넌트를 사용하면 개발 및 유지관리 비용을 낮출 수 있음

효율적인 개발 & 독립성

  • 기존 시스템 혹은 컴포넌트에 영향을 주지 않고 새 기능을 개발
  • 기능이 독립적으로 구분되어 개발되므로 동시 개발에 용이

재사용성

  • 독립 모듈로 개발된 컴포넌트는 재사용성 증가

출처

Categories: ,

Updated: