我应该如何在MMO中​​收集用户行为数据?


9

在MMO中​​,我正在尝试收集有关用户行为的数据,以调整游戏规则以实现最大的用户满意度。

显然,执行此操作的一种方法是将特定的内容手动滚动到应用程序中,就像使用一个Console.WriteLine()视图来查看变量的内容,或者使用StopWatch()类来查看执行某些内容所需的时间。但是您可以使用分析器代替StopWatch,也可以使用调试器代替WriteLine。

我应该如何收集我的数据?是否存在用于检测应用程序以观察用户行为的通用技术,或某种形式的代码检测技术?

另外,我只对收集技术感兴趣;您可以假设我已经知道如何传输,存储和分析所述数据。

Answers:


14

我们正在使用面向命令的界面/体系结构来审核用户活动。

这意味着对服务器的请求导致服务器端实例化代表命令的类的实例(用户可以执行的原子动作)。

例如,假设用户在商品商店购物:

//We could have done something like
someShop.sell(item, player); // This function deducts money from the player
                             // and stores the new item in their inventory

//Instead we do this:
$buyItemCmd = new BuyItemCommand(item); // The player is already known from the sessionId
$cmdExecuter.run($buyItemCmd);

现在,我们在中添加了cmdExecuter适用于所有命令的日志记录/审核功能。这样,几乎没有代码重复,我们可以通过重新配置特定的命令类常量和/或修改cmdExecuter来关闭审核。

它有助于使事情井井有条。当前,我们为每个“重要”命令创建一个数据库记录。这有助于跟踪我们感兴趣的行为。

Martin Fowler的进一步阅读《
面向命令的界面》


这是我一直在寻找的东西,谢谢。
罗伯特·哈维

@RobertHarvey(如果您决定使用此功能)只需保持命令类苗条,它们毕竟是方法。他们应该很瘦。
AturSams,2014年

好处是,当xp / s出现峰值时,我们可以准确地看到对用户施加了什么增益,以及她打了什么怪物。有时我们需要删除一些数据,但是当前活动不多,因此对我们的影响不大。
AturSams 2014年

7

这里的“技术”是如此简单,以至于几乎不值得这样称呼:您只记录了您认为相关的游戏系统中的数据。

如何您录制数据(数据库,文件,文件等等)太宽而不能在这里讨论(以及技术和模式不是特别游戏开发具体在任何情况下,使它们更适合在SO讨论),原样哪些系统相关的问题。没有聪明的自动技术来回答这些问题。那将是人工智能的壮举。

您想要在具有服务器组件的游戏中确保的事情是,服务器应尽其所能进行所有日志记录。从客户那里得到的任何东西都不值得信任,尤其是如果您要使用这些数据来调整游戏的更改时,您不希望玩家能够对其进行篡改。

客户端仅应记录和传输通常也无法访问服务器的统计信息。例如,您要记录UI单击热图,那可能仅在客户端上可行。


2

在MMO中​​,您已经具有有关用户去向,他执行的任务以及他使用的设备发送到服务器的数据。

您可能会感兴趣的其他数据是它们如何使用各种GUI,它们使统计数据和清单屏幕保持打开状态的时间。例如,您可以记录使用鼠标或键盘激活某个功能的次数。

一个重要因素是允许用户选择退出(或选择启用)非关键数据收集,以符合隐私法规。并允许服务器决定在游戏时段/下一个小时应该记录哪些数据,以节省玩家的带宽。


1
并且不要忘记特定任务的成功率和失败率,这是找出游戏部分是否太难或太容易的好方法。
jwenting 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.