About
Game Instance
발 표 자 최 민 수
U n r e a l E n g i n e
2019.07.27 Dev Rookie
Dev Rookie
Unreal Engine
CONTENTS
01 Game Instance란?
02 Life Cycle
03 실습!
04 Q & A
01
1) 왜 이 주제를 선정했나?
2) 그래서 준비했습니다~!
이전에 스터디에서 언급 됬던 내용
• 데이터는 코드에 있는게 아닌 엑셀에 있다고 했다.
• 그러면 구현 방법에 대해서도 얘기해보면 좋을 것 같다.
포트폴리오에 활용을 해보자!
• 더 이상의 하드 코딩은 NO!
• 데이터를 불러와서 사용하는 것에 익숙해지도록 하자!
U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance
하는 일
01
1) Game Instance란?
“게임이 동작하는 프로그램”
목표
Game Instance를 활용해 캐릭터의 정보를 저장하고 활용해보자.
간단히 게임 그 자체를 의미한다.
1. 실행중인 게임의 인스턴스를 위한 고수준 관리자 개체.
2. Level이 전환되더라도 공유할 수 있는 데이터를 저장할
수 있는 전역 개체.
U n r e a l E n g i n e G a m e I n s t a n c e
Unreal Engine
GameInstance
01
[ 오늘의 내용 ]
• GameInstance를 통한 캐릭터의 능력치 설정
GameInstance 생
성
• 각각의 Row에 캐릭터에게 부여할 능력치의
값을 저장
CSV 파일 생성
• 불러온 데이터를 저장할 구조체 생성구조체 생성
• Actor와 분리해 유지보수에 용이하게 설계
ActorComponent
활용
U n r e a l E n g i n e G a m e I n s t a n c e
01 GameInstance가 없다면?
CSV Parser
클래스 생성
데이터를 관리할
Singleton 클래스
생성
생성한 Singleton
클래스에 데이터
입력
01
U n r e a l E n g i n e G a m e I n s t a n c e
쉽고 빠르게 구현해보자!
02
U n r e a l E n g i n e G a m e I n s t a n c e
https://api.unrealengine.com/KOR/Gameplay/Framework/GameFl
ow/index.html
03
U n r e a l E n g i n e G a m e I n s t a n c e
Game Instance 생성
U n r e a l E n g i n e G a m e I n s t a n c e
MINHEEBLOG
U n r e a l E n g i n e G a m e I n s t a n c e
03
U n r e a l E n g i n e G a m e I n s t a n c e
CSV 파일 생성 및 저장
U n r e a l E n g i n e G a m e I n s t a n c e
U n r e a l E n g i n e G a m e I n s t a n c e
U n r e a l E n g i n e G a m e I n s t a n c e
03
U n r e a l E n g i n e G a m e I n s t a n c e
구조체 정의
U n r e a l E n g i n e G a m e I n s t a n c e
U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance 생성(DRUGameInstance.cpp)
DataTable에 저장된 정보는 FindRow를 통해 데이터를 얻어옴.
FindRow(FName RowName, const TCHAR* ContextString);
RowName : 위에 정의한 테이블의 Name을 이용해 Row Data를 가져옴.
ContextString : FindRow에 실패했을 경우 언리얼에서 띄워주는 Warning
에 표시할 텍스트 정보.
U n r e a l E n g i n e G a m e I n s t a n c e
U n r e a l E n g i n e G a m e I n s t a n c e
01
Data Table
• Ustruct와 그 변수에 1:1 매핑되는 열 이름으로 구성
• FTableRowBase를 상속받아야 한다.
Data Curve
• Data Table과 유사하지만, 부동 소수점 유형만 지원
• 부동소수점 실수를 통한 보간에 특화되어 있음.
• 밸런싱, 아이템 배분, 기술이나 능력에 대한 특성 조절에 유용.
U n r e a l E n g i n e G a m e I n s t a n c e
GameInstance
U n r e a l E n g i n e G a m e I n s t a n c e
03
U n r e a l E n g i n e G a m e I n s t a n c e
Actor Component 추가
02
1) Actor Component를 사용하는 이유
Game Instance
① 캐릭터의로직과캐릭터정보에대한로직의분리
② 유지보수에용이하게하기위해서.
③ SRP의원칙을준수하자.
④ LifeCycle 상Actor보다Actor Component가 초기화가더빠르다.
U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요
MINHEEBLOG
U n r e a l E n g i n e G a m e I n s t a n c e
U n r e a l E n g i n e G a m e I n s t a n c e
CharacterStatComponent 생성
(CharacterStatComponent.h)
02
1) Transient 프로퍼티 지정자
Game Instance
① 언리얼오브젝트에는Serialzation 기능이있어서UPROPERTY 속성을저장하고로드할수있다.
② 하지만이키워드를사용한프로퍼티는휘발성데이터로지정됨.
③ 프로퍼티에대한저장또는로드를지원하지않음.
③ CurrentHp와 같은시시각각변동해야하는데이터의경우저장을해둘이유는없음.
U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요
U n r e a l E n g i n e G a m e I n s t a n c e
Actor의
PostInitializeComponents에
대응되는 InitializeComponent
함수.
사용하기 위해선 생성자에서
bWantsInitializeComponent
값을 true로 설정
U n r e a l E n g i n e G a m e I n s t a n c e
CharacterStatComponent 선언 (MyCharacter.h)
U n r e a l E n g i n e G a m e I n s t a n c e
Hp HUD 위젯 생성 후 캐릭터의 정보를 토대로 표현 (MyCharacter.cpp)
U n r e a l E n g i n e G a m e I n s t a n c e
실행해서 로그를 확인해보면 데이터를 확인해 볼 수 있습니다.
U n r e a l E n g i n e G a m e I n s t a n c e
THANK
YOU
U n r e a l E n g i n e G a m e I n s t a n c e
Q & A

GameInstance에 대해서 알아보자

  • 1.
    About Game Instance 발 표자 최 민 수 U n r e a l E n g i n e 2019.07.27 Dev Rookie
  • 2.
    Dev Rookie Unreal Engine CONTENTS 01Game Instance란? 02 Life Cycle 03 실습! 04 Q & A
  • 3.
    01 1) 왜 이주제를 선정했나? 2) 그래서 준비했습니다~! 이전에 스터디에서 언급 됬던 내용 • 데이터는 코드에 있는게 아닌 엑셀에 있다고 했다. • 그러면 구현 방법에 대해서도 얘기해보면 좋을 것 같다. 포트폴리오에 활용을 해보자! • 더 이상의 하드 코딩은 NO! • 데이터를 불러와서 사용하는 것에 익숙해지도록 하자! U n r e a l E n g i n e G a m e I n s t a n c e GameInstance
  • 4.
    하는 일 01 1) GameInstance란? “게임이 동작하는 프로그램” 목표 Game Instance를 활용해 캐릭터의 정보를 저장하고 활용해보자. 간단히 게임 그 자체를 의미한다. 1. 실행중인 게임의 인스턴스를 위한 고수준 관리자 개체. 2. Level이 전환되더라도 공유할 수 있는 데이터를 저장할 수 있는 전역 개체. U n r e a l E n g i n e G a m e I n s t a n c e Unreal Engine GameInstance
  • 5.
    01 [ 오늘의 내용] • GameInstance를 통한 캐릭터의 능력치 설정 GameInstance 생 성 • 각각의 Row에 캐릭터에게 부여할 능력치의 값을 저장 CSV 파일 생성 • 불러온 데이터를 저장할 구조체 생성구조체 생성 • Actor와 분리해 유지보수에 용이하게 설계 ActorComponent 활용 U n r e a l E n g i n e G a m e I n s t a n c e
  • 6.
    01 GameInstance가 없다면? CSVParser 클래스 생성 데이터를 관리할 Singleton 클래스 생성 생성한 Singleton 클래스에 데이터 입력
  • 7.
    01 U n re a l E n g i n e G a m e I n s t a n c e 쉽고 빠르게 구현해보자!
  • 8.
    02 U n re a l E n g i n e G a m e I n s t a n c e https://api.unrealengine.com/KOR/Gameplay/Framework/GameFl ow/index.html
  • 9.
    03 U n re a l E n g i n e G a m e I n s t a n c e Game Instance 생성
  • 10.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 11.
    MINHEEBLOG U n re a l E n g i n e G a m e I n s t a n c e
  • 12.
    03 U n re a l E n g i n e G a m e I n s t a n c e CSV 파일 생성 및 저장
  • 13.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 14.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 15.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 16.
    03 U n re a l E n g i n e G a m e I n s t a n c e 구조체 정의
  • 17.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 18.
    U n re a l E n g i n e G a m e I n s t a n c e GameInstance 생성(DRUGameInstance.cpp) DataTable에 저장된 정보는 FindRow를 통해 데이터를 얻어옴. FindRow(FName RowName, const TCHAR* ContextString); RowName : 위에 정의한 테이블의 Name을 이용해 Row Data를 가져옴. ContextString : FindRow에 실패했을 경우 언리얼에서 띄워주는 Warning 에 표시할 텍스트 정보.
  • 19.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 20.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 21.
    01 Data Table • Ustruct와그 변수에 1:1 매핑되는 열 이름으로 구성 • FTableRowBase를 상속받아야 한다. Data Curve • Data Table과 유사하지만, 부동 소수점 유형만 지원 • 부동소수점 실수를 통한 보간에 특화되어 있음. • 밸런싱, 아이템 배분, 기술이나 능력에 대한 특성 조절에 유용. U n r e a l E n g i n e G a m e I n s t a n c e GameInstance
  • 22.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 23.
    03 U n re a l E n g i n e G a m e I n s t a n c e Actor Component 추가
  • 24.
    02 1) Actor Component를사용하는 이유 Game Instance ① 캐릭터의로직과캐릭터정보에대한로직의분리 ② 유지보수에용이하게하기위해서. ③ SRP의원칙을준수하자. ④ LifeCycle 상Actor보다Actor Component가 초기화가더빠르다. U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요 MINHEEBLOG
  • 25.
    U n re a l E n g i n e G a m e I n s t a n c e
  • 26.
    U n re a l E n g i n e G a m e I n s t a n c e CharacterStatComponent 생성 (CharacterStatComponent.h)
  • 27.
    02 1) Transient 프로퍼티지정자 Game Instance ① 언리얼오브젝트에는Serialzation 기능이있어서UPROPERTY 속성을저장하고로드할수있다. ② 하지만이키워드를사용한프로퍼티는휘발성데이터로지정됨. ③ 프로퍼티에대한저장또는로드를지원하지않음. ③ CurrentHp와 같은시시각각변동해야하는데이터의경우저장을해둘이유는없음. U n r e a l E n g i n e G a m e I n s t a n c e제목을입력하세요
  • 28.
    U n re a l E n g i n e G a m e I n s t a n c e Actor의 PostInitializeComponents에 대응되는 InitializeComponent 함수. 사용하기 위해선 생성자에서 bWantsInitializeComponent 값을 true로 설정
  • 29.
    U n re a l E n g i n e G a m e I n s t a n c e CharacterStatComponent 선언 (MyCharacter.h)
  • 30.
    U n re a l E n g i n e G a m e I n s t a n c e Hp HUD 위젯 생성 후 캐릭터의 정보를 토대로 표현 (MyCharacter.cpp)
  • 31.
    U n re a l E n g i n e G a m e I n s t a n c e 실행해서 로그를 확인해보면 데이터를 확인해 볼 수 있습니다.
  • 32.
    U n re a l E n g i n e G a m e I n s t a n c e THANK YOU
  • 33.
    U n re a l E n g i n e G a m e I n s t a n c e Q & A

Editor's Notes

  • #4 http://minheeblog.tistory.com/category/PPT
  • #5 http://minheeblog.tistory.com/category/PPT
  • #22 http://minheeblog.tistory.com/category/PPT
  • #25 http://minheeblog.tistory.com/category/PPT
  • #27 http://minheeblog.tistory.com/category/PPT
  • #28 http://minheeblog.tistory.com/category/PPT
  • #29 http://minheeblog.tistory.com/category/PPT
  • #33 http://minheeblog.tistory.com/category/PPT
  • #34 http://minheeblog.tistory.com/category/PPT