게임 인스턴스는 언리얼 엔진에서 게임 전체의 수명 주기 동안 존재하는 유일한 객체로, 전역 데이터 저장 및 관리에 이상적인 도구입니다.
게임 인스턴스의 개념과 역할
- 정의 : 게임이 실행되는 동안 단 하나만 존재하는 객체
- 역할
- 전역 데이터 저장소
- 레벨 간 데이터 유지
- 게임 전체 설정 관리
- 싱글톤 패턴 구현
게임 인스턴스 생성 방법
- 콘텐츠 브라우저에서 우클릭
- 'Blueprint Class' 선택 후 'Game Instance' 선택
- 게임 인스턴스 블루프린트 이름 지정 (예 : BP_MyGameInstance)
- 프로젝트 설정에서 생성한 게임 인스턴스 설정
전역 데이터 저장 및 접근
게임 인스턴스를 사용하여 전역 변수를 저장하고 어디서든 접근할 수 있습니다.
예 : 플레이어 점수 관리
레벨 간 데이터 유지
게임 인스턴스는 레벨 전환 시에도 데이터를 유지합니다.
예 : 레벨 간 인벤토리 유지
싱글톤 패턴 구현
게임 인스턴스는 자연스럽게 싱글톤 패턴을 구현합니다.
예 : 오디오 관리자
게임 인스턴스 초기화
게임 실행 시 가장 먼저 호출되는 Init 함수를 활용하여 초기 설정을 수행할 수 있습니다.
주의해야 할 점
1. 과도한 사용 자제*
- 모든 데이터를 게임 인스턴스에 저장하면 관리가 어려워질 수 있습니다.
2. 메모리 관리
- 게임 전체 수명 동안 유지되므로 불필요한 대용량 데이터 저장 주의
3. 동시성 문제
- 멀티스레드 환경에서 데이터 접근 시 동기화 고려
4. 저장 및 로드
- 게임 인스턴스 데이터의 저장 및 로드 메커니즘 구현 필요
5. 테스트 어려움
- 전역 상태로 인해 단위 테스트가 복잡해질 수 있음
효과적인 활용 사례
1. 플레이어 프로그레스 추적
- 레벨 간 유지되어야 하는 플레이어 상태 정보 저장
2. 게임 설정 관리
- 그래픽, 오디오 등 게임 전체 설정 저장 및 관리
3. 글로벌 이벤트 시스템
4. 세이브 시스템
5. 디버그 모드 제어
예제 : 멀티레벨 퀘스트 시스템
이 예제에서 게임 인스턴스는 여러 레벨에 걸쳐 있는 퀘스트의 상태를 추적하고 관리합니다.
퀘스트 제공자와 목표 오브젝트는 게임 인스턴스를 통해 퀘스트 정보에 접근하고 업데이트합니다.