在我接触到游戏里,目前最小的游戏是20.5K。 这款游戏大家都不会陌生,在那个遥远的FC时代,该游戏堪比任天堂的马里奥。也是众多玩家接触到的第一款坦克游戏。 没错,它就是《坦克大战》。
1985年,坦克大战横空出世,瞬间成为风靡一时的电子游戏。国内玩家首次接触到它,应该是在小霸王学习机上。 「下图为《坦克大战》包体,仅为20.5K」

上图是笔者在模拟器上看到的《坦克大战》内存大小,仅有20.5K。鉴于一些玩家可能对游戏不了解,下面做一下简单介绍。《坦克大战》是由Namco发行于1985的一款游戏,游戏玩法很简单,就是驾驶坦克消灭敌方坦克,然后保护基地的“老母子”,即BOSS。
值得一提的是,该作之所以被称为游戏史不可忽略的经典,原因便是这款游戏可以自建关卡。虽然那时的自建关卡,仅是使用不同方块材质形成隔断,但也开了自建关卡先河。
在当下这个游戏动辄百G的时代,已经很少见以K为单位的产品。随着游戏包体的增大,画面亦随之变得更加精致。但在这个所谓的次时代中,很多精致画面的表象下,往往是一个剧情拖沓,游戏性全无的内在。我已很难再感受到如《坦克大战》般的游戏乐趣。
另外不得不提一下一个德国组织制作的95kb的3d射击游戏。你没有看错,这个3d游戏的大小仅仅只有95kb,其中运用了C语言和大量的汇编语言再加上图形压缩算法将这个游戏的大小制作成仅仅只有95kb,但是他的游戏画面却让人不得不感到深深的佩服! 这款游戏叫做“毁灭杀手”(.kkrieger) 以下为游戏实际画面 ,给各位看一下他的游戏体积,没错仅仅只有96kb,这个程序竟然要比我上面放得两个游戏截图所占的容量还要小。
那么这个游戏是如何做到的呢?在维基百科上调查过后了解到原来这个游戏是通过储存生成器和创造步骤来使复杂的纹理变成了非常省地省空间的执行代码。而大部分形状则都是通过圆筒和立方体的扭曲变形,毕竟保存一个建模还是省空间。而运行之后,游戏本身便会开始执行生成步骤,将所有的纹理建模在内存中生成出来。所以为什么打开游戏之后会有漫长的读取时间,以及不科学的内存占用量。 简单来讲,就是并非通过保存成品,而是通过保存生成器和生成步骤,让程序在启动之后按照步骤重新将成品生成出来。
当然啦,这种压缩方式有相当大的局限性。 首先他实际上并不是“压缩”,他实际上是属于再创造了...有一点像你自己买了个需要自己组装的书桌...不对,这个其实连书桌的木板都没给你,实际上就给了你一个如何砍树做板材拼装的手册……而一般的压缩,则是把书桌研究一下,然后拆成一块一块的,最后配一本组装说明书发送给你。
过程生成的缺陷就显而易见了,他的内容从一开始就要决定是要通过特定的编辑器来创造并记录过程。所以如果采用的是导入的素材(比如说现实世界中的树啊布啊的纹理,人脸动物皮肤什么的),那么很明显是无法进行“压缩”。而普通压缩方式则不一样,因为他实际上是从已存在的文件入手,用词典(说明书)的方式来对重复,空白部分进行索引以达到节省空间的方式。