스코어 로그
위자드와 같은 다수의 게임 모드가 있는 게임의 플레이 횟수 및 점수를 분석하고자 할 때 스코어 로그를 활용합니다.
카테고리¶
- Scribe/FTP 방식
| 상용 서버 172.19.1.10 | service_metrics-score_log | 
|---|---|
| 개발 서버 222.112.182.65 | service_metrics_test-score_log | 
로그 스펙¶
Note
스네이크 케이스(예: server_id) 형태의 필드는 최종 저장소(BigQuery)에 저장될 때 카멜 케이스(예: serverId) 형태로 변환되며, serverid 같은 스펙에 명시되지 않은 형태로 전송된 로그는 해당 컬럼에 저장되지 않습니다.
| 필드명 | 설명 | 타입 | 필수여부 | 
|---|---|---|---|
| date | 로그 발생 시각 형식: 년-월-일 시:분:초 예) 2012-01-19 16:24:00 | string | Y | 
| channel | C2S: Hive KAK: 카카오 LIN: 라인 WEI: 웨이보 STE: 스팀 | string(3) | Y | 
| channel_uid | 로그인 채널에서의 유저 식별값(주로 bigint를 사용하지만 스트링형을 사용하는 채널들이 있을 수 있음) LINE과 같이 정보를 알 수 없는 경우는 0으로 전송 | string(64) | Y | 
| game | 게임 브랜드 네임 사용 예) derbydays app_id의 세 번째 항목 예) com.com2us.littlelegends.kakao.freefull.apple.global.ios.universal => littlelegends | string(50) | Y | 
| game_uid | 게임 서버에서 사용하는 유저 식별값 | bigint | Y | 
| app_id | HIVE에서 사용하는 AppID 예) ’com.com2us.derbyday.kakao.freefull.google.global.android.common’ | string | Y | 
| level | 게임 내에서 유저 또는 캐릭터의 레벨 레벨이 없는 경우는 0 | int | Y | 
| country | client_ip를 못받아오는 경우 국가 값을 직접 입력 예) KR HIVE 식별자 정책 참고 | string(2) | N | 
| mode_id | 게임 모드 식별자 범위: [1–(2^31−1)] | int | Y | 
| mode_name | 게임 모드 이름 ims 표시용이며 한글을 사용 | string(50) | Y | 
| mode_name_en | 게임 모드 이름 로그 확인용이며 영문을 사용 | string(50) | Y | 
| submode_id | 서브 게임 모드 식별값 (1부터 시작, 큰 값) 서브 모드가 없는 게임의 경우 0 | int | Y | 
| submode_name | 서브 게임 모드 이름 서브 모드가 없는 게임의 경우 0 ims 표시용이며 한글을 사용 | string | Y | 
| submode_name_en | 서브 게임 모드 이름 서브 모드가 없는 게임의 경우 0 로그 확인용이며 영문을 사용 | string | Y | 
| account_id | 서버 내에서 고유한 계정 구분 값 (PK) | bigint | Y | 
| account_level | 해당 계정의 레벨 계정 레벨 개념이 없는 경우 0 | int | Y | 
| character_id | 서버 내에서 사용하는 캐릭터 식별자 캐릭터가 없는 게임에서는 캐릭터 식별자를 0으로 설정 | bigint | Y | 
| character_type_id | 서버 내에서 사용하는 캐릭터 타입 구분 값 캐릭터가 없는 게임에서는 캐릭터 타입 구분 값을 0으로 설정 | int | Y | 
| character_level | 서버 내에서 사용하는 캐릭터 레벨 값. 캐릭터가 없는 게임에서는 캐릭터 레벨 값을 0으로 설정 | int | Y | 
| score | 유저의 게임 점수 점수 없이 승패로만 결과가 나오는 게임이라면 100을 승, 0을 패로 값을 정해 평균 점수로 승률을 계산함 | int | Y | 
| client_ip | 클라이언트의 IP 이 값으로 GeoIP를 이용하여 country 값을 추출 | string(32) | Y | 
| server_ip | 서버의 IP | string(32) | Y | 
| company | 로그의 대상이 되는 게임 제작 회사 예) "C2S": 컴투스, "GVI": 컴투스홀딩스 | string(3) | Y | 
| server_id | 서버 구분 코드 서버코드표 참조하여 '서버 코드 (JSON 입력 코드)'를 입력. 필드의 값이 0인 경우 null을 의미함 server_id 추가 이전에 서비스하던 게임은 필드 정의가 없었으므로 값이 0으로 처리되고 있음 server_id 추가 이후에 오픈하는 게임의 경우 멀티 서버가 아니더라도 향후 서버 추가에 대비하여 1로 서버 아이디를 사용하고 meta테이블에 추가 | string | Y (14.05.22) | 
| deviceid | HIVE did 값. 광고 식별자(Android AdvertisingID, iOS IDFA)를 추상화한 식별자 | bigint | N (18.04.12) | 
| guid | 매 로그마다 발생하는 고유 키 값 uuid와 같은 랜덤 문자열 형태를 권장 | varchar(64) | N | 
로그 예제¶
{
    "date": "2014-03-21 15:56:42",
    "channel": "KAK",
    "channel_uid": 88063254889771792,
    "game": "enjoyyut",
    "game_uid": 88063254889771792,
    "app_id": "com.com2us.enjoyyut.kakao.freefull.google.global.android.common",
    "level": 1,
    "mode_id": 1,
    "mode_name": "SMALL",
    "submode_id": 2,
    "submode_name": "SPECIAL",
    "grade_id": 2,
    "grade_name": "SOLO3",
    "score": 1,
    "server_ip": "172.27.156.99",
    "client_ip": "14.63.172.59",
    "company": "C2S",
    "server_id": 1,
        "guid": "ca4bd34c867f4617a819ae139d8d6670"
    }

