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

[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들강 민우
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
Umg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation BoxUmg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation Box대영 노
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션NHN FORWARD
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
Unreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptxUnreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptxTonyCms
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현Bongseok Cho
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation systemTonyCms
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기KWANGIL KIM
 

What's hot (20)

[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
Umg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation BoxUmg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation Box
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
Unreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptxUnreal_GameAbilitySystem.pptx
Unreal_GameAbilitySystem.pptx
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
 

Similar to GameInstance에 대해서 알아보자

게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow현철 허
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델NAVER D2
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)
AWS re:Invent 특집(4) – 개발자를 위한 신규 서비스 총정리(윤석찬)Amazon Web Services Korea
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2현찬 양
 
칼리굴라 오버도즈의 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 InternalsKiho 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
 

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

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

More from TonyCms

Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptxTonyCms
 
Unreal python
Unreal pythonUnreal python
Unreal pythonTonyCms
 
Effective cpp
Effective cppEffective cpp
Effective cppTonyCms
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식TonyCms
 
Unreal perception
Unreal perceptionUnreal perception
Unreal perceptionTonyCms
 
About matinee
About matineeAbout matinee
About matineeTonyCms
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.TonyCms
 
Cascade Shadow Map
Cascade Shadow MapCascade Shadow Map
Cascade Shadow MapTonyCms
 

More from TonyCms (8)

Unreal_SubSystem.pptx
Unreal_SubSystem.pptxUnreal_SubSystem.pptx
Unreal_SubSystem.pptx
 
Unreal python
Unreal pythonUnreal python
Unreal python
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
 
Unreal perception
Unreal perceptionUnreal perception
Unreal perception
 
About matinee
About matineeAbout matinee
About matinee
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
 
Cascade Shadow Map
Cascade Shadow MapCascade Shadow Map
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

  1. http://minheeblog.tistory.com/category/PPT
  2. http://minheeblog.tistory.com/category/PPT
  3. http://minheeblog.tistory.com/category/PPT
  4. http://minheeblog.tistory.com/category/PPT
  5. http://minheeblog.tistory.com/category/PPT
  6. http://minheeblog.tistory.com/category/PPT
  7. http://minheeblog.tistory.com/category/PPT
  8. http://minheeblog.tistory.com/category/PPT
  9. http://minheeblog.tistory.com/category/PPT