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 클래스
위와 같은 패턴 구성에서 파악할 수 있는 특징은 다음과 같다
- 의존성: Controller는 Model을 참조해야 하지만 Model은 Controller를 참조하지 않음
- 통신 방식 : Observer 패턴인 Delegate를 사용하여 View에 Model의 데이터를 브로드캐스트
2 - 2) MVVM 패턴
MVVM 플러그인을 사용하여 MVVM 패턴을 프로젝트에 도입한다
MVVM 패턴은 다음과 같은 특징을 갖고 있다
- Model - View - ViewModel의 3가지 구성요소
- ViewModel과 View는 일반적으로 1 : 1의 관계
- 언리얼 시스템에서는 하나의 View Model을 여러 View에서 사용할 수 있는 유연성을 제공
- ViewModel : MVC 패턴의 Controller와 유사하지만, 데이터 바인딩에 더 특화되어 있다는 차이점이 존재
MVVM 패턴의 "데이터 바인딩"은 다음과 같이 표현할 수 있다
- MVC 패턴과 비교하여 데이터를 업데이트하는 방식의 차이가 존재
- 이벤트 기반 : Tick처럼 매 프레임 확인하는 것이 아닌 데이터가 변할 때만 반응
- 긴밀한 연결 : View의 변수들과 ViewModel의 데이터가 직접적으로 연결(Binding)되어 있음
- 따라서 별도의 브로드캐스트 없이 데이터가 자동으로 갱신
위와 같이 구성된 MVVM 패턴을 저장된 데이터를 불러오는 로드 UI에서 사용한다
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 저장 시스템 - 3) 데이터 슬롯 재설정 (0) | 2025.12.20 |
|---|---|
| 저장 시스템 - 2) 데이터 저장을 위한 준비 (0) | 2025.12.20 |
| 화염 폭풍 스킬 - 최종) 화염구의 폭발 피해 추가 + 로컬에서의 GC 실행 (0) | 2025.12.13 |
| 화염 폭풍 스킬 - 1) 쿨타임과 소모비용 + 동작방식 구현 (0) | 2025.12.12 |
| 비전 파편 스킬 - 최종) 쿨타임 + 코스트 적용 그리고 추가적인 설정 (2) (0) | 2025.12.09 |