《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)

已发布内容

Mu丶xxxx
Mu丶xxxx

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的机器也跑不动。这还仅仅是显示几个字符,游戏程序其他地方的优化大家可以想象了.

莈落の戱琺溮
莈落の戱琺溮

题主能说的简单点吗

Mu丶xxxx
Mu丶xxxx

粗白的说就是为什么这款08年的游戏需要那么高的配置,一方面是玩家自身配置的不足,但有些人 又会说,我的机子都是09,,10,11年买的啊,配置也还可以怎么还不行。这就是因为游戏公司对这款从游戏机上移植到PC上时敷衍了事根本就没有进行好好地优化,不知道是为什么。这款游戏超级吃CPU

Mu丶xxxx
Mu丶xxxx

就说笔记本玩家吧。这款游戏是08年出来,那个时候笔记本的显卡刚进入到独显时代,08-09年这个时候一块笔记本上用的GT240显卡就能秒杀很多大型游戏,一直到如今,如果你的显卡是GT240或者以上,不谈其他配置,应付大部分主流游戏绰绰有余,比如使命召唤系列,生化危机系列,实况系列,NBA2K系列,或者是跟GTA4差不多的黑手党,都可以。
但问题是如果你装备了GT240显卡或以上,你会发现你根本玩不起GTA4,因为08年,09年,10年那个时代笔记本上的CPU相对这款游戏来说太吃力了,说白了就是你的CPU跟不上,再到后来i3,i5,i7系列的问世,再加上笔记本显卡上的升级,终于,你会发现,你能玩这款游戏了

回复

____何故lz
____何故lz
劳资用的就是光荣的GT240
Mu丶xxxx
Mu丶xxxx

也许有的人会骂我,说这游戏都出来4年了,题主还在这里扯什么蛋,我只是想告诉大家,你的机器让你玩不了这款游戏跟这款游戏的开发商有很大的关系(不是贬低开发商,相信大家来到这里都是GTA系列的粉丝,这款游戏确实好),开发商在GTA4 PC版上优化上的敷衍了事导致了如今种种配置问题。

回复

神话与传说2
神话与传说2
突然觉得gta4 08-12年4年时间好长,而且变化好大。而bf3 11-17年时间好短,是因为硬件渐渐的发展到了瓶颈吗?
Mu丶xxxx
Mu丶xxxx

给你举个例子,比如我现在要去一个地方,坐公交车就是两站,走路就是几分钟,一会的事,本来走过去就行了,便捷直白,可非要先打个的,在做个公交车,先坐一站,然后下车,在换一路公交车在坐一站到目的地

7伦s
7伦s

LZ哪里看到这些代码的,要是哪个高人能吧GTA4优化了的话就好了....

Mu丶xxxx
Mu丶xxxx

给大家说这些,并不是抱怨,愤世嫉俗

Mu丶xxxx
Mu丶xxxx

这是需要大量时间,人力,更重要的是财力的还要涉及侵权啊什么之类的。所以能优化的也就是游戏商本人了。当然你要是超级大款,直接甩N张红票子给电脑高手,没问题

发布回答

坚持原创,谢绝转载。