재화 총통화 요약 로그
재화 총통화 요약 로그는 게임 유저들이 보유하고 있는 총 재화량의 흐름을 파악하기 위한 로그이며, 총 통화량 조회를 위한 쿼리는 게임 개발사가 실행하고, 쿼리에 대한 결과를 로그로 수집하는 방식의 로그로 게임별로 생성되는 로그 수가 다릅니다.
- 캐릭터 기반 게임이 아닌 경우
- 마켓 * 레벨 * 액티브 유저 선정 기간(since 필드 값) * 재화 구분 수
- 캐릭터 기반 게임의 경우
- (마켓 * 레벨 * 액티브 유저 선정 기간 * 캐릭터 기반 재화 구분 수 * 캐릭터 종류)
- (마켓 * 레벨 * 액티브 유저 선정 기간 * 캐릭터 기반 재화 구분 수 * 계정 수)
HIVE 애널리틱스에서 재화 총통화 요약 로그를 통해 다음의 사항을 파악할 수 있습니다.
- 유저들이 재화를 계속 쌓아 두기만 하는지, 소모하는지를 파악
- 레벨별로 재화량 흐름 파악
- 로그를 생성하는 시점으로 1일, 7일, 30일 동안 액티브한 유저별 재화량 흐름 파악
돌아온 액션퍼즐 패밀리 예시
- asset * since 별로 각각 전송
-
group by market, level이 있으니 최종 결과는 market * level * asset * since
-
쿼리결과를 아래의 로그 포맷으로 전송
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 |
로그 스펙¶
Note
스네이크 케이스(예: server_id
) 형태의 필드는 최종 저장소(BigQuery)에 저장될 때 카멜 케이스(예: serverId
) 형태로 변환되며, serverid
같은 스펙에 명시되지 않은 형태로 전송된 로그는 해당 컬럼에 저장되지 않습니다.
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 |
로그 예제¶
{
"date": "2017-09-05 17:23:01",
"game": "test",
"market": "GO",
"level": 34,
"since": 17,
"asset_id": 801,
"asset_name": "ub9c8uc77cub9acuc9c0",
"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일)으로도 구분하여 파악