青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
夜月琉璃Lv46   
能否做一个尽可能低容量的大型3d游戏?     

    让先来回顾过去,早期的3d(或伪3d)游戏都挺小的,无论是诸如《德军总部3D》的早期PC游戏,还是nes、N64、各类街机、md、ps1、早期java手机、塞班手机、mtk手机……它们的容量很少,小到mb甚至kb计算。


Image


Image


Image


    但是!这些游戏实在太粗糙了,难道就没有画质比较好一点的???
    有,也许目前已知的就这么一个。
    这游戏叫《kkrieger》,只有96kb,光影效果非常不错!


Image


    那么,是否意味着一个低容量的大型3D游戏是可行的呢,答案是不行的,

    原因有以下:

    1.游戏过场视频:

Image

一般来说,视频占的容量相对很大,所以,不要用视频了。用即时演算代替!


     2.游戏背景音乐:如果背景音乐是纯音乐的话,那么用mp3或ogg等格式就是浪费!这其中有多少重复的音?联想起midi格式的和弦乐。再联想起64kb程序动画的那一直重复的背景音,用这种方式缩小体积理论上没问题。


     3.游戏贴图:

Image

目前3d模型用的贴图还是位图,能不能改用矢量图呢?用复杂的算法做出贴图。估计又能省一些容量。


    4.游戏人物语音:

     目前的游戏人物语音大多都是请人配音的,能否改用计算机演算呢?联想起以前xp系统自带的microsoft SAM语音系统。再看看现在安卓手机的原生或第三方TTS,也许又能减少大量体积,不过现有的技术不够完善,我想,也许还要加上语气、声调、音色等各种变化。


     综合以上的看,实际上是不可行的,那么为什么kkrieger可以实现呢?这里引用知乎上的回答:


“kkrieger makes extensive use of procedural generation methods. Textures are stored via their creation history instead of a per-pixel basis, thus only requiring the history data and the generator code to be compiled into the executable, producing a relatively small file size. Meshes are created from basic solids such as boxes and cylinders, which are then deformed to achieve the desired shape - essentially a special way of box modeling. These two generation processes account for the extensive loading time of the game — all assets of the gameplay are reproduced during the loading phase.”

--Wikipedia


In computing, procedural generation is a method of creating data algorithmically as opposed to manually. In computer graphics it is commonly used for creating textures. In video games it is used for creating items, quests, and level geometry. Advantages of procedural generation include smaller file sizes, larger amounts of content, and randomness for less predictable gameplay.


通过储存生成器和创造步骤来使复杂的纹理变成了非常省地省空间的执行代码。而大部分形状则都是通过圆筒和立方体的扭曲变形,毕竟保存一个建模还是省空间。

而运行之后,游戏本身便会开始执行生成步骤,将所有的纹理建模在内存中生成出来。所以为什么打开游戏之后会有漫长的读取时间,以及不科学的内存占用量。


简单来讲,就是并非通过保存成品,而是通过保存生成器和生成步骤,让程序在启动之后按照步骤重新将成品生成出来。

当然啦,这种压缩方式有相当大的局限性。

首先他实际上并不是“压缩”,他实际上是属于再创造了...有一点像你自己买了个需要自己组装的书桌...不对,这个其实连书桌的木板都没给你,实际上就给了你一个如何砍树做板材拼装的手册……
而一般的压缩,则是把书桌研究一下,然后拆成一块一块的,最后配一本组装说明书发送给你。

过程生成的缺陷就显而易见了,他的内容从一开始就要决定是要通过特定的编辑器来创造并记录过程。所以如果采用的是导入的素材(比如说现实世界中的树啊布啊的纹理,人脸动物皮肤什么的),那么很明显是无法进行“压缩”。而普通压缩方式则不一样,因为他实际上是从已存在的文件入手,用词典(说明书)的方式来对重复,空白部分进行索引以达到节省空间的方式。


通过上面的文字,我们不难看出,由于kkrieger实际上只是一个保存生成器和生成步骤的文件,因此才可以实现这么小的容量,所以如果还在对这个问题抱有想法的,可以暂时放弃了。。。


最后放上那个kkrieger给大家,看画面至少在05年还是不错的,Win7下可直接运行,Win10下运行需要设置兼容性为Win7与以管理员身份运行


文件下载:点击此下载kkrieger


文中部分内容引用自:https://www.zhihu.com/question/38247446


 2  已被阅读了6002次  楼主 2017-12-24 20:54:20
回复列表

回复:能否做一个尽可能低容量的大型3d游戏?

桂公网安备 45010302000666号 桂ICP备14001770-3号
感谢景安网络提供数据空间
本站CDN由七牛云提供支持
网站已接入ipv6
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
如果某些内容侵犯了您的权益,请通过右侧按钮与我们联系
Your IP: 18.224.44.207 , 2025-01-31 07:05:43 , Processed in 1.05634 second(s).
Powered by HadSky 8.4.9
知道创宇云安全