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
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
20. 2019 iFunFactory Dev Day
기본 유저 정보 조회
1. 유저 검색
• 검색 방식 목록 가져오기 : GetUserSearchConditions 구현
2. 유저 검색 결과 목록 확인 - 확인할 유저 선택
• 조건에 맞는 유저 목록 검색 : SearchUsers 구현
• 유저가 소유한 캐릭터 가져오기 : GetCharacters 구현
3. 유저 정보 및 유저 캐릭터 정보 확인
• 유저 정보 가져오기 : GetUser 구현
• 캐릭터 정보 가져오기 : GetCharacter 구현
20
31. 2019 iFunFactory Dev Day
인벤토리 조회
1. 특정 캐릭터가 가진 인벤토리 목록 가져오기
• GetCharacterInventoryInfo 구현
• 캐릭터 소유의 인벤토리 목록을 반환
• (타입, ID) pair 의 vector (e.g. {{“bag”, “1”}, {“mailbox”, “2”}})
2. 인벤토리가 가진 아이템 목록 반환
• GetInventory 구현
• 인벤토리 타입, 인벤토리 ID → 아이템 vector
31
35. 2019 iFunFactory Dev Day
아이템 지급
1. 지급 가능한 아이템 목록 지정
• DeployApiService::SetGiftableItems 함수 호출
• 아이템 ID, 아이템 이름 vector 반환
2. 특정 캐릭터에게 아이템 지급
• GiveGift 구현
• 지급 방식(e.g. 우편으로 발송 등)은 선택 가능
• 가장 간단한 직접 지급으로 구현
35