高级玩家
- 贡献度
- 68
- 金元
- 1951
- 积分
- 477
- 精华
- 1
- 注册时间
- 2013-7-18
|
本帖最后由 the.night 于 2014-2-26 01:49 编辑
占一层 解释为什么这个游戏只有80MB
================
作为一名逆向编程爱好者,虽然我是素人,但不妨碍有比较高的职业技能等级。
好吧,我发现组织语言比思考破解方法更消耗脑细胞...
以下简单描述了
-------------------------
这里我们不讨论 游戏优化和性能方面的问题
只谈 撑大游戏硬盘容量原因,看不懂中文请绕道。
主要有2方面:游戏资源 和 程序
游戏资源就是指图像、声音之类的东西
声音类的资源,在今天这个时代已经浮云,只要肯用mp3 ogg之类的有损格式..都大不到哪去。
很关键的是图像类
(3D模型怎么建立怎么设计,这里不讨论,我们只谈模型数据的储存)。
一个3D模型的数据,由骨架和材质贴图构成(好比传统的折扇)
骨架数据相对简单,主要就是xyz点长度,点决定线,线决定面,面决定图形。
so..决定模型数据大小的就是材质贴图..
以未压缩的32位贴图为例,
1个字节是8位,能放一个英文。
2个字节是16位,能放一个汉字。
32位贴图,就是一个像素点,需要32位来表示。
一张1300W像素的32位图,能放2600万个汉字,是金庸14部小说字数和的2倍。
这也是现在GPU性能远超CPU的原因。
回到本游戏的话题,
本作品尺寸小的一个核心原因,就是贴图数量并不多,
此外,我们用滚轮往上推到顶,会发现虽然画面看上去很舒服,其实精度也不高
-----------------
再谈程序部分,
决定程序部分大小,主要有两方面:
1。是否大量使用脚本语言(比如lua,java等)。
2。是否大量使用第三方库。
前者不仅会使同样的程序消耗更多的CPU性能和内存,
在打包游戏的时候,还必须完整保留下源码文本。不能编译成CPU直接可读的2进制代码。
(请比较 泰拉利亚 和星界边际的尺寸区别)
后者.还是得打个比方..
假设我们要弹一个 信息框. 提示一个"你好.请点确定"
从原理上来说..需要绘制窗口.渲染文字.接受键盘鼠标确认事件等等.
但是windows提供了一个user32的库文件.里面有一个功能叫messageboxa/w
调用它只要一行代码就可以了.而不用全过程自己写了
库就是程序合集文件,
很多时候,我们只需要库里的一两个功能,却需要引用整个库。
如果是windows自带的库,就不需要把库打包到游戏里,
如果是第3方库就需要打包。就增加硬盘容量需求了。
记得以前有一个射击游戏只有几十KB,其实如果你把它引用的directx库的dll大小算进来,就不会是几十KB了。
--------------------
综上,
在解释语言没有满天飞,游戏开发商不会只求快速上架的年代,这样品质的游戏本来就应该是80MB的。
但是现在游戏厂商越来越浮躁,不在游戏可玩性上挖掘,拼命在开发效率、下蛋速度上深造。
再加上硬件产商和脚本/解释语言产商相互勾结,才使得小游戏、大消耗的打脸作品越来越多。
|
评分
-
16
查看全部评分
-
|