devcom 2021 에서 텐투플레이가 진행한 발표 공유 글에서, part 1. 게임 유저들에게 개인화된 경험을 제공해주기 위해서 먼저 '유저 관점에서(user-oriented) 시간의 흐름에 따른(time-series) 데이터 로깅', 그리고 이러한 데이터 로깅을 위해서 part 2.에서는 4W1H 관점을 다루었습니다.

이번 블로그에서는 4W1H 관점에서 어떻게 데이터 로깅을 해야 하는지, 텐투플레이는 어떻게 하고 있는지에 대해 설명해드리도록 하겠습니다.

먼저, 게임 내 유저의 행동데이터를 로깅할 때, 여러 이벤트의 주체가 되는 Entity와 각 주체가 행하게 되는 Action으로 나눌 수 있습니다. Entity는 앞선 블로그(part2)에서 이야기한 4W1H 문장의 주어/목적어의 역할을 한다고 할 수 있는데요, 플레이어, 캐릭터와 같이 행동의 주체이거나 화폐, 아이템, 장비와 같은 목적어, 스테이지와 같은 특정 액션이 발생하는 장소도 해당될 수 있습니다.

그리고, 각 Entity와 관련된 여러가지 Action이 발생할 수 있습니다. Player가 신규가입을 하거나 로그인, 레벨업을 할 수도 있고, Character가 레벨업하거나 Character를 획득하거나 교체할 수 있습니다. Currency를 획득하거나 소비할 수 있고, Equipment를 포함한 여러 아이템을 획득, 소비, 레벨업, 판매, 합성 등을 할 수 있습니다. 또 Stage에 진입하고 해당 스테이지에서 승리하거나 실패할 수 있습니다.

즉, 어떤 주체(Entity)가 특정 행동(Action)을 한다는 점에서 데이터 로깅은 하나의 문장을 만드는 것과도 같다고 할 수 있습니다. 그리고 Entity와 Action을 합쳐 하나의 Event라고 볼 수 있습니다.

user-oriented logging
  • 오브젝 엔티티
    - Character: 게임 내 캐릭터, 영웅 등을 가리킵니다.
    - Currency: 게임 내 화폐로 게임 플레이를 통해서 얻을 수 있는 골드, 코인 등 소프트커런시와 게임 내에서 얻기 힘들며 주로 구입을 통해 얻을 수 있는 캐시, 수정 등 하드커런시가 있습니다.
    - Equipment: 무기, 방어구 등 캐릭터에게 장착시킬 수 있는 아이템으로, 자체적으로 고유의 능력치가 있으며 레벨이나 등급을 가질 수 도 있고 강화의 대상이 될 수 있습니다.
    - Consumable: 물약, 붕대 등 지정된 사용 효과가 있는 일회성 아이템으로 시간과 노력을 대체할 수 있습니다.
    - Cosmetic: 능력치와는 상관 없는 외형의 변화를 위한 아이템으로 스킨, 의상 등이 있습니다.
    - Token: 입장권, 이벤트 티켓 등 특정 목적으로만 사용할 수 있는 아이템. 특정 시기/컨텐츠에서 화폐로 통용되기도 합니다.
    - Material: 장비 업그레이드나 캐릭터 랭크업 등에 소모되는 재료성 아이템
    - Infrastructure: 전체적인 능력치에 영향을 주는 요소로 환경, 건물, 전체 능력을 향상시키는 스킬 등이 있습니다.
    - Pet: 게임에서 플레이어/캐릭터에 귀속되어 등장하는 동물형 캐릭터로, 펫에 따라 능력치가 플레이어/캐릭터에 반영되기도 합니다.
    - Random Box: 보상이 확정되지 않은 확률성 아이템. 확률 0%인 박스를 포함한 모든 종류의 박스가 해당됩니다.
  • 능력치 엔티티
    - Skill: 캐릭터 또는 플레이어가 사용 가능한 능력, 기술을 가리키며, 강화하고 장착 및 탈착할 수 있습니다.
    - Stat: 캐릭터 또는 플레이의 능력치를 수치화한 것으로 HP, MP, 공격력 등으로 분류할 수 있습니다.
    - Level: 캐릭터 또는 플레이어의 숙련도를 가리킵니다.
    - Custom Ability: 게임 내 커스텀 요소로 레벨외에 등급, 랭크 등 능력치를 구분하는 시스템을 가리킵니다.
  • 컨텐츠 엔티티
    - Bonus: 일정시간 접속하거나 일일 n회 한정 등 추가적으로 얻을 수 있는 모든 보상
    - Quest: 미션, 임무, 퀘스트 등 특정 조건을 달성하고 정해진 보상을 얻는 시스템
    - Stage: 게임 스테이지, 또는 플레이어/캐릭터가 진행하는 게임 플레이의 최소 단위
    - Ad: 게임 내 광고

특히, 게임 내 아이템을 여러가지 카테고리로 분류하였는데, 그 이유는 어떤 아이템을 많이 사용하는지, 어떤 주기로 또는 어떤 형태로 사용하는지에 따라 플레이어의 성향이 다를 수 있기 때문입니다. 예를 들어, Equipment와 Cosmetic의 경우 둘다 캐릭터에 장착시킬 수 있는 아이템입니다. 하지만, Equipment는 단순히 장착시키는 것 외에 그 자체로도 스탯, 레벨, 등급 등의 속성을 보유하고 있으며 이러한 속성들은 바뀔 수 있습니다. 반면, Cosmetic은 캐릭터에 장착시키지만 외형을 멋있게 해주는 것 외에는 그 외의 기능은 없습니다.

entity generalization

예를 들어 특정 장비(Equipment)를 파밍하고 강화하는 것에 몰두하는 유저의 경우, 이 유저들은 캐릭터를 더 강하게 만들어서 더 좋은 성과를 내는 것이 목표일 것입니다. 이러한 유저들을 위해서 다른 상위 유저들의 전략을 공유해주거나 더 좋은 성과를 낼 수 있는 여러가지 팁과 상품을 추천해준다면 더 흥미로워 할 것입니다.

entity generalization

또, Cosmetic 아이템을 수집하는 것을 좋아하는 유저의 경우, 게임 내 성과보다는 본인의 캐릭터를 더 예쁘게 꾸미는 것이 플레이 동기일 것입니다. 이러한 유저들을 위해서는 다른 유저들이 어떤 아이템으로 캐릭터를 예쁘게 꾸몄는지 보여주는 형태로 개인화된 서비스를 제공할 수 있을 것입니다.

entity generalization

이처럼, Entity는 플레이어의 성향을 잘 파악할 수 있는 기준으로 구분해야 합니다. 그리고 이때 Entity의 Action을 기반으로 Event를 정의하게 됩니다. 예를 들어, Stage(Entity)를 플레이(Action)했다면 PlayStage라는 이벤트를, 그리고 이때 특정 장비를 착용하였다면 PlayStageWithEquipment 라는 이벤트를 기록할 수 있을 것입니다.

이와같이 텐투플레이는 Entity+Action을 조합한 이벤트들을 80여가지 정의하고 있으며, 전체 리스트는 텐투플레이 개발자문서에서 확인할 수 있습니다.

지금까지 게임 개인화를 위해 유저 관점에서 데이터 로깅은 어떻게 해야하는지, 또 텐투플레이는 어떻게 하고 있는지 3부에 걸쳐 이야기하였습니다. 유저 관점에서 데이터 로깅을 하여 유저들에게 개인화된 게임 환경을 제공할 수 있도록, 유저가 더 즐겁고 재미있게 게임을 플레이할 수 있길, 텐투플레이가 많은 도움이 되길 바랍니다.

더 자세한 사항은 devcom 발표 영상텐투플레이 개발자문서, 그리고 궁금한 사항은 텐투플레이 디스코드채널에서 문의할 수 있습니다.