# 基于游戏战场中行为序列的玩家竞技风格挖掘

## 课题背景

玩家在游戏战场中的竞技风格各有不同，即使在操作同一种英雄时，他们的表现也各有不同。在用户建模时，我们通常会创建一些用户模板（如下图），然后对线上的用户进行检测和归类，然后在游戏中对不同的用户群体分别构建合适的游戏机制。

但是这样的用户模板很难充分对玩家群体进行划分，在不同的游戏战场中，玩家的竞技风格划分往往多种多样，仅仅依赖游戏设计者的游戏感知和专家经验无法对全体玩家进行准确的刻画。因此，玩家竞技风格的自动发现，对于用户画像和后续的游戏设计来说意义重大。

![图1：游戏玩家的战斗模板](https://noterminus.gitee.io/image_bed/images/playerModelExample.png)

## 问题定义

从海量的用户战场行为序列当中挖掘和发现玩家的竞技风格，辅助游戏设计和提高不同类型、不同追求的玩家的游戏体验。

## 问题挑战

玩家竞技风格挖掘中的主要挑战包括以下几点：

* 由于玩家战场中的动作密集性，我们只能对玩家行为进行有间隔地采样统计和记录（通常是以每5s为一个采样间隔），数据中存在一定的信息损失
* 由于战场内的玩家同时发生大量动作，无法按照先后顺序将多个玩家的数据处理成一条行为序列，只能当做多条行为序列处理
* 玩家在战场中的行为是交互的，交互行为发生在人和环境、人和人之间，但有些动作很难记录指向性（如群体性、范围性技能）
* 玩家的战场行为到最终的比反馈链路很长，缺少实时反馈
* 对这一类群体划分问题，当前的研究还缺少成熟的（无监督）评估方式

## 评价指标

可以通过以下指标进行评估：

* 抽样进行人工校验玩家风格的判定结果
* 其它群体划分/识别的评估方式 （也是本问题的研究难点之一）

## 数据集描述

* 比赛结算数据

| 字段          | 类型     | 描述            |
| ----------- | ------ | ------------- |
| battle\_id  | string | 比赛id          |
| time        | string | 比赛结束时间        |
| iswin       | int    | 所在队伍是否获胜      |
| teamscore   | float  | 所在队伍得分        |
| role\_id    | string | 玩家id          |
| level       | int    | 玩家等级          |
| role\_class | int    | 职业            |
| equipscore  | int    | 玩家装备评分        |
| ...         |        | 其它玩家画像记录      |
| playerscore | int    | 玩家在本场比赛中的个人得分 |
| kill\_num   | int    | 击杀数           |
| killed\_num | int    | 被杀数           |
| ...         |        | 其它战绩总结记录      |

* 本场比赛内动作序列数据

| 字段                      | 类型     | 描述                   |
| ----------------------- | ------ | -------------------- |
| battle\_id              | string | 比赛id                 |
| time                    | string | 日志记录时间               |
| role\_id                | string | 玩家id                 |
| dps                     | int    | 采样间隔内dps             |
| kill\_summary           | string | 采样间隔内击杀的玩家id，按击杀顺序记录 |
| skill\_release\_summary | string | 采样间隔内释放的技能id，按释放顺序记录 |
| hook\_summary           | string | 采样间隔内玩家挂机判定          |

## 联系我们

有任何问题，请联系 <gonglinxia@corp.netease.com>
