ݺߣ

ݺߣShare 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

What's hot (20)

[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
강 민우
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
YEONG-CHEON YOU
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
Wuwon Yu
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계
ByungChun2
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
Hong-Gi Joe
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
NHN FORWARD
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
Unreal python
Unreal pythonUnreal python
Unreal python
TonyCms
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
강 민우
C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현
Bongseok Cho
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
Umg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation BoxUmg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation Box
대영 노
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
행동 트리
행동 트리행동 트리
행동 트리
Sukwoo Lee
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
TonyCms
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
Bongseok Cho
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
강 민우
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
Wuwon Yu
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계
ByungChun2
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
Hong-Gi Joe
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
NHN FORWARD
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
강 민우
C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현
Bongseok Cho
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
Umg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation BoxUmg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation Box
대영 노
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
TonyCms
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
Bongseok Cho

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

게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
현철 허
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
Amazon Web Services Korea
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
EG Lim
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
flashscope
Du room system_portfolio
Du room system_portfolioDu room system_portfolio
Du room system_portfolio
진영 최
TenforFlow Internals
TenforFlow InternalsTenforFlow Internals
TenforFlow Internals
Kiho Hong
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Amazon Web Services Korea
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Dong Chan Shin
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화
QooJuice
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Kiyoung Moon
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
현철 허
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
Amazon Web Services Korea
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
EG Lim
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
flashscope
Du room system_portfolio
Du room system_portfolioDu room system_portfolio
Du room system_portfolio
진영 최
TenforFlow Internals
TenforFlow InternalsTenforFlow Internals
TenforFlow Internals
Kiho Hong
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Amazon Web Services Korea
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Dong Chan Shin
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화
QooJuice
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Kiyoung Moon
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee

More from TonyCms (9)

DevRookie_TonyChoi_SpacePartition_Tutorial
DevRookie_TonyChoi_SpacePartition_TutorialDevRookie_TonyChoi_SpacePartition_Tutorial
DevRookie_TonyChoi_SpacePartition_Tutorial
TonyCms
Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
TonyCms
Unreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptxUnreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptx
TonyCms
Effective cpp
Effective cppEffective cpp
Effective cpp
TonyCms
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
TonyCms
Unreal perception
Unreal perceptionUnreal perception
Unreal perception
TonyCms
About matinee
About matineeAbout matinee
About matinee
TonyCms
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
TonyCms
Cascade Shadow MapCascade Shadow Map
Cascade Shadow Map
TonyCms
DevRookie_TonyChoi_SpacePartition_Tutorial
DevRookie_TonyChoi_SpacePartition_TutorialDevRookie_TonyChoi_SpacePartition_Tutorial
DevRookie_TonyChoi_SpacePartition_Tutorial
TonyCms
Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
TonyCms
Unreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptxUnreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptx
TonyCms
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
TonyCms
Unreal perception
Unreal perceptionUnreal perception
Unreal perception
TonyCms
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
TonyCms
Cascade Shadow MapCascade Shadow Map
Cascade Shadow Map
TonyCms

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