SlideShare a Scribd company logo
1 of 38
Download to read offline
2019 iFunFactory Dev Day
‘아이펀 엔진으로 MO 게임 서버 개발하기’
‘아이펀 엔진으로 MO 게임 서버 개발하기’
2019 iFunFactory Dev Day
2
장수원
소프트웨어 엔지니어
아이펀 엔진 운영툴 연동하기
2019 iFunFactory Dev Day
1. 목표
2. 큰 그림
3. 기초 작업
4. 구현
1. 기본 유저 정보 확인
2. 인벤토리 조회
3. 아이템 지급
5. Q & A 3
목표
4
2019 iFunFactory Dev Day
목표
• iFun Engine 을 이용해 간단한 웹 운영툴 기능을 실제 구현
• iFunFactory 제공 운영툴 + iFun Engine 컴포넌트를 이용한 간단한 구현
• UI, Web 작업 X
• 이전 세션을 통해 친숙한 API 그대로 사용
5
2019 iFunFactory Dev Day
구현할 내용
• 기본 유저 정보 확인
• ID로 사용자 검색
• 사용자의 게임 내 기초 정보(HP, MP, 경험치, 레벨) 확인
• 로그인 여부 확인
• 인벤토리 조회
• 사용자가 소유한 아이템을 운영툴로 확인
• 아이템 지급
• 사용자에게 아이템을 운영툴로 지급
6
큰 그림
7
2019 iFunFactory Dev Day 8
큰 그림
운영툴
Web
서비스

iFunFactory
제공
HTTP REST API
로그 DB
(Mongo DB)
RDBMS
엔진 서버(town)
게임 구현
운영툴
구현
iFun Engine
프레임워크
고객 지원
운영자 / 통계
Redis
엔진 서버
(field)
2019 iFunFactory Dev Day 9
큰 그림 - 알아볼 내용
운영툴
Web
서비스

iFunFactory
제공
HTTP REST API
로그 DB
(Mongo DB)
RDBMS
엔진 서버(town)
게임 구현
운영툴
구현
iFun Engine
프레임워크
고객 지원
운영자 / 통계
Redis
엔진 서버
(field)
기초 작업
10
2019 iFunFactory Dev Day
구현 개요
1. 엔진 : MANIFEST 파일 수정
• 운영툴 연동 컴포넌트(DeployApiService) 활성화
2. 엔진 : 운영툴 연동 코드 추가
3. 운영톨 : 서버 URL 설정
• 운영툴이 접근할 게임 서버 URL 을 설정
11
2019 iFunFactory Dev Day
• DeployApiService 컴포넌트 추가
12
엔진 : MANIFEST 파일 수정
• ApiService 컴포넌트 설정된 포트를 사용
MANIFEST.town.json
MANIFEST.town.json
2019 iFunFactory Dev Day
엔진 : 운영툴 연동 코드 추가
• DeployApiService::DeployApiHandlerBase 를 상속한 클래스 생성
• 필요한 메써드를 오버라이드
• 서버 시작시 핸들러 등록 코드 추가
13
2019 iFunFactory Dev Day 14
엔진 : 운영툴 연동 클래스 구현
ops_handlers.cc
2019 iFunFactory Dev Day 15
엔진 : 운영툴 연동 클래스 등록
town flavor 서버가 실행될 때 클래스를 등록
devday_server.cc
2019 iFunFactory Dev Day 16
엔진 : CMakeLists.txt 수정
2019 iFunFactory Dev Day
운영툴 : 서버 URL 설정
• ApiService 에 설정한 port 번호를 이용해 설정
• 외부 →게임 서버 해당 port 로 접근할 수 있도록 방화벽 설정
• ‘API 연동 상태’ 기능 활용
• 연동이 잘 되고 있는지 확인 가능
17
2019 iFunFactory Dev Day
운영툴 기능 구현
• API service handler 에 메써드 추가 = 운영툴 기능 추가
• iFun Engine API 와 게임 로직에서 구현했던 기능도 그대로 사용 가능
• 개발 싸이클
1. API 연동 상태 확인
2. 원하는 기능에 필요한 메써드 문서를 통해 확인
3. deploy_api_service.h 에서 메써드 원형을 복사
4. 메써드 구현
18
기본 유저 정보 확인
19
2019 iFunFactory Dev Day
기본 유저 정보 조회
1. 유저 검색
• 검색 방식 목록 가져오기 : GetUserSearchConditions 구현
2. 유저 검색 결과 목록 확인 - 확인할 유저 선택
• 조건에 맞는 유저 목록 검색 : SearchUsers 구현
• 유저가 소유한 캐릭터 가져오기 : GetCharacters 구현
3. 유저 정보 및 유저 캐릭터 정보 확인
• 유저 정보 가져오기 : GetUser 구현
• 캐릭터 정보 가져오기 : GetCharacter 구현
20
2019 iFunFactory Dev Day 21
엔진 : 유저 검색 방식 지정
2019 iFunFactory Dev Day 22
엔진 : 유저 검색 연동
2019 iFunFactory Dev Day 23
엔진 : 유저 검색 연동
2019 iFunFactory Dev Day 24
엔진 : 유저가 소유한 캐릭터 목록
2019 iFunFactory Dev Day 25
엔진 : 유저 정보 가져오기
2019 iFunFactory Dev Day 26
엔진 : 캐릭터 정보 가져오기
2019 iFunFactory Dev Day 27
엔진 : 캐릭터 정보 가져오기
2019 iFunFactory Dev Day
로그인 여부 판별
1. 특정 유저가 현재 로그인 중인지 표시
• IsLoggedIn 구현
28
2019 iFunFactory Dev Day 29
엔진 : 유저 - 로그인 여부 판별
인벤토리 조회
30
2019 iFunFactory Dev Day
인벤토리 조회
1. 특정 캐릭터가 가진 인벤토리 목록 가져오기
• GetCharacterInventoryInfo 구현
• 캐릭터 소유의 인벤토리 목록을 반환
• (타입, ID) pair 의 vector (e.g. {{“bag”, “1”}, {“mailbox”, “2”}})
2. 인벤토리가 가진 아이템 목록 반환
• GetInventory 구현
• 인벤토리 타입, 인벤토리 ID → 아이템 vector
31
2019 iFunFactory Dev Day 32
캐릭터 인벤토리 목록 가져오기
2019 iFunFactory Dev Day 33
인벤토리 안 아이템 목록 반환
아이템 지급
34
2019 iFunFactory Dev Day
아이템 지급
1. 지급 가능한 아이템 목록 지정
• DeployApiService::SetGiftableItems 함수 호출
• 아이템 ID, 아이템 이름 vector 반환
2. 특정 캐릭터에게 아이템 지급
• GiveGift 구현
• 지급 방식(e.g. 우편으로 발송 등)은 선택 가능
• 가장 간단한 직접 지급으로 구현
35
2019 iFunFactory Dev Day 36
지급 가능한 아이템 목록 지정
2019 iFunFactory Dev Day 37
특정 캐릭터에게 아이템 지급
경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호
info@ifunfactory.co
m
070-4923-6566
www.ifunfactory.co
m

More Related Content

What's hot

워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1성일 한
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판hyeonjae Cheon
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework명신 김
 
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼InfraEngineer
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵NAVER Engineering
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Sung-tae Ryu
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android 종국 임
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App DevelopmentChi Hwan Choi
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
Google app engine
Google app engineGoogle app engine
Google app enginescor7910
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성iFunFactory Inc.
 
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개Jeongkyu Shin
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점양재동 코드랩
 

What's hot (20)

Overview
OverviewOverview
Overview
 
워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1워드프레스 기초 (ABCD) #1
워드프레스 기초 (ABCD) #1
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
 
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
Google app engine
Google app engineGoogle app engine
Google app engine
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성
 
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
모바일 개발자를 위한 ML Kit: Machine Learning SDK 소개
 
1.develop environment
1.develop environment1.develop environment
1.develop environment
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
 

Similar to 2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원

2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with SpringKeesun Baik
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 MooYeol Lee
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdfssuserb942d2
 
iinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftiinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftJeongWook Eom
 
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개dgmit2009
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기Yunhwan Na
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 

Similar to 2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원 (20)

2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
피니엔진
피니엔진피니엔진
피니엔진
 
DevOps Study
DevOps StudyDevOps Study
DevOps Study
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
신광섭
신광섭신광섭
신광섭
 
React native development
React native developmentReact native development
React native development
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
Hiapp
HiappHiapp
Hiapp
 
iinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftiinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoft
 
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개
DGMIT 제3회 R&D 컨퍼런스 2TEAM : Kakao API소개
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 

More from iFunFactory Inc.

[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석iFunFactory Inc.
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP iFunFactory Inc.
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교iFunFactory Inc.
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여iFunFactory Inc.
 
Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉iFunFactory Inc.
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기iFunFactory Inc.
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기iFunFactory Inc.
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunFactory Inc.
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesiFunFactory Inc.
 

More from iFunFactory Inc. (19)

[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여
 
Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기2016 NDC - 모바일 게임 서버 엔진 개발 후기
2016 NDC - 모바일 게임 서버 엔진 개발 후기
 
iFun Deploy 소개
iFun Deploy 소개iFun Deploy 소개
iFun Deploy 소개
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile games
 

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원

  • 1. 2019 iFunFactory Dev Day ‘아이펀 엔진으로 MO 게임 서버 개발하기’
  • 2. ‘아이펀 엔진으로 MO 게임 서버 개발하기’ 2019 iFunFactory Dev Day 2 장수원 소프트웨어 엔지니어 아이펀 엔진 운영툴 연동하기
  • 3. 2019 iFunFactory Dev Day 1. 목표 2. 큰 그림 3. 기초 작업 4. 구현 1. 기본 유저 정보 확인 2. 인벤토리 조회 3. 아이템 지급 5. Q & A 3
  • 5. 2019 iFunFactory Dev Day 목표 • iFun Engine 을 이용해 간단한 웹 운영툴 기능을 실제 구현 • iFunFactory 제공 운영툴 + iFun Engine 컴포넌트를 이용한 간단한 구현 • UI, Web 작업 X • 이전 세션을 통해 친숙한 API 그대로 사용 5
  • 6. 2019 iFunFactory Dev Day 구현할 내용 • 기본 유저 정보 확인 • ID로 사용자 검색 • 사용자의 게임 내 기초 정보(HP, MP, 경험치, 레벨) 확인 • 로그인 여부 확인 • 인벤토리 조회 • 사용자가 소유한 아이템을 운영툴로 확인 • 아이템 지급 • 사용자에게 아이템을 운영툴로 지급 6
  • 8. 2019 iFunFactory Dev Day 8 큰 그림 운영툴 Web 서비스
 iFunFactory 제공 HTTP REST API 로그 DB (Mongo DB) RDBMS 엔진 서버(town) 게임 구현 운영툴 구현 iFun Engine 프레임워크 고객 지원 운영자 / 통계 Redis 엔진 서버 (field)
  • 9. 2019 iFunFactory Dev Day 9 큰 그림 - 알아볼 내용 운영툴 Web 서비스
 iFunFactory 제공 HTTP REST API 로그 DB (Mongo DB) RDBMS 엔진 서버(town) 게임 구현 운영툴 구현 iFun Engine 프레임워크 고객 지원 운영자 / 통계 Redis 엔진 서버 (field)
  • 11. 2019 iFunFactory Dev Day 구현 개요 1. 엔진 : MANIFEST 파일 수정 • 운영툴 연동 컴포넌트(DeployApiService) 활성화 2. 엔진 : 운영툴 연동 코드 추가 3. 운영톨 : 서버 URL 설정 • 운영툴이 접근할 게임 서버 URL 을 설정 11
  • 12. 2019 iFunFactory Dev Day • DeployApiService 컴포넌트 추가 12 엔진 : MANIFEST 파일 수정 • ApiService 컴포넌트 설정된 포트를 사용 MANIFEST.town.json MANIFEST.town.json
  • 13. 2019 iFunFactory Dev Day 엔진 : 운영툴 연동 코드 추가 • DeployApiService::DeployApiHandlerBase 를 상속한 클래스 생성 • 필요한 메써드를 오버라이드 • 서버 시작시 핸들러 등록 코드 추가 13
  • 14. 2019 iFunFactory Dev Day 14 엔진 : 운영툴 연동 클래스 구현 ops_handlers.cc
  • 15. 2019 iFunFactory Dev Day 15 엔진 : 운영툴 연동 클래스 등록 town flavor 서버가 실행될 때 클래스를 등록 devday_server.cc
  • 16. 2019 iFunFactory Dev Day 16 엔진 : CMakeLists.txt 수정
  • 17. 2019 iFunFactory Dev Day 운영툴 : 서버 URL 설정 • ApiService 에 설정한 port 번호를 이용해 설정 • 외부 →게임 서버 해당 port 로 접근할 수 있도록 방화벽 설정 • ‘API 연동 상태’ 기능 활용 • 연동이 잘 되고 있는지 확인 가능 17
  • 18. 2019 iFunFactory Dev Day 운영툴 기능 구현 • API service handler 에 메써드 추가 = 운영툴 기능 추가 • iFun Engine API 와 게임 로직에서 구현했던 기능도 그대로 사용 가능 • 개발 싸이클 1. API 연동 상태 확인 2. 원하는 기능에 필요한 메써드 문서를 통해 확인 3. deploy_api_service.h 에서 메써드 원형을 복사 4. 메써드 구현 18
  • 19. 기본 유저 정보 확인 19
  • 20. 2019 iFunFactory Dev Day 기본 유저 정보 조회 1. 유저 검색 • 검색 방식 목록 가져오기 : GetUserSearchConditions 구현 2. 유저 검색 결과 목록 확인 - 확인할 유저 선택 • 조건에 맞는 유저 목록 검색 : SearchUsers 구현 • 유저가 소유한 캐릭터 가져오기 : GetCharacters 구현 3. 유저 정보 및 유저 캐릭터 정보 확인 • 유저 정보 가져오기 : GetUser 구현 • 캐릭터 정보 가져오기 : GetCharacter 구현 20
  • 21. 2019 iFunFactory Dev Day 21 엔진 : 유저 검색 방식 지정
  • 22. 2019 iFunFactory Dev Day 22 엔진 : 유저 검색 연동
  • 23. 2019 iFunFactory Dev Day 23 엔진 : 유저 검색 연동
  • 24. 2019 iFunFactory Dev Day 24 엔진 : 유저가 소유한 캐릭터 목록
  • 25. 2019 iFunFactory Dev Day 25 엔진 : 유저 정보 가져오기
  • 26. 2019 iFunFactory Dev Day 26 엔진 : 캐릭터 정보 가져오기
  • 27. 2019 iFunFactory Dev Day 27 엔진 : 캐릭터 정보 가져오기
  • 28. 2019 iFunFactory Dev Day 로그인 여부 판별 1. 특정 유저가 현재 로그인 중인지 표시 • IsLoggedIn 구현 28
  • 29. 2019 iFunFactory Dev Day 29 엔진 : 유저 - 로그인 여부 판별
  • 31. 2019 iFunFactory Dev Day 인벤토리 조회 1. 특정 캐릭터가 가진 인벤토리 목록 가져오기 • GetCharacterInventoryInfo 구현 • 캐릭터 소유의 인벤토리 목록을 반환 • (타입, ID) pair 의 vector (e.g. {{“bag”, “1”}, {“mailbox”, “2”}}) 2. 인벤토리가 가진 아이템 목록 반환 • GetInventory 구현 • 인벤토리 타입, 인벤토리 ID → 아이템 vector 31
  • 32. 2019 iFunFactory Dev Day 32 캐릭터 인벤토리 목록 가져오기
  • 33. 2019 iFunFactory Dev Day 33 인벤토리 안 아이템 목록 반환
  • 35. 2019 iFunFactory Dev Day 아이템 지급 1. 지급 가능한 아이템 목록 지정 • DeployApiService::SetGiftableItems 함수 호출 • 아이템 ID, 아이템 이름 vector 반환 2. 특정 캐릭터에게 아이템 지급 • GiveGift 구현 • 지급 방식(e.g. 우편으로 발송 등)은 선택 가능 • 가장 간단한 직접 지급으로 구현 35
  • 36. 2019 iFunFactory Dev Day 36 지급 가능한 아이템 목록 지정
  • 37. 2019 iFunFactory Dev Day 37 특정 캐릭터에게 아이템 지급
  • 38. 경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호 info@ifunfactory.co m 070-4923-6566 www.ifunfactory.co m