还在用传统的Fraps记录帧率?也许你该试试最新的OCAT 1.3
超能网的关注与报导对象、写作风格与研究重点决定我们的读者群体拥有较浓厚的研究氛围,倾向于通过收集资料、多动手解决问题而不倾向于解决问题,并且喜欢将问题研究得更深。这反映在当我们的编辑因为平时的评测工作,或者是爱好而发现一些值得分享、值得推荐的体验、工具时很愿意分享给大家,而这些文章的评论中有大概率会出现经验丰富、动手能力强的读者分享他们的经验,以实现对于读者的二次哺育,甚至是反哺给我们的编辑(毕竟我们不是无所不能的)。这次我要分享的就是在最近的工作中发现一款其实早已存在、并且就存在我的OneDrive文件夹当中 然而一直没有时间研究的性能记录工具:OCAT,它或许有淘汰Fraps、PresentMon的潜质,有望成为喜欢关注硬件的用户的首选游戏测试性能记录工具,当然最好的方案是将它与FLAT工具一起使用 ,不管怎样,我觉得有分享给大家并做交流的价值,首先我们先来回顾我们测试显卡性能的脉络。
受众群体最广泛的Fraps有哪些问题?
如果要衡量显卡、处理器的价值,很难逃过的一环就是评价游戏性能。要注意的是,所谓的“游戏性能”较真起来其实更多的是玩家群体内约定俗成的自发概念,而非拥有清晰定义的可执行标准,因为关于游戏性能的评价是经历过社会实践到社会认识的螺旋上升的 :早期的用户熟悉的概念并不多,考察的是平均帧率,再到后来考察的目标是帧生成时间,而到现在还讲究99th-Percentile,其实最后这概念我一直都没完全弄清楚,或许它 指的就是将1%,或者是0.1%最极端的样本剔除后剩下的更有研究价值的数据。反正因为我没有理解原理,所以一直没有手动计算这点,而是通过其他工具自动测算。
这小玩意相信大家都看过
但无论如何,因为缺少清晰的定义,大家对于游戏性能的评价体系因为实践的提高会愈加提炼出更复杂、但同时更加全面、更精确的认识, 因此仅仅能够记录平均帧率、最大帧、最小帧的Fraps越来越不能满足真正想精确回溯游戏帧率的玩家的需要。而另一方面,我们以前也曾撰文写过使用Fraps工具来测试帧率或许并非全面,需要引入更多数据才能全面评价流畅与否。再加上测试某些游戏会有 兼容性问题,比如《绝地求生》使用Fraps来记录帧率会弹出,或者测试部分游戏会让Overlay消失(但实际上依然在正常工作)而引起用户的困扰,再加上后期Windows App(UWP)、Vulkan的兴起,这些新的API、新的封装让Fraps这款自从2013年就没有再更新的工具显得越来越轻量级 ,仅仅能够满足基本的测试需求,如果要全面、准确描述游戏性能,我们需要更强大、更专业的测试工具。
之前在测试《杀手》的DirectX 12会发现Overlay会消失
测试UWP游戏更加是短板
测试《绝地求生》的时候会直接告诉你Fraps支持度并不好
正是这样,作为一名有使命感的硬件编辑,我开始寻找更符合时代、能够记录更多数据、能够让我们的评测更加详实、更加有说服力的工具,其结果就是PresentMon。 两年前在我的同事测试《量子破碎》期间就发现Fraps无法发挥作用,而当时的MSI Afterburner还没有支持Windows App(UWP)Overlay,所以期间一度非常苦恼,这时我才开始关注PresentMon工具能够实现怎样的功能,期间曾短暂使用过Action!,但是效果并不好,最终使用的是PresentMon记录数据、FLAT可视化分析的组合方案,该方案一直使用到最近,直到我发现OCAT工具或许有替代他们两者的潜力,本文的基本目的即跟大家分享期间的心得。
因此我们开始用PresentMon+FLAT
PresentMon+FLAT非常强大,但并非万能
事实上跟我撰写这篇文章的逻辑类似,网上大多数重点讲解PresentMon的文章都是在2016年、以Fraps工具的固有限制作为开头来引出前者。根据可考的来源来看,PresentMon的作者是Andrew Lauritzen,他是一名动手能力很强、很擅长解决问题的开发者。他曾经效力于英特尔高级技术集团(Advanced Technology Group)并担任图形软件工程师,工作范围包括各种算法、API,PresentMon就是他在效力英特尔期间的“业务消遣”项目,并很早就上传到GitHub,另外关于Andrew Lauritzen,大家可以在Waskul.tv看到一些围绕他的访谈。
虽然在英特尔工作在我们听起来像是“铁饭碗”,或者说技术人员的顶层,但是他后来离职并加入艺电,后来成为神秘的EA SEED部门的一名渲染工程师。可能你没听说过EA SEED,该部门可能类似技术团队当中的特种部队,是一群规模不大的高精尖团队,解决的并非直接游戏层面的问题,而是AI这种能够潜在改变游戏面貌的宏观问题,总之很厉害。你可以,能够看到Andrew Lauritzen已经在今年预定好版面,他将与另外八名同时合力完成一篇关于光线追踪游戏当中的混合渲染(Hybrid Rendering for Real-Time Ray Tracing)的研究,另外如果没错的是,本页面或许是他自己撰写的基本履历,不过现在GitHub上面的PresentMon代码一直还有人在维护,所以应该是后来Andrew Lauritzen交给自己的同事在维护。
PresentMon到底是何物?
总之,关于PresentMon的细节,大家可以阅读TomsHardware、TechReport、PCPer的介绍文章,重点是这款工具非常的Nerd,它的原理是直接采集经过Windows事件管理器的指令,而且支持DirectX 9/10/11/12、OpenGL、Vulkan、Windows App(UWP),但问题是它的界面类似CMD控制台,非常不友好。当然使用起来并不难:在游戏开始前启动RunPresentMon.Bat,然后进入游戏,按下Scroll Lock来启动帧率记录,然后测试完成再次按下Scroll Lock完成记录,退出游戏并关闭CMD界面(否则结果CSV文件将保存失败),然后你会得到数据非常复杂的CSV文件,要解读它你需要FLAT工具来加以可视化,在过去的很多游戏中,比如测试对于Fraps不友好的游戏:《绝地求生:大逃杀》,或者是Fraps工具莫名其妙不起作用的时候,我就会使用PresentMon+FLAT,在大部分时候还是效果不错的。
借用PCPer的图,PresentMon工作时是这样的
为什么说PresentMon并非万能?
但是PresentMon有自身的缺点,而且是颇为浪费时间的缺点,首先在我们的评测工作中,时不时会发现对于一些游戏,即使是正确的操作同样会引起数据的记录失败,换句话说就是我们需要的数据.CSV的体积是0字节,用Excel打开仅仅会呈现无意义的说明,而这是完全无规律的,没有尝试你是不知道会不会失效的,而且更加关键的是,即使有效,一旦开启游戏后,你无法单独统计第二段测试场景的性能。什么意思呢?
假如我们使用Fraps工具测试,在测完场景A的时候,我发现过程中有些意外,比如说有其他玩家或者是NPC冲进来,或者是突然有不可抗力引起的爆炸,或者是其他内容的渲染引起帧率的波动,那么目前测试中采集的数据就自然成为“废片”,不过这没关系,我们只要按下F11暂停记录,走回到之前的位置重新开始测试,后台就会生成独立的两份数据,我们只要调取后面这部分即可。但是PresentMon则不同,它会记录从第一次按下热键,到最后一次按下热键之间所有的性能情况,而因为它记录的CSV文件高度复杂,通过手动清理“废片”接近不可能,因此使用PresentMon来测试非常需要时间,有时甚至没法用。
因此之前测试《绝地求生》的时候需要很多时间
上述各自的缺点,OCAT都能很好解决
我已经忘记第一次听说OCAT(Open Capture and Analytics Tool)是什么时候的事情,或许是2016年的年底,AMD在更新ReLive Edition驱动的时候提到过OCAT工具,但很长一段时间都在尘封在我的OneDrive里面,是到最近我在测试中需要FLAT工具分析性能的时候,发现FLAT的作者弹窗表示更新新版本,已经兼容OCAT 1.3,我才突发奇想去试试看,发现OCAT同样是在GitHub开放下载的,最新的1.3版本是在12月中旬的时候发布的。OCAT工具操作方便、功能强大,将Fraps、PresentMon的优点汇于一身,而且它记录的数据结果能够兼容FLAT,通过后者的可视化功能能够获得详实、多样的数据。
简单录得小视频,算是介绍罢
如何使用OCAT?
跟轻量化的Fraps相比,OCAT能够支持多样的图形接口,并且能记录多样、详细的数据,而跟PresentMon相比,它的使用方法非常简便,而且用于至少像模像样的界面。大家可以看到首先用户能够在Overlay界面设置Overlay显示在屏幕的位置,比如是左上角、右下角,或者可以设置Overlay的快捷键,另外性能捕捉的快捷键、自动记录的持续时间、数据记录的存放位置(这个PresentMon是默认存放在安装位置的,新手很难找到)。
当你进入游戏后,就能看到在显示器的角落出现黑底黄字的Overlay,显示的是即时帧率跟对应的帧时间,当你按下性能记录快捷键(默认是F12)后Overlay小窗口的末端会出现小红点表示目前在记录当中,这点非常好因为PresentMon是没有Overlay显示的,唯一能辨别目前是否在记录的方法就是看键盘的Scroll Lock灯光是否有亮起。当测试完成后,就能马上看到平均帧率、平均帧时间,还有我不是完全理解的99th Percentile时间,而且后台的数据就记录完成,你反复按多少次都没问题,都是独立的数据,这就要比PresentMon方便很多。游戏退出后就能看到在设定的文件夹当中已经有保存好的CSV文件,这些文件可以用OCAT本身的可视化功能打开,另外也能完全支持FLAT。
有看到红点吗?这说明数据已经开始记录
这是结果,还是很方便的
OCAT本身的可视化工具跟FLAT工具相比有优势但同时都有缺点,优点在于能够加载超过五份数据来源,因此能够在一副图表当中展现超过五张显卡、或者是五种画质的帧率,而且能够通过鼠标配合键盘拖移、放大或者缩小,但是缺点在于不能够在图表当中显示图例,而且不能自定义颜色,另外数据分析的详实程度没有FLAT那么详细。
能够同时显示足够多的数据,虽然不能自定义颜色
按住Ctrl时能够用鼠标放大区域
但是OCAT另外还有一项很难得的优点,就是在会在测试后生成后记录每次测试的测试平台的各种细节,如果是经常测试、需要面对很多数据,这些数据可能来源于不同的分辨率、不同的驱动、不同的显卡、不同的处理器、不同的内存容量,要是万一弄混你就可能崩溃吧,但是OCAT能够很好的将这些数据全部记录下来并且跟成绩、性能对应好,这样你就不用再担心把数据弄混淆。
所以总结来说,OCAT拥有Fraps(界面简单直接、操作方便)、PresentMon(数据详细、支持丰富)各自的优势,并且还有自身的优点,比如:
优点:
避免Fraps工具未响应或者支持不佳(绝地求生、杀手)
支持更多数据、更加详实(帧时间、99th Pencetile,支持同时显示超过六个数据来源)
能够在游戏当中随意多次使用
不用担心在游戏退出后发现没有记录到数据
能够自动记录测试平台
能够自定义按键
能够在测试中看到自己是否有开启
能够取代PresentMon、FLAT两款工具
缺点:
在部分游戏当中无法显示Overlay(《使命召唤:现代战争3》、《幽灵行动:荒野》)
在部分游戏当中会造成失去响应(《杀手/Hitman-2018》)
自定义的时间并不准确(设定60秒但我自己数应该是52秒左右)
无法自定义图例颜色
无法自定义图标数据来源名称
最优解决方案:OCAT+FLAT
就分析数据来说,FLAT还是较有优势
这是帧生成时间,是通过OCAT采集的,两者是兼容的
这是帧率