SlideShare a Scribd company logo
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

More Related Content

PPTX
AAA게임_UI_최적화_및_빌드하기.pptx
PDF
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
PDF
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
PDF
UE4 Garbage Collection
PDF
임태현, 게임 서버 디자인 가이드, NDC2013
PPTX
190119 unreal engine c++ 입문 및 팁
PDF
[NDC2016] TERA 서버의 Modern C++ 활용기
PDF
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
AAA게임_UI_최적화_및_빌드하기.pptx
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
UE4 Garbage Collection
임태현, 게임 서버 디자인 가이드, NDC2013
190119 unreal engine c++ 입문 및 팁
[NDC2016] TERA 서버의 Modern C++ 활용기
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션

What's hot (20)

PDF
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
PDF
게임 개발에 자주 사용되는 디자인 패턴
PDF
[NDC 2009] 행동 트리로 구현하는 인공지능
PDF
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
PDF
MMOG Server-Side 충돌 및 이동처리 설계와 구현
PPTX
언리얼을 활용한 오브젝트 풀링
PPTX
UI아트 작업자를 위한 언리얼엔진4 UMG #1
PPTX
NDC 11 자이언트 서버의 비밀
PPTX
언리얼4 플레이어 컨트롤러의 이해.
PDF
NDC12_Lockless게임서버설계와구현
PPTX
리플렉션과 가비지 컬렉션
PDF
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
PPTX
Unreal animation system
PPTX
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
PDF
나만의 엔진 개발하기
PDF
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
PPTX
게임프로젝트에 적용하는 GPGPU
PPTX
[NDC 2021] 게임 PD가 되어 보니
PPTX
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
PDF
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
게임 개발에 자주 사용되는 디자인 패턴
[NDC 2009] 행동 트리로 구현하는 인공지능
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
MMOG Server-Side 충돌 및 이동처리 설계와 구현
언리얼을 활용한 오브젝트 풀링
UI아트 작업자를 위한 언리얼엔진4 UMG #1
NDC 11 자이언트 서버의 비밀
언리얼4 플레이어 컨트롤러의 이해.
NDC12_Lockless게임서버설계와구현
리플렉션과 가비지 컬렉션
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
Unreal animation system
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
나만의 엔진 개발하기
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
게임프로젝트에 적용하는 GPGPU
[NDC 2021] 게임 PD가 되어 보니
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
Ad

Similar to GameInstance에 대해서 알아보자 (20)

PPTX
Game Play System
PPTX
Start unreal
PDF
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
PDF
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
PDF
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
PDF
포트폴리오 조동현
PDF
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
PPTX
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
PPTX
Port polio게임소개
PPTX
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
PPTX
Unreal_SubSystem.pptx
PPTX
Port polio게임 소개
PDF
Make a shooting game using unity
PDF
Unity 3d study #1
PDF
Aug 22nd, 2023: Case Studies - The Art and Science of Animation Production)
PPT
[0820 석재호]게임 입력의 기록 및 재생
PDF
06_게임엔진구성
PPTX
Gpg 1.13 ~ 1.14
PPTX
Gpg 1.13 ~ 1.14
PPTX
언리얼 리플렉션 & CDO.pptx
Game Play System
Start unreal
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
포트폴리오 조동현
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
Port polio게임소개
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
Unreal_SubSystem.pptx
Port polio게임 소개
Make a shooting game using unity
Unity 3d study #1
Aug 22nd, 2023: Case Studies - The Art and Science of Animation Production)
[0820 석재호]게임 입력의 기록 및 재생
06_게임엔진구성
Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14
언리얼 리플렉션 & CDO.pptx
Ad

More from TonyCms (9)

PPTX
DevRookie_TonyChoi_SpacePartition_Tutorial
PPTX
Unreal_GameAbilitySystem.pptx
PPTX
Unreal python
PPTX
Effective cpp
PPTX
Cpp에서 활용해보는 Lambda식
PPTX
Unreal perception
PPTX
About matinee
PPTX
읽기 좋은 코드가 좋은 코드다.
PPTX
Cascade Shadow Map
DevRookie_TonyChoi_SpacePartition_Tutorial
Unreal_GameAbilitySystem.pptx
Unreal python
Effective cpp
Cpp에서 활용해보는 Lambda식
Unreal perception
About matinee
읽기 좋은 코드가 좋은 코드다.
Cascade Shadow Map

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 01 Game 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) 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
  • 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가 없다면? CSV Parser 클래스 생성 데이터를 관리할 Singleton 클래스 생성 생성한 Singleton 클래스에 데이터 입력
  • 7. 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 쉽고 빠르게 구현해보자!
  • 8. 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
  • 9. 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 생성
  • 10. U n r e a l E n g i n e G a m e I n s t a n c e
  • 11. 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
  • 12. 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 파일 생성 및 저장
  • 13. U n r e a l E n g i n e G a m e I n s t a n c e
  • 14. U n r e a l E n g i n e G a m e I n s t a n c e
  • 15. U n r e a l E n g i n e G a m e I n s t a n c e
  • 16. 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 구조체 정의
  • 17. U n r e a l E n g i n e G a m e I n s t a n c e
  • 18. 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 에 표시할 텍스트 정보.
  • 19. U n r e a l E n g i n e G a m e I n s t a n c e
  • 20. U n r e 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 r e a l E n g i n e G a m e I n s t a n c e
  • 23. 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 추가
  • 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 r e a l E n g i n e G a m e I n s t a n c e
  • 26. 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)
  • 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 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로 설정
  • 29. 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)
  • 30. 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)
  • 31. U n r e a l E n g i n e G a m e I n s t a n c e 실행해서 로그를 확인해보면 데이터를 확인해 볼 수 있습니다.
  • 32. 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
  • 33. 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

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