《GTA4》终于知道为什么用汉化版卡了
第一:补丁使用的是外挂式的方式,为何不使用运行更快的内核式方法?
答案:现在的各个版本的GTA4都不是Clean rip,而是采用补丁的方法破解,这使得静态分析不太可能。如果以后有了Clean rip,可以采用内核式方法。
第二:为何GTA4 PC版要求高得离谱?
答案:GTA4 PC版根本没有经过任何优化,纯粹就是糊弄人的移植。不相信?
看看这段代码:
SetRenderState(p,a,b)
RenderState22 1
SetVertexShader(p,a)
SetVertexShaderConstantF(p,a,b,c)
SetPixelShader(p,a)
SetTexture(p,a,b)
SetSamplerState(p,a,b,c)
SetSamplerState(p,a,b,c)
SetSamplerState(p,a,b,c)
SetSamplerState(p,a,b,c)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,D
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,a
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,v
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,e
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,i
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,s
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,n
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,o
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,t
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
桃丶小滚:这是需要大量时间,人力,更重要的是财力的还要涉及侵权啊什么之类的。所以能优化的也就是游戏商本人了。当然你要是超级大款,直接甩N张红票子给电脑高手,没问题 发布于 2018-10-26 00:00:41
桃丶小滚:给大家说这些,并不是抱怨,愤世嫉俗 发布于 2018-10-26 00:00:31
LCPD局长:LZ哪里看到这些代码的,要是哪个高人能吧GTA4优化了的话就好了....
发布于 2018-10-26 00:00:16
桃丶小滚:给你举个例子,比如我现在要去一个地方,坐公交车就是两站,走路就是几分钟,一会的事,本来走过去就行了,便捷直白,可非要先打个的,在做个公交车,先坐一站,然后下车,在换一路公交车在坐一站到目的地 发布于 2018-10-26 00:00:01
桃丶小滚:也许有的人会骂我,说这游戏都出来4年了,题主还在这里扯什么蛋,我只是想告诉大家,你的机器让你玩不了这款游戏跟这款游戏的开发商有很大的关系(不是贬低开发商,相信大家来到这里都是GTA系列的粉丝,这款游戏确实好),开发商在GTA4 PC版上优化上的敷衍了事导致了如今种种配置问题。 发布于 2018-10-25 23:59:46
桃丶小滚:就说笔记本玩家吧。这款游戏是08年出来,那个时候笔记本的显卡刚进入到独显时代,08-09年这个时候一块笔记本上用的GT240显卡就能秒杀很多大型游戏,一直到如今,如果你的显卡是GT240或者以上,不谈其他配置,应付大部分主流游戏绰绰有余,比如使命召唤系列,生化危机系列,实况系列,NBA2K系列,或者是跟GTA4差不多的黑手党,都可以。
但问题是如果你装备了GT240显卡或以上,你会发现你根本玩不起GTA4,因为08年,09年,10年那个时代笔记本上的CPU相对这款游戏来说太吃力了,说白了就是你的CPU跟不上,再到后来i3,i5,i7系列的问世,再加上笔记本显卡上的升级,终于,你会发现,你能玩这款游戏了 发布于 2018-10-25 23:59:31
桃丶小滚:粗白的说就是为什么这款08年的游戏需要那么高的配置,一方面是玩家自身配置的不足,但有些人 又会说,我的机子都是09,,10,11年买的啊,配置也还可以怎么还不行。这就是因为游戏公司对这款从游戏机上移植到PC上时敷衍了事根本就没有进行好好地优化,不知道是为什么。这款游戏超级吃CPU 发布于 2018-10-25 23:59:06
莈落の戱琺溮:题主能说的简单点吗
发布于 2018-10-25 23:58:46
桃丶小滚:SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,c
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,o
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,m
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,i
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,n
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,g
SetRenderState(p,a,b)
RenderState22 1
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
FontIndex 1,.
这么多次调用,就是干了一件事:显示了一个“Dave is not coming.”
稍微懂行的人,就会知道,实际上这件事只用这么几行就行了:
SetRenderState(p,a,b)
SetVertexShaderConstantF(p,a,b,c)
SetTexture(p,a,b)
SetVertexDeclaration(p,a)
SetStreamSourceFreq(p,a,b)
SetStreamSourceFreq(p,a,b)
SetStreamSource(p,a,b,c,d)
DrawPrimitive(p,a,b,c)
不过还不算完,上面的代码竟然在一桢中重复了足足五次!也就是,平白无故的多了15*5*8=600次Directx调用。随便再NB的机器也跑不动。这还仅仅是显示几个字符,游戏程序其他地方的优化大家可以想象了. 发布于 2018-10-25 23:58:06
更多《GTA4》终于知道为什么用汉化版卡了相关问题
问题:《GTA4》这个配置,玩汉化版gta4为什么进不去,进入第一情节后就卡了
回答:不错,很好了,比起我的…… 详情 >
问题:《GTA4》终于知道为什么用汉化版卡了
回答:博爱党 除了几个人之外都喜欢 详情 >
问题:《GTA4》乱码终于解决了!
回答:感情归感情,任务为重。贝特是三人组里最清楚自己身份的人,也是最杀伐果断的一个 详情 >
问题:《GTA4》gta4汉化进入内测阶段
回答:再版豪杰更加神秘莫测,初版对我来说狰狞得很大众 详情 >
问题:【赏金求助】GTA4 已停止运行
回答:这年头打猎都需要觉醒洪荒之力了吗 详情 >