SlideShare a Scribd company logo
1 of 27
Download to read offline
DevRookie (박민근) 1
Event Driven Architecture
2019.2.23 박민근 (알콜코더) agebreak@gmail.com
초중급 게임개발자 스터디 데브루키( Dev Rookie)
참! 고! 자! 료!
DevRookie (박민근) 2
DevRookie (박민근) 3
DevRookie (박민근) 4
DevRookie (박민근) 5
게임 프레임워크의 아키텍쳐와
디자인 패턴
2007.11.24 박민근 (민군) agebreak@naver.com
초중급 게임개발자 스터디 데브루키( Dev Rookie)
Game Framework
 시작하기 전에…
 게임 프레임워크란 무엇인가?
 게임 프레임워크와 게임 엔진
 게임 프레임워크의 아키텍쳐
 자주 사용되는 디자인 패턴들
DevRookie (박민근) 7
시작하기 전에…
 게임 프레임워크에 대한 공개 자료 부족
 자신의 경험과 현업의 선배들한테서만 배울 수 있다는 한계성
 아키텍쳐의 능력에 따라 결정되는 디자인
 게임 프레임워크의 표준이나 정석은 존재 하지 않는다.
 이것은 나의 개인 경험에 의거한 내용일뿐 절대적인것은 아니다.
DevRookie (박민근) 8
게임 프레임워크란?
 게임 프로그램을 구성하는 커다란 전체틀(Framework)
 게임 프로그램은 게임 프레임워크로 만들어지는 어플리케이션 이다.
 MFC – 대표적인 Windows Framework
 게임 엔진? 게임 프레임워크?
◼ 게임 프레임 워크 >= 게임 엔진 (라이브러리 != 프레임워크)
◼ 게임 엔진중에는 게임 프레임워크를 포함하는 것들도 있다.
(예. 언리얼, 크라이시스)
 게임의 장르에 상관없이 기본적인 프레임워크는 거의 비슷하다.
 하지만 플랫폼에 따라서 아키텍쳐가 크게 변경되는 경우도 있다.
 설계 원칙 : 확장성, 유연성, OCP, DIP, etc…
DevRookie (박민근) 9
게임 프레임워크란?
 현재 실제 개발중인
프로젝트의 프레임워크
 Layer Base Framework
 Manger Base Framework
 Event Driven Framework
 Scene Base Framework
 여러가지 Framework 패턴들을
조합하여 자기 게임만의 Framework를
만든다.
DevRookie (박민근) 10
게임 프레임워크의 필요성
 게임 프로그램의 커다란 틀을 형성하여 개발의 가이드가 된다.
 게임 프로그램의 로직, 알고리즘, 구조등의 뼈대를 이룬다.
 프레임워크와 어플리케이션을 분리하여 유연성을 가진다.
 다양한 장르와 다양한 게임에 활용될 수 있다.(재사용성)
 잘만들어진 프레임워크는 유연성/직관성/편리성을 가지며, 이것
은 게임 개발기간을 결정하는 직접적인 요인이 된다.
 유연한 프레임워크는 모듈과 로직이 교체/변환이 가능하다.
 다만 설계시에 아키텍쳐적인 설계 능력이 필요하다.
DevRookie (박민근) 11
게임 프레임워크의 구성
 렌더링 시스템 (DX 랩핑, 소팅, 컬링, 렌더링…)
 Core Library (자료구조, 스크립트, 유틸 함수, 수학 함수…)
 게임내 Scene들의 생성/관리/소멸 처리
◼ Login Scene, Lobby Scene, Game Scene…
 게임내의 Entity 객체들의 생성/관리/소멸 처리
◼ 게임내의 모든 캐릭터, 오브젝트, 아이템, 이펙트…
 게임내의 Update(Tick) 구조 구성
 User의 Input에 대한 반응 처리를 구성
 게임내의 로직들의 처리및 구성
 그외 기타 요소들… (유닛테스트, 프로파일러…)
DevRookie (박민근) 12
게임 프레임워크에 사용되는 아키텍쳐(1)
 Layer Base Framework
 각각의 레이어로 구별하여 Framework를 구성
Core Layer (자료구조, 알고리즘, 기초 함수들)
Presentation Layer (Rendering Engine)
Simulation Layer (Game Logic, Network, Script)
Application Layer (Game Client, Tool)
DevRookie (박민근) 13
게임 프레임워크에 사용되는 아키텍쳐(2)
 Manager Base Framework
◼ 각각의 시스템, Entity를 관리하는 매니저들로 구성
Main Thread
Scene Manager Object Manager
Actor Manager
AI Manager
FSM Manager
UI Manager
DevRookie (박민근) 14
Manager Base Framework
 각각의 싱글톤 Manager들이 하위 객체들의 관리를 담당
 Client의 요청에 따라 매니저는 등록된 객체들을 생성/갱신/삭제
들의 작업들을 처리
 메인 스레드에서 싱글톤 Manager들의 생성/갱신/삭제를 처리
 매니저에 속한 객체는 매니저를 통해서만 생성한다.
 매니저에 속한 객체에 접근하는 경우에는 그 객체의 매니저를 통
해서만 접근한다.
 싱글톤 패턴, 프록시 패턴, 팩토리 패턴
DevRookie (박민근) 15
게임 프레임워크에 사용되는 아키텍쳐(3)
 Event Driven Framework
◼ 각 객체의 메시지를 이벤트를 통해서 명령하는 방식
Event Handler
Receiver
Receiver
Receiver
Receiver
Send Event
Client
Client
Client
Send Event
DevRookie (박민근) 16
DevRookie (박민근) 17
DevRookie (박민근) 18
DevRookie (박민근) 19
Event Driven Framework (1)
 전역으로 생성한 이벤트 핸들러를 통하여 리시버들
에게 이벤트를 전달하여 동작을 제어하는 방식
 이벤트 생성 주체에 대한 제약이 없기 때문에 서버/
더미서버/클라이언트/유닛 테스트등에 관계없이 리
시버 객체의 동작을 명령할 수 있다.
 커플링이 없기 때문에, 리시버들은 독립적으로 설계/
구현/교체 될수 있다.
DevRookie (박민근) 20
Event Driven Framework (2)
 리시버들은 자신이 필요해서 등록한 이벤트만을 받게된다.
 객체들이 동작및 로직을 추상화 시킬 수 있다.
 유연한 클라이언트/서버 구조, GUI 설계등에 유용
 유닛 테스트/객체 단위 테스트에 상당히 유용하다
 이벤트의 추가/변경/삭제만으로 로직의 변경이 간단하다.
 옵저버 패턴 (헐리우드 원칙)
DevRookie (박민근) 21
Packet
DevRookie (박민근)
Engine Event
DevRookie (박민근) 23
실제 구현
 실제로 구현해 보면서 공부해 봅시다잉~~
DevRookie (박민근) 24
DevRookie (박민근) 25
옵져버
패턴
Event
Driven
???
DevRookie (박민근) 26
DevRookie (박민근) 27

More Related Content

What's hot

190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁KWANGIL KIM
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)MinGeun Park
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
조정훈, 게임 프로그래머를 위한 클래스 설계, 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
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013devCAT Studio, NEXON
 

What's hot (20)

190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 

Similar to [데브루키] 이벤트 드리븐 아키텍쳐

게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
[0211 박민근] mmorpg에서의 모델툴 개발
[0211 박민근] mmorpg에서의 모델툴 개발[0211 박민근] mmorpg에서의 모델툴 개발
[0211 박민근] mmorpg에서의 모델툴 개발MinGeun Park
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발MinGeun Park
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
Unity 3d study #1
Unity 3d study #1Unity 3d study #1
Unity 3d study #1Hyunwoo Kim
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014NDOORS
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???changehee lee
 
에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~Lee Jungpyo
 
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서용호 김
 
Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)Gamebryo
 
브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회BridgeGames
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfJongwon Kim
 

Similar to [데브루키] 이벤트 드리븐 아키텍쳐 (20)

게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
[0211 박민근] mmorpg에서의 모델툴 개발
[0211 박민근] mmorpg에서의 모델툴 개발[0211 박민근] mmorpg에서의 모델툴 개발
[0211 박민근] mmorpg에서의 모델툴 개발
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
Codex project
Codex projectCodex project
Codex project
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Game Play System
Game Play SystemGame Play System
Game Play System
 
Unity 3d study #1
Unity 3d study #1Unity 3d study #1
Unity 3d study #1
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
 
에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~
 
피니엔진
피니엔진피니엔진
피니엔진
 
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
 
Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)
 
브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회브릿지 Unity3D 기초 스터디 2회
브릿지 Unity3D 기초 스터디 2회
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
 

More from MinGeun Park

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdfMinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석MinGeun Park
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술MinGeun Park
 

More from MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 

[데브루키] 이벤트 드리븐 아키텍쳐

  • 1. DevRookie (박민근) 1 Event Driven Architecture 2019.2.23 박민근 (알콜코더) agebreak@gmail.com 초중급 게임개발자 스터디 데브루키( Dev Rookie)
  • 2. 참! 고! 자! 료! DevRookie (박민근) 2
  • 5. DevRookie (박민근) 5 게임 프레임워크의 아키텍쳐와 디자인 패턴 2007.11.24 박민근 (민군) agebreak@naver.com 초중급 게임개발자 스터디 데브루키( Dev Rookie)
  • 6. Game Framework  시작하기 전에…  게임 프레임워크란 무엇인가?  게임 프레임워크와 게임 엔진  게임 프레임워크의 아키텍쳐  자주 사용되는 디자인 패턴들
  • 7. DevRookie (박민근) 7 시작하기 전에…  게임 프레임워크에 대한 공개 자료 부족  자신의 경험과 현업의 선배들한테서만 배울 수 있다는 한계성  아키텍쳐의 능력에 따라 결정되는 디자인  게임 프레임워크의 표준이나 정석은 존재 하지 않는다.  이것은 나의 개인 경험에 의거한 내용일뿐 절대적인것은 아니다.
  • 8. DevRookie (박민근) 8 게임 프레임워크란?  게임 프로그램을 구성하는 커다란 전체틀(Framework)  게임 프로그램은 게임 프레임워크로 만들어지는 어플리케이션 이다.  MFC – 대표적인 Windows Framework  게임 엔진? 게임 프레임워크? ◼ 게임 프레임 워크 >= 게임 엔진 (라이브러리 != 프레임워크) ◼ 게임 엔진중에는 게임 프레임워크를 포함하는 것들도 있다. (예. 언리얼, 크라이시스)  게임의 장르에 상관없이 기본적인 프레임워크는 거의 비슷하다.  하지만 플랫폼에 따라서 아키텍쳐가 크게 변경되는 경우도 있다.  설계 원칙 : 확장성, 유연성, OCP, DIP, etc…
  • 9. DevRookie (박민근) 9 게임 프레임워크란?  현재 실제 개발중인 프로젝트의 프레임워크  Layer Base Framework  Manger Base Framework  Event Driven Framework  Scene Base Framework  여러가지 Framework 패턴들을 조합하여 자기 게임만의 Framework를 만든다.
  • 10. DevRookie (박민근) 10 게임 프레임워크의 필요성  게임 프로그램의 커다란 틀을 형성하여 개발의 가이드가 된다.  게임 프로그램의 로직, 알고리즘, 구조등의 뼈대를 이룬다.  프레임워크와 어플리케이션을 분리하여 유연성을 가진다.  다양한 장르와 다양한 게임에 활용될 수 있다.(재사용성)  잘만들어진 프레임워크는 유연성/직관성/편리성을 가지며, 이것 은 게임 개발기간을 결정하는 직접적인 요인이 된다.  유연한 프레임워크는 모듈과 로직이 교체/변환이 가능하다.  다만 설계시에 아키텍쳐적인 설계 능력이 필요하다.
  • 11. DevRookie (박민근) 11 게임 프레임워크의 구성  렌더링 시스템 (DX 랩핑, 소팅, 컬링, 렌더링…)  Core Library (자료구조, 스크립트, 유틸 함수, 수학 함수…)  게임내 Scene들의 생성/관리/소멸 처리 ◼ Login Scene, Lobby Scene, Game Scene…  게임내의 Entity 객체들의 생성/관리/소멸 처리 ◼ 게임내의 모든 캐릭터, 오브젝트, 아이템, 이펙트…  게임내의 Update(Tick) 구조 구성  User의 Input에 대한 반응 처리를 구성  게임내의 로직들의 처리및 구성  그외 기타 요소들… (유닛테스트, 프로파일러…)
  • 12. DevRookie (박민근) 12 게임 프레임워크에 사용되는 아키텍쳐(1)  Layer Base Framework  각각의 레이어로 구별하여 Framework를 구성 Core Layer (자료구조, 알고리즘, 기초 함수들) Presentation Layer (Rendering Engine) Simulation Layer (Game Logic, Network, Script) Application Layer (Game Client, Tool)
  • 13. DevRookie (박민근) 13 게임 프레임워크에 사용되는 아키텍쳐(2)  Manager Base Framework ◼ 각각의 시스템, Entity를 관리하는 매니저들로 구성 Main Thread Scene Manager Object Manager Actor Manager AI Manager FSM Manager UI Manager
  • 14. DevRookie (박민근) 14 Manager Base Framework  각각의 싱글톤 Manager들이 하위 객체들의 관리를 담당  Client의 요청에 따라 매니저는 등록된 객체들을 생성/갱신/삭제 들의 작업들을 처리  메인 스레드에서 싱글톤 Manager들의 생성/갱신/삭제를 처리  매니저에 속한 객체는 매니저를 통해서만 생성한다.  매니저에 속한 객체에 접근하는 경우에는 그 객체의 매니저를 통 해서만 접근한다.  싱글톤 패턴, 프록시 패턴, 팩토리 패턴
  • 15. DevRookie (박민근) 15 게임 프레임워크에 사용되는 아키텍쳐(3)  Event Driven Framework ◼ 각 객체의 메시지를 이벤트를 통해서 명령하는 방식 Event Handler Receiver Receiver Receiver Receiver Send Event Client Client Client Send Event
  • 19. DevRookie (박민근) 19 Event Driven Framework (1)  전역으로 생성한 이벤트 핸들러를 통하여 리시버들 에게 이벤트를 전달하여 동작을 제어하는 방식  이벤트 생성 주체에 대한 제약이 없기 때문에 서버/ 더미서버/클라이언트/유닛 테스트등에 관계없이 리 시버 객체의 동작을 명령할 수 있다.  커플링이 없기 때문에, 리시버들은 독립적으로 설계/ 구현/교체 될수 있다.
  • 20. DevRookie (박민근) 20 Event Driven Framework (2)  리시버들은 자신이 필요해서 등록한 이벤트만을 받게된다.  객체들이 동작및 로직을 추상화 시킬 수 있다.  유연한 클라이언트/서버 구조, GUI 설계등에 유용  유닛 테스트/객체 단위 테스트에 상당히 유용하다  이벤트의 추가/변경/삭제만으로 로직의 변경이 간단하다.  옵저버 패턴 (헐리우드 원칙)
  • 24. 실제 구현  실제로 구현해 보면서 공부해 봅시다잉~~ DevRookie (박민근) 24