Company
교육 철학

Core Architecture

코어 아키텍처

관련 소스 파일
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

코어 아키텍처는 두 가지 주요 클래스인 GameEntryBaseComponent를 중심으로 전개됩니다.

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를 기반으로 하는 컴포넌트 기반 설계로 구축되어 있습니다. 프레임워크는 컴포넌트 등록, 초기화, 그리고 헬퍼를 통한 확장성에 대해 일관된 패턴을 사용합니다. 이러한 아키텍처는 관심사의 명확한 분리를 통해 모듈화되고 유지 보수 가능한 게임을 만드는 데에 견고한 토대를 제공합니다.