有关我在说什么的一个很好的例子,请参阅副本岛的开发人员如何根据玩家死亡的情况来做到这一点:http : //www.youtube.com/watch?v= 7-62tRHLcHk&feature=player_embedded#t = 37m
如何根据传入的数据轻松生成热图?
Halo 3是在游戏数据报告中使用热图的另一个很好的示例:http : //www.bungie.net/Online/Heatmaps.aspx
有关我在说什么的一个很好的例子,请参阅副本岛的开发人员如何根据玩家死亡的情况来做到这一点:http : //www.youtube.com/watch?v= 7-62tRHLcHk&feature=player_embedded#t = 37m
如何根据传入的数据轻松生成热图?
Halo 3是在游戏数据报告中使用热图的另一个很好的示例:http : //www.bungie.net/Online/Heatmaps.aspx
Answers:
假设您已经具有要绘制的数据集以及要绘制到的地图,则可以从创建强度图开始:创建一个浮点值网格,该网格与最终图的范围成正比(如果这些图足够小,1:1可能很好)。将整个数组初始化为0。
然后,遍历要绘制的每个点,将其映射到强度图的坐标空间(通常应该是简单的缩放操作),然后在以该位置为中心的强度图中绘制“斑点”。
一个基本的“斑点”可能只包括在斑点点上增加强度以及一些半径。更复杂的实现可以读取现有强度,并且使用更大的衰减半径,则尖点已经越强。您可以尝试使用Blip绘图仪来查找所需外观的实现。
有了强度图后,您可以将每个单独点的强度用作颜色渐变的一维查找,这将使您获得所需的视觉效果(这是获得多色结果的方式)最常见)。在将强度图转移到最终图时,应该执行此颜色查找(显然,为了解决强度图与最终图像的尺寸差异,必须重新缩放)。
对于基本实现来说,这应该足够了,但是还有优化的空间。例如,强度贴图不会被归一化,因此您可能需要在绘制每个点时对其进行归一化(可能较慢)或跟踪最大强度,以便可以同时对单个强度进行归一化您正在重新着色。此外,值的分布可能会导致存储地图的整个坐标空间的内存效率低下,并且您可能希望使用不涉及预分配大量内存的替代解决方案那将是空的。
如果您事先有足够的数据来查询期望在数据集中看到的最小和最大强度,则可以避免完全重新归一化-基本上,如果在(X,Y,Z)到“这时发生的绘制数据的“匹配”值-您可以将其内置到收集数据的系统中,这将有助于您优化映射部分。
由于强度图本质上只是灰度图像,因此是将这种系统原型化的一种非常简单的方法,即使用位图作为强度图和您选择的绘图API(例如,System.Drawing
在C#中)将部分透明的圆绘制到产生强度图。它看起来不是最好的,但是功能强大。
Echo Chamber是专门为游戏设计的免费日志记录和可视化工具。
可视化基于SQL的数据文件,其中包含c ++应用程序生成的信息。信息可以是日志语句,函数调用,屏幕截图或参数列表。
查看2D和3D游戏指标,例如死亡位置,最常使用哪种武器以及该关卡不同部分的内存使用情况。
日志系统具有C ++接口(类似于printf(),它可以输出到SQL数据库,也可以通过网络输出),但是Echo Chamber应该能够可视化任何SQL数据库(或者在其中创建数据库应该很简单) Echo Chamber期望的格式)。网站导航有点令人费解。相关的Echo Chamber手册和相关的Raknet记录功能。
不幸的是,目前还没有屏幕截图显示正在运行的热图,但是Echo Chamber绝对支持热图:
例如,获取游戏中指定事件的坐标。例如,当玩家死亡时,您会在玩家死亡的场景图中获得坐标。
因此,一旦在数据库中有了所需的值,请枚举每个坐标在列表/数据库中出现的次数。您将看到类似以下的列表:
或无论您的价值观是什么。您将有一个频率与坐标配对,如键->值对。然后,您可以将按键比例量化为一种颜色。例如,键0为黑色,键值列表中的最大键为红色,并且两者之间的所有值都是黑色,中点黄色和最大点红色之间的渐变。将每个结果量化为一种颜色,然后就可以使用它。
我不确定您是否要为此寻找某种应用程序或算法。实际上,我很高兴构建定制的热图可视化软件,这很有趣。
快速的Google搜索显示 HeatMap API,如果您不想自己动手,这可能是一个合适的解决方案。
也许如果您确切地说明了您的需求(应用程序或编程方面),我们可以为您提供更好的帮助?