언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

저장 시스템 - 1) 데이터 저장 방식 설정과 MVVM 플러그인 도입

monstro 2025. 12. 18. 11:50
728x90
반응형

- 개요

게임의 현재 데이터저장하는 방식을 어떻게 설정할지 결정하고

MVVM 플러그인을 프로젝트에서 사용하도록 설정하여 관련 UI를 해당 플러그인으로 설계한다

 

1) 데이터 저장 방식 설정

게임에서 저장할 데이터의 종류는 다음과 같다

  • 1) PlayerState가 갖고있는 데이터 : 레벨 + 경험치 + 스킬 포인트 + 능력치 포인트
  • 2) AttriuteSet가 갖고있는 데이터 중에서 PrimaryAttribute
  • 3) 그 외의 데이터 : 플레이어의 Location + 현재 Level + 데이터를 저장할 Slot의 ID 또는 번호

 

위와 같이 저장할 데이터를 결정하였다면 데이터를 저장하는 위치를 결정해야 한다

저장 위치는 크게 로컬의 디스크데이터베이스의 2가지로 구분할 수 있다

  • 1) 로컬의 디스크에 저장하는 경우
    • -- 적합한 게임 : 싱글 플레이어 게임에서 적합
    • -- 장점 : 구현이 간단
    • -- 데이터 위치 : 로컬 머신에 데이터를 저장
    • -- 단점 : 클라이언트에서 데이터를 조작할 수 있음 + 다른 기기에서 호환되지 않음
  • 2) 데이터베이스에 저장하는 경우
    • -- 적합한 게임 : 멀티 플레이어 게임에서 적합
    • -- 장점 : 서버만이 권한을 가지므로 클라이언트의 조작을 차단할 수 있음
    • -- 데이터 위치 : 중앙 서버나 클라우드에 데이터를 저장
    • -- 단점 : 구현하기 어려움

 

프로젝트에서는 네트워크 로직이 일부 섞여있지만 싱글 플레이어 위주의 게임이므로

로컬의 디스크에 게임의 데이터를 저장하도록 설정한다

 

2) MVVM 플러그인 도입

2 - 1) MVC 패턴

현재 프로젝트에서는 MVC 패턴을 사용하여 데이터UI간의 동기화를 진행한다

사용중인 MVC 패턴의 구성은 다음과 같다

  • Model : AbilitySystemComponent 클래스나 AttributeSet 클래스와 같은 데이터와 로직을 가진 클래스
  • View : 정보를 보여주는 UI 클래스
  • Controller : Model로부터 데이터를 가져와 View에 전달하는 WidgetController 클래스

 

위와 같은 패턴 구성에서 파악할 수 있는 특징은 다음과 같다

  • 의존성: ControllerModel을 참조해야 하지만 Model은 Controller를 참조하지 않음
  • 통신 방식 : Observer 패턴인 Delegate를 사용하여 ViewModel의 데이터를 브로드캐스트

 

2 - 2) MVVM 패턴

MVVM 플러그인을 사용하여 MVVM 패턴을 프로젝트에 도입한다

MVVM 패턴은 다음과 같은 특징을 갖고 있다

  • Model - View - ViewModel의 3가지 구성요소
  • ViewModelView는 일반적으로 1 : 1의 관계
  • 언리얼 시스템에서는 하나의 View Model여러 View에서 사용할 수 있는 유연성을 제공
  • ViewModel : MVC 패턴의 Controller와 유사하지만, 데이터 바인딩더 특화되어 있다는 차이점이 존재

 

MVVM 패턴의 "데이터 바인딩"은 다음과 같이 표현할 수 있다

  • MVC 패턴과 비교하여 데이터를 업데이트하는 방식의 차이가 존재
  • 이벤트 기반 : Tick처럼 매 프레임 확인하는 것이 아닌 데이터가 변할 때반응
  • 긴밀한 연결 : View의 변수들ViewModel의 데이터가 직접적으로 연결(Binding)되어 있음
    • 따라서 별도의 브로드캐스트 없이 데이터가 자동으로 갱신

 

위와 같이 구성된 MVVM 패턴을 저장된 데이터를 불러오는 로드 UI에서 사용한다

728x90
반응형