코어 아키텍처
관련 소스 파일
•
GameFramework.prefab
•
GameFramework.prefab.meta
•
Scripts/Runtime/Base/BaseComponent.cs
•
Scripts/Runtime/Base/GameEntry.cs
•
Scripts/Runtime/Entity/Entity.cs
•
Scripts/Runtime/Entity/EntityLogic.cs
•
Scripts/Runtime/UI/UIForm.cs
•
Scripts/Runtime/UI/UIFormLogic.cs
•
Scripts/Runtime/Utility/DefaultLogHelper.cs
•
Scripts/Runtime/Utility/Log.cs
Unity Game Framework의 코어 아키텍처는 다른 모든 시스템들이 구축되는 기초 구조를 제공합니다. 이 페이지는 프레임워크의 근간을 이루는 기본적인 아키텍처 패턴, 초기화 과정, 그리고 컴포넌트 간의 관계를 설명합니다. 리소스 관리나 UI 시스템과 같은 특정 시스템에 대한 정보는 해당 전용 페이지(리소스 관리 시스템, UI 및 엔티티 시스템)를 참조하세요.
프레임워크 개요
Unity Game Framework는 정적 GameEntry 클래스를 중심으로 한 컴포넌트 기반 아키텍처를 사용합니다. 이 클래스는 모든 프레임워크 기능에 대한 중앙 접근 지점 역할을 합니다. 프레임워크는 다음의 핵심 원칙에 따라 설계되었습니다:
•
모듈화를 위한 컴포넌트 기반 설계
•
Unity 전용 코드와 코어 게임 프레임워크 로직의 분리
•
확장을 위한 일관된 헬퍼 패턴
•
잘 정의된 컴포넌트 라이프사이클
이제 이러한 원칙들이 코어 아키텍처에 어떻게 구현되는지 살펴보겠습니다.
GameEntry와 BaseComponent
코어 아키텍처는 두 가지 주요 클래스인 GameEntry와 BaseComponent를 중심으로 전개됩니다.
GameEntry
GameEntry는 모든 프레임워크 기능에 대한 중앙 접근 지점 역할을 하는 정적 클래스입니다. 이 클래스는 컴포넌트의 레지스트리를 유지하고, 이를 접근할 수 있는 메서드를 제공합니다.
모든 프레임워크 컴포넌트는 초기화 중에 GameEntry에 등록되며, 그 후 어떤 스크립트든 다음과 같이 접근할 수 있습니다:
SomeComponent component = GameEntry.GetComponent<SomeComponent>();
C#
복사
GetComponent<T>() 메서드는 등록된 컴포넌트의 연결 리스트를 탐색하여 요청된 타입과 일치하는 것을 찾습니다.
BaseComponent
BaseComponent는 코어 프레임워크를 초기화하는 루트 MonoBehaviour 컴포넌트입니다. 이 클래스는 다음과 같은 역할을 수행합니다:
•
필수 헬퍼(text, version, logging 등) 설정
•
전역 설정(frame rate, 백그라운드 실행 등) 구성
•
프레임워크 업데이트 루프 시작
BaseComponent는 반드시 초기 씬에 존재해야 하며, 일반적으로 GameFramework.prefab의 일부입니다.
컴포넌트 등록과 라이프사이클
프레임워크의 컴포넌트들은 일관된 등록 패턴과 라이프사이클을 따릅니다:
각 컴포넌트는
•
Awake() 시점에 GameEntry에 자신을 등록
•
Start()에서 내부 시스템 초기화
•
매 프레임 업데이트에서 자신의 시스템 갱신
•
파괴될 때 리소스 정리
이 일관된 라이프사이클은 올바른 초기화 순서와 리소스 관리가 보장되도록 합니다.
프레임워크 구조
전체 프레임워크는 게임 기능의 특정 측면을 담당하는 컴포넌트들의 집합으로 조직되어 있습니다.
각 컴포넌트는 매니저 클래스와 헬퍼 인터페이스를 통해 대응되는 시스템에 연결됩니다.
헬퍼 패턴
프레임워크 전반에 걸쳐 사용되는 핵심 아키텍처 패턴은 헬퍼 패턴(Helper Pattern) 입니다. 이 패턴은 합리적인 기본 구현을 제공하면서도 커스터마이징과 확장을 가능하게 합니다.
프레임워크에서는 이 패턴이 일관되게 적용됩니다:
•
각 컴포넌트는 관련된 매니저 인터페이스를 가짐
•
각 매니저는 플랫폼 특화 구현을 위해 헬퍼 인터페이스 사용
•
모든 헬퍼에 대해 기본 구현 제공
•
기본 구현을 오버라이드하여 커스텀 헬퍼 구현 가능
예: DefaultLogHelper, DefaultResourceHelper 등
초기화 흐름
프레임워크는 특정 초기화 순서를 따릅니다:
•
초기화는 BaseComponent에서 시작되며, 여기서 코어 프레임워크와 모든 헬퍼가 설정됩니다.
•
이후 다른 컴포넌트들이 자신을 등록하고 서브시스템을 초기화합니다.
엔티티 및 UI 로직 패턴
엔티티와 UI 폼의 경우 프레임워크는 일관된 패턴을 사용합니다:
이 패턴은 프레임워크 특화 동작(Entity/UIForm)과 게임 특화 로직(EntityLogic/UIFormLogic)을 분리합니다. 개발자는 로직 클래스를 확장하여 게임 전용 동작을 구현하고, 프레임워크는 라이프사이클과 관리 기능을 담당합니다.
프레임워크 프리팹 구조
프레임워크 전체는 일반적으로 GameFramework.prefab을 통해 초기화되며, 이 안에는 모든 코어 컴포넌트가 올바르게 구성되어 있습니다.
프레임워크를 사용하려면 초기 씬에 이 프리팹을 포함시키기만 하면 됩니다.
컴포넌트 관계 표
컴포넌트 | 설명 | 주요 책임 |
BaseComponent | 코어 초기화 | 프레임워크 초기화, 전역 설정 |
ResourceComponent | 에셋 관리 | 리소스 로딩, 캐싱, 업데이트 |
UIComponent | UI 관리 | UI 폼 생성, 표시, 관리 |
EntityComponent | 엔티티 관리 | 게임 엔티티 생성, 스폰, 관리 |
SceneComponent | 씬 관리 | 씬 로딩 및 전환 |
DebuggerComponent | 디버깅 도구 | 런타임 디버깅 인터페이스 |
DataTableComponent | 게임 데이터 | 구조화된 게임 데이터 로딩 및 접근 |
LocalizationComponent | 현지화 | 다국어 지원 |
ConfigComponent | 설정 | 게임 설정 및 구성 |
ObjectPoolComponent | 오브젝트 풀링 | 자주 사용되는 오브젝트 성능 최적화 |
ReferencePoolComponent | 레퍼런스 풀링 | 레퍼런스 타입 메모리 최적화 |
NetworkComponent | 네트워킹 | 네트워크 통신 |
DownloadComponent | 파일 다운로드 | 외부 파일 다운로드 |
WebRequestComponent | 웹 요청 | HTTP 웹 요청 |
FileSystemComponent | 파일 I/O | 파일 시스템 접근 |
SettingComponent | 플레이어 설정 | 지속적인 플레이어 환경 설정 |
요약
Unity Game Framework의 코어 아키텍처는 GameEntry를 중앙 접근 지점으로, BaseComponent를 기반으로 하는 컴포넌트 기반 설계로 구축되어 있습니다. 프레임워크는 컴포넌트 등록, 초기화, 그리고 헬퍼를 통한 확장성에 대해 일관된 패턴을 사용합니다. 이러한 아키텍처는 관심사의 명확한 분리를 통해 모듈화되고 유지 보수 가능한 게임을 만드는 데에 견고한 토대를 제공합니다.