魔鬼作坊吧 关注:349贴子:459
  • 4回复贴,共1

CPU优化_解决游戏CPU占用太高之方法

只看楼主收藏回复

我不敢保证能降低所有游戏的CPU占用率,我只测试了TX的某一款游戏,但是我觉得方法应该是可以通用的。
确实如大家所理解的,游戏占用CPU时间主要在绘制显示上,一般的逻辑判断其实对CPU占用是很低的,当然对于一些特殊游戏也可能不是这样,但那是特例。就如论坛上很多讨论如何去掉一些与显示有关的人物动作,或者减少一些背景的绘制,但是这些东西需要经验取分析,费时费力,甚至还有hook d3d等等,需要对D3D有一些了解才行。新手基本会忘而却步。
我们换个思路,我们想去掉显示,那需要看谁调用了显示函数,我们直接把调用的显示函数nop掉,是否会更简单?对于一般的程序处理显示的函数不会分布到各处,这样对于程序的维护是需要代价的,虽然我对游戏引擎不是很了解,但是我写过多年嵌入式程序,成熟的完善的程序,基本上执行显示是有一个或几个函数实现的。因此我们只要将这个函数nop掉,显示就会完全去掉,而CPU的占用率自然也降了下来。


IP属地:江西1楼2017-10-14 21:56回复
    基本原理我已经说明了。下面再将如何定位这个游戏中执行的显示函数地址。
    起始很简单的:
    1、OD载入
    2、对于D3D游戏,在D3D对应的DLL下内存访问断点,对于其他类型的游戏,比如OPENGL的,请在对应的DLL上下内存断点。
    3、断下来后,ctrl+F9或者alt+F9,返回到游戏主程序空间。此时可以直接观看堆栈和查看周围代码。
    4、怀疑其是游戏处理的显示函数,直接nop掉(注意堆栈平衡),看显示是否有变化。


    IP属地:江西2楼2017-10-14 21:56
    回复
      给个提示,如果发现周围有 getmessage之类的函数调用,那可能就是游戏的主循环了,而你将你找到的函数nop掉应该会将显示去掉。
      当然如果你成功的将显示去掉整个游戏是黑屏的,你如果要想看游戏画面,直接恢复就OK。


      IP属地:江西3楼2017-10-14 21:57
      回复
        楼主这个咋做到的,我咋学才能有这水平


        IP属地:浙江来自iPhone客户端4楼2018-10-03 06:17
        回复
          楼主微信多少 可以加我Q V :27271757 吗 付费做个游戏黑屏优化


          IP属地:云南5楼2021-01-30 11:45
          回复