跳转至

记录游戏内事件

Process Monitor 的日志可以容纳各种可能有用的信息,但它们最实际的用途是帮助你弄清楚数据文件(比如游戏内物品定义)可能存储在哪里。启动 Process Monitor 时,你看到的第一个对话框是「Process Monitor 过滤器」,如图 3-1 所示。

图 3-2 Process Monitor 主窗口

这个对话框允许你根据事件拥有的各种动态属性来显示或抑制事件。要开始监控进程,选择「进程名」→「是」→「你的游戏文件名.exe」→「包含」,然后按「添加」、「应用」和「确定」。这告诉 Process Monitor 显示 YourGameFilename.exe 触发的事件。设置好合适的过滤器后,你会进入图 3-2 所示的主窗口。

插图

要配置 Process Monitor 日志区域显示的列,右键单击表头并选择「选择列」。选项数量惊人,但我推荐七个。

时间(Time of Day):让你看到动作发生的时间。

进程名(Process Name):如果你监控多个进程,这个选项很有用;但游戏通常使用单进程过滤器,禁用它可以节省宝贵空间。

进程 ID(Process ID):和「进程名」类似,但显示 ID 而不是名称。

操作(Operation):显示执行了什么动作;因此这个选项是必选的。

路径(Path):显示动作目标的路径;也是必选的。

详细信息(Detail):只在某些情况下有用,但启用它没有坏处。

结果(Result):显示动作(比如加载文件)何时失败。

显示的列越多,日志就越拥挤,但坚持这些选项应该有助于让输出保持简洁。

监控器运行并定义好要看的列之后,有五个事件类别过滤器(在图 3-2 中用黑色轮廓标出),你可以切换它们来进一步清理日志。事件类别过滤器让你根据类型选择在日志中显示哪些事件。从左到右,这些过滤器如下:注册表(Registry):显示所有注册表活动。进程创建时注册表会有大量白噪声,因为游戏很少使用注册表,而 Windows 库总是使用它。保持禁用这个过滤器可以节省大量日志空间。

文件系统(Filesystem):显示所有文件系统活动。这是最重要的事件类别过滤器,因为知道数据文件存储在哪里以及如何访问它们,对编写有效的机器人至关重要。

网络(Network):显示所有网络活动。网络事件上的调用栈对于在游戏内查找网络相关代码很有用。

进程和线程活动(Process and thread activity):显示所有进程和线程动作。这些事件上的调用栈可以让你深入了解游戏代码如何处理线程。

进程分析(Process profiling):定期显示每个运行进程的内存和 CPU 使用信息;游戏黑客很少使用它。

如果类别级事件过滤仍然不足以过滤掉日志中不需要的污染,右键单击特定事件可以获得事件级过滤选项。把事件过滤配置为只记录你需要的内容后,就可以开始浏览日志了。表 3-1 列出了一些控制日志行为的有用热键。

热键动作 ctrl-E切换日志记录。ctrl-A切换日志的自动滚动。ctrl-X清除日志。ctrl-L显示过滤器对话框。ctrl-H显示高亮对话框。这个对话框看起来与过滤器对话框非常相似,但它用于指示哪些事件应该被高亮。ctrl-F显示搜索对话框。ctrl-P显示所选事件的「事件属性」对话框。

浏览日志时,你可以检查记录的操作,查看事件的细粒度细节。