ݺߣ

ݺߣShare a Scribd company logo
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

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