재화 총통화 요약 로그는 게임 유저들이 보유하고 있는 총 재화량의 흐름을 파악하기 위한 로그이며, 총 통화량 조회를 위한 쿼리는 게임 개발사가 실행하고, 쿼리에 대한 결과를 로그로 수집하는 방식의 로그로 게임별로 생성되는 로그 수가 다릅니다.
- 캐릭터 기반 게임이 아닌 경우
- 마켓 * 레벨 * 액티브 유저 선정 기간(since 필드 값) * 재화 구분 수
- 캐릭터 기반 게임의 경우
- (마켓 * 레벨 * 액티브 유저 선정 기간 * 캐릭터 기반 재화 구분 수 * 캐릭터 종류)
+ (마켓 * 레벨 * 액티브 유저 선정 기간 * 캐릭터 기반 재화 구분 수 * 계정 수)
- (마켓 * 레벨 * 액티브 유저 선정 기간 * 캐릭터 기반 재화 구분 수 * 캐릭터 종류)
HIVE 애널리틱스에서 재화 총통화 요약 로그를 통해 다음의 사항을 파악할 수 있습니다.
- 유저들이 재화를 계속 쌓아 두기만 하는지, 소모하는지를 파악
- 레벨별로 재화량 흐름 파악
- 로그를 생성하는 시점으로 1일, 7일, 30일 동안 액티브한 유저별 재화량 흐름 파악
돌아온 액션퍼즐 패밀리 예시
- asset * since 별로 각각 전송
- group by market, level이 있으니 최종 결과는 market * level * asset * since
- 쿼리결과를 아래의 로그 포맷으로 전송
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT CONVERT(CHAR(10), getdate(),120), 'KAK', 'actionpuzzlefamily', [market], level, 1 AS asset_id, SUM(cash) AS cash, COUNT(*), 30 FROM #TEMP1 WHERE [marketcheck] = 1 AND lastlogin >= (GETDATE()-30) GROUP BY [market],[level] |
카테고리
상용 서버 | service_metrics-asset_snapshot_summary_log |
개발 서버 | service_metrics_test-asset_snapshot_summary_log |
FTP 전송 시
파일명 규칙 | asset_snapshot_summary_[날짜]_[서버]_[중복방지용id].json | 예. asset_snapshot_summary_20180705_111500_GLOBAL-4.json |
로그 스펙
character_type_id서버 내에서 사용하는 캐릭터 타입 구분 값
캐릭터가 없는 게임에서는 캐릭터 타입 구분 값을 0으로 설정intY
필드명 | 설명 | 타입 | 필수여부 |
date | 로그 발생 시각, 형식: 년-월-일 시:분:초 예) 2012-01-19 16:24:00 |
string | Y |
timezone | 로그에 입력하는 시간 파라미터 값의 UTC offset 값
|
string | Y |
channel | 로그인 채널 C2S: Hive KAK: 카카오 LIN: 라인 WEI: 웨이보 STE: 스팀 |
string(3) | Y |
game | 게임브렌드 네임 사용.(ex: derbydays),app_id의 세 번째항목 예. com.com2us.littlelegends.kakao.freefull.apple.global.ios.universal => littlelegends |
string(50) | Y |
market | 마켓 정보 “TS”: SKT T store “OL”: KT Olleh Market “OZ”: LGU+ Oz Store “AP”: Apple App store “GO”: Google Play “SA”: Samsung Apps “LE”: Com2uS Lebi “MM”: ChinaMobile Mobile Market “SN”: Sina Weibo Point “36”: Qihu 360 Point “MO”: Momo Momo Point “DN”: DeNA Mobage Point “NA”: Naver App Store “AM”: Amazon “ON”: ONE store “FU”: Funtap “HU”: Huawei “OP”: OPPO “VI”: VIVO “XI”: 샤오미 “TC”: 텐센트 “HS”: Hive Store(Crossplay) “ST”: Steam |
string(2) | Y |
level | 게임 내 유저 레벨 (캐릭터가 다수면 최고 레벨) | int | Y |
since | 로그 생성 시점(date 필드 값)과 유저의 마지막 로그인 시점의 시간 차이로, 액티브한 유저 선정의 기준. 0: 전체 유저 1: 로그 생성 시점의 1일전부터 로그 생성 시점까지 액티브한 유저를 선정한다는 의미 7: 로그 생성 시점의 7일전부터 로그 생성 시점까지 액티브한 유저를 선정한다는 의미 30: 로그 생성 시점의 30일전부터 로그 생성 시점까지 액티브한 유저를 선정한다는 의미 11: 가입일이 로그 생성 시점의 1일전부터인 유저를 선정한다는 의미 17: 가입일이 로그 생성 시점의 7일전부터인 유저를 선정한다는 의미 |
int | Y |
asset_id | 현금성 재화/소셜포인트의 경우(1~100), 비현금성 재화의 경우 (101~) 한번 정의 후 변경되면 안됨. 반드시 테스트 필수! (cf. 현금 구매가능한 재화라 하더라도 구매 보다는 게임 내 획득이 주력인 재화인 경우는 101번 이상으로 세팅) 재화 구분. cash_var_log / noncash_var_log와 동일하게 설정 |
int | Y |
asset_name | asset_id에 대한 간단한 설명 (예. bell, star, goldball, gold) | string(50) | Y |
amount | asset_id에 해당하는 재화 보유량 합계 | bigint | Y |
count | asset_id에 해당하는 재화 보유량 건수 | int | Y |
m_amount | 대상 재화 최대 보유량 | bigint | Y |
server_ip | 로그를 발생하는 서버의 IP(게임 서버 ip …) | string(32) | Y |
company | 로그의 대상이 되는 게임 제작 회사: 예. “C2S”: 컴투스, “GVI”: 컴투스홀딩스 |
string(3) | Y |
server_id | 서버 구분 코드 서버코드표 참조하여 ‘서버 코드(JSON 입력 코드)’를 입력 |
string | Y |
character_level | 서버 내에서 사용하는 캐릭터 레벨 값. 캐릭터가 없는 게임에서는 캐릭터 레벨 값을 0으로 설정 |
int | Y |
guid | 매 로그마다 발생하는 고유 키 값 uuid와 같은 랜덤 문자열 형태를 권장 |
varchar(64) | N |
로그 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "date": "2017-09-05 17:23:01", "game": "test", "market": "GO", "level": 34, "since": 17, "asset_id": 801, "asset_name": "\ub9c8\uc77c\ub9ac\uc9c0", "amount": 705, "count": 2, "m_amount": 405, "server_ip": "10.0.0.1", "server_id": "GLOBAL", "timezone": "UTC+9", "character_type_id": 0, "character_level": 0, "channel": "C2S", "company": "GVI", "guid": "ca4bd34c867f4617a819ae139d8d6670" } |
활용 예시
-
- 유저들이 가지고 있는 총 보유재화량의 흐름을 파악하기 위함 – 계속 쌓아두고 있는지, 소모되고 있는지 파악
- 레벨별, 액티브 유저 기준(since – 1일,7일,30일)으로도 구분하여 파악