最近有一些同学问起来,我也研究过这个问题,但一直没时间写出来。
先分析风色幻想SP为什么会过快,有人归结为CPU太给力,其实本质上来说,是DirectX执行的效率太高了,而且游戏程式本身没有做Frame限制,就出现了这个情况。
简单的说,就是FPS太高了,我这边测出的结果是,正常情况下的FPS能飙到500以上,太快了。有的同学可能会说,垂直同步,不过遗憾的是,WFSP软硬不吃,我试了N台电脑,垂直同步都是无效告终。
要从根本上解决这个问题,只能反编译了这个游戏重写Frame Limit的部分,但是我们不是FY内部人员,没有源码和工具,显然不太现实。
官方给的cpugrab,在i5 i7横行的今天,也逐渐失效了,我自己这边调到95都没什么效果。所以下面来介绍一个新的限速软件Bandicam。
cpugrab是通过占据CPU的性能,来使DirectX执行的效率下降,让系统没有剩余的运算能力来处理,使FPS下降,所以在单核的CPU上,你拉到95,那CPU就会被他占用掉95%。
Bandicam本身是一个视频录制软件,但也自带FPS限速功能,他是通过filter,直接作用在directx区域,限制区域FPS,本身所消耗的系统资源是很少的,但是效果很明显。
下面这张图,是针对风色幻想SP进行的设置:
注意最好先打开Bandicam,再执行窗口化游戏。
你可以看到限制FPS有热键,可以在游戏中随时开启和停止限速,另外Bandicam的限速功能只能作用在窗口模式下,这个后面会说到。
接下来进行窗口化,还是用大家都熟知的D3Dwindower,怎么用就不详说了,添加程序进去,右键就可以选择设置和执行。下面贴一下,我个人的设置:
顺便说一下,勾选上最上方管理,可以让游戏后台运行,比如敌方回合时杂兵加状态很慢,你就可以tab切出来,聊天上网都可以,敌方行动完了切回去,至少我这里是OK的。
这样设置就基本上完了,在D3D里右键执行就可以正常游戏了。
现在还有几个不能很好解决的问题。
1、全屏下怎么不能限速。
楼主同学没能找出好办法来,研究了一下原因,怀疑是游戏使用的DirectX版本实在是太老了(个人怀疑是DX6),导致限速软件不能识别支持,而用D3D 窗口化,等于使用一个DX7的环境来挂载,所以就能被识别了。目前看来,除非另外找到一个能支持更老版本DX的FPS限速软件或者Bandicam的作者进一步支持了老版本DX,否则暂时是无解的,希望其它的同学也能不吝提出一些建设性的意见来解决这个问题,所谓一人技短,三人技长。
2、窗口化分辨率是640X480,能不能弄成800X600或者1024X768的窗口来玩。
这又是个难解的问题。作为一个2D游戏,WFSP的输出画面原始比例就是640X480,拉大窗口也没用,徒增黑边,我一直没找到过WFSP修改输出分辨率的办法。强制拉伸重绘效果很烂没法用,我怀疑原始分辨率是写死的,就算是正常全屏游戏时也是靠显卡来进行的缩放,不是游戏程序本身的支持。目前想弄成 800X600之类的窗口,我现在能想到的只能是用一个虚拟机的窗口来实现,但是这样有些麻烦。
3、640X480窗口在高分辨率的屏幕上实在太小,没办法玩,但又想限速怎么办。
这里有一个不算办法的办法,既然它不能放大,你就缩小吧,把整个屏幕分辨率调到800X600或者1024X768,就可以用了,只要注意一点,显卡的显示设置里要选到保持纵横比。另外就是改小分辨率可能会把你桌面上的图标搞乱,要先准备好,桌面图标不要太多。
暂时就先写上面这些,想到再补充。
上面的问题都是我遇到的,不代表你也会遇到。上面的办法我这是行之有效的,但不代表所有人都能成功。这个帖子不是教程贴,不负责解决各种疑难杂症。
上面只是个人的一点心得写出来交流,希望对大家有帮助,也希望大家能帮助我解决疑惑。
先分析风色幻想SP为什么会过快,有人归结为CPU太给力,其实本质上来说,是DirectX执行的效率太高了,而且游戏程式本身没有做Frame限制,就出现了这个情况。
简单的说,就是FPS太高了,我这边测出的结果是,正常情况下的FPS能飙到500以上,太快了。有的同学可能会说,垂直同步,不过遗憾的是,WFSP软硬不吃,我试了N台电脑,垂直同步都是无效告终。
要从根本上解决这个问题,只能反编译了这个游戏重写Frame Limit的部分,但是我们不是FY内部人员,没有源码和工具,显然不太现实。
官方给的cpugrab,在i5 i7横行的今天,也逐渐失效了,我自己这边调到95都没什么效果。所以下面来介绍一个新的限速软件Bandicam。
cpugrab是通过占据CPU的性能,来使DirectX执行的效率下降,让系统没有剩余的运算能力来处理,使FPS下降,所以在单核的CPU上,你拉到95,那CPU就会被他占用掉95%。
Bandicam本身是一个视频录制软件,但也自带FPS限速功能,他是通过filter,直接作用在directx区域,限制区域FPS,本身所消耗的系统资源是很少的,但是效果很明显。
下面这张图,是针对风色幻想SP进行的设置:
注意最好先打开Bandicam,再执行窗口化游戏。
你可以看到限制FPS有热键,可以在游戏中随时开启和停止限速,另外Bandicam的限速功能只能作用在窗口模式下,这个后面会说到。
接下来进行窗口化,还是用大家都熟知的D3Dwindower,怎么用就不详说了,添加程序进去,右键就可以选择设置和执行。下面贴一下,我个人的设置:
顺便说一下,勾选上最上方管理,可以让游戏后台运行,比如敌方回合时杂兵加状态很慢,你就可以tab切出来,聊天上网都可以,敌方行动完了切回去,至少我这里是OK的。
这样设置就基本上完了,在D3D里右键执行就可以正常游戏了。
现在还有几个不能很好解决的问题。
1、全屏下怎么不能限速。
楼主同学没能找出好办法来,研究了一下原因,怀疑是游戏使用的DirectX版本实在是太老了(个人怀疑是DX6),导致限速软件不能识别支持,而用D3D 窗口化,等于使用一个DX7的环境来挂载,所以就能被识别了。目前看来,除非另外找到一个能支持更老版本DX的FPS限速软件或者Bandicam的作者进一步支持了老版本DX,否则暂时是无解的,希望其它的同学也能不吝提出一些建设性的意见来解决这个问题,所谓一人技短,三人技长。
2、窗口化分辨率是640X480,能不能弄成800X600或者1024X768的窗口来玩。
这又是个难解的问题。作为一个2D游戏,WFSP的输出画面原始比例就是640X480,拉大窗口也没用,徒增黑边,我一直没找到过WFSP修改输出分辨率的办法。强制拉伸重绘效果很烂没法用,我怀疑原始分辨率是写死的,就算是正常全屏游戏时也是靠显卡来进行的缩放,不是游戏程序本身的支持。目前想弄成 800X600之类的窗口,我现在能想到的只能是用一个虚拟机的窗口来实现,但是这样有些麻烦。
3、640X480窗口在高分辨率的屏幕上实在太小,没办法玩,但又想限速怎么办。
这里有一个不算办法的办法,既然它不能放大,你就缩小吧,把整个屏幕分辨率调到800X600或者1024X768,就可以用了,只要注意一点,显卡的显示设置里要选到保持纵横比。另外就是改小分辨率可能会把你桌面上的图标搞乱,要先准备好,桌面图标不要太多。
暂时就先写上面这些,想到再补充。
上面的问题都是我遇到的,不代表你也会遇到。上面的办法我这是行之有效的,但不代表所有人都能成功。这个帖子不是教程贴,不负责解决各种疑难杂症。
上面只是个人的一点心得写出来交流,希望对大家有帮助,也希望大家能帮助我解决疑惑。