巨大的节约小秘密

为什么16字节足以救场,和其他的东西
五十百年以后,程序员仍然有同样的问题:他们将永远怀念可用内存为实现所有我想要的音量

25年前,游戏盒包含64-128千字节的内存,但不知何故,这个量足以容纳几十个小时的游戏比赛。今天,128 KB - 是一个小的JPEG图像的大小,那就是在现代家居电脑可用,超级马里奥兄弟的时代甚至没有想到。

有音乐和声音,以及良好的时间表。是的,有些可以做什么事,在游戏机或电脑,但基本上要到不同的长度,以适应这些微薄的可能性的声音,音乐,动画,图像和游戏的算法数量巨大。它是如何设法当年开发商?

其主要秘诀比赛被用汇编语言编写,即几乎占了直接告诉其操作必须要做的处理器。这既是一个原因和结果:这将是困难的工作,就写在如此低的水平的大项目

另一个小细节:很多软件需要编写,以便它能够统治之后你解决另一个程序员。为什么团队以外的人知道产品如何工作:游戏为Atari 2600,世嘉主系统,NES和SNES,甚至在更近的控制台90年代末的1型或PlayStation任天堂64不担心它的开发?之后的任何东西释放是不正确的,墨盒上的补丁没有滑行。与此相反,优选的是避免任何黑客,产生欺骗系统,例如,游戏精灵的。游戏几乎完全控制了无任何操作系统控制台上,所以并不需要一个多层架构,馅所有的现代产品,以改善软件和硬件的独立性。

基本技术包括最大代码重用,相同的功能是用来一遍又一遍。同样的事情发生的数据:AI,图形,音乐,声音,和他们只是稍微改变,以创造多样性的假象。游戏可以生成代码和必要的执行数据,但这种复杂调试。避免使用大量无意义的。经常写自己的图书馆。



的优点和8位的地址空间。如果要写入的3比特丢失仅5而不是27,作为32位处理器。 (由于这个原因,64位程序几乎总是比32位大。)16种颜色的位图不会占用太多的空间,20×20像素的块要求所有½×20×20 = 200个字节。在处理器的一个周期可以处理2像素。

图形具有低分辨率并且是二维的。但是,有可能成功地欺骗通过伪3D或2.5D感官。最有名的2.5D车模拟器是拉德赛车的1984年。莲花Esprit的挑战(右)在1992年看起来很有道理的。



元素2.5D知名第一人称射击游戏厄运和德军总部3D。留下一个片段火车:逃离诺曼底(1987)为的 64代

音乐是在飞行中产生的,没有人将它装在记录表 - 它只是将没有足够的空间。有时也有例外,但他们只说明了时代的不合理,以保持游戏的声音,在记录的形式。墨盒512千字节刺猬索尼克,该系列的第一场比赛,通过从1991年的蓝色刺猬运行的第八位,持有这一个声音持续时间的一至两秒。有必要来命名公司,发行商失去了在启动时。

这一代的音乐格式的一个例子可以是MIDI,虽然在一个低得多的电平的游戏在那个时刻的工作。而不是使用的顺序模式的笔记,这需要多大的内存更少。这里是有什么可以与一位声音来实现的例子。



塞尔达传说的,最第一个绿帽1986年约elvenkind男孩的传奇系列是一个巨大的游戏,这甚至不得不适应的道路多达128千字节的墨盒上。今天,这个数字听起来很可笑,但比赛确实不小:它由一大两nadmira地牢,每个两倍nadmira。这些图像是可以点击的。









第一招是可见的一次:标准的电网将被挤压的最大值。地下包括8×16 = 128。因此16×16 = 256的屏幕nadmir,屏幕,其中Link是的数据,适合于一个字节:4位为每个坐标,并为的比特之一nadmira不被使用。有趣的是,在第二地牢蓝色区域中的字母L的形式不适合在她的所分配的空间,所以她的附加两个屏幕位于左侧。

如果你仔细观察,每个屏幕是一个矩阵。屏幕nadmira和地牢被区别对待。 Nadmira屏幕 - 16×11瓦,其每一个可以被磨,沙,石头,灌木,水,瀑布,墓碑,楼梯,网桥/码头,舱口,或在壁中的孔,加了一些特殊的装饰选项的格 - 树木和洞口,这是在一种特殊的方式处理。

除了土地,超过3瓦片不使用,所以两个字节,分为4比特半字节,足以存储有关要在屏幕上什么类型的瓷砖的信息。每一瓦片只需要两个比特的数据。其结果是,每个屏幕需要44字节的数据(和两个字节来存储有关使用砖信息)。总nadmir适合在一个小的不到6千字节。

最nadmira采用为白色,棕色或绿色,而一些屏幕 - 棕色绿色,绿褐色或白色褐色。两种颜色可作为外框的颜色和内部颜色的元件。共有6个选项是符合三位四位或(polbayta)。

每个地牢的房间 - 12×7的实际内容的网格。但该空间被切割特有的方式:几乎所有的房间,除了特殊(输入,该室的末端,及其他)具有不超过一种类型的屏障。这意味着,所有的信息存储每瓦只需要比特,和列字节12字节到整个房间。

我们还有额外的12位。需要存储每个墙壁的信息(个人,3门型,点了炸弹爆炸通)。壁= 24 6×4的变体,也就是一切配合在5位。此外,需要存储大约梗阻的类型的信息:石头,雕像,水/熔岩,沙子或空虚,这需要3比特。最后4位定义了房间的颜色方案。每按字节(2个选项为16色)定义的颜色方案。

因此,保持所有的游戏世界在设定的技巧为代价去一些字节。

保护也是不同的技巧的例子。存储有关炸弹4位使用的信息,第二半字节用于存储有关键(7)的数量的信息。动臂和金钱用在字节长度每一个镜头的255种可能的成本卢比的单一价值,所以。存储有关Triforsa旋下一个字节块的数量的信息,因为你需要考虑到他们收集的顺序。

有8个用于宝藏,但其中一人有三个层次,而另外两个 - 两个层次。有6个“被动”珍宝,例如,允许移动通过水或移动沉重的石头,他们中的一个也有两个层次。最后,链路可以是青铜,白色或魔法剑,也可以是赤手空拳。总能够具有在清单中,这是需要的存储的3个字节22个不同的项目,但将保持多达2位。

你可以有心(4位)与不同级别占用的(4位)的多达16个集装箱。半心认为是设备的其余位之一。最后,第一个任务既可以通过与否,它需要一个更位。

六比特可设置26个字母,10个数字,和一些特殊字符。名定保留多达8个字符,它们被存储在6个字节。在日语版本必须使用全套ASCII的,所以有6个字符的最大长度。字节进入屏幕坐标nadmire或地牢,一个字节的各种其他数据。

<强>因此保存在16字节强>游戏配合,在这种情况下,它不只是保存它签署的文本。为了进行比较,这个空间是足够的以UTF-8 8西里尔字符。今天,游戏开发者们做了很多,以满足他们的保存集群文件系统,但16个字节 - 它只是为现代软件和数据错误

在发展古惑狼为PlayStation 1也有其自身的特点。 RAM是主要问题,然后 - 都在控制台是2兆的内存,所以他们不得不去疯狂的举动。水平超过10兆字节的有动态加载数据,避免下垂帧率超过30 Hz的低。

对于这个被写了一个美妙的系统页面,它加载件64千字节当你在地图上移动的球员。它是这么写的,即使在驱动控制台的速度300 kbps的progruzhat一切的时候在地图的指定区域的游戏角色。

用于存储游戏资源(声音,质地,型号,代码),这些作品的64千字节程序编写包装。一些水平勉强帧将适合,所以实用程序中使用的各种算法 - 第一配合,最佳拟合,和其他。经过审查几次试图选出最佳选项。的任务是复杂的事实,即在等级变化的机会的改变,包装设计数据,这​​是由于该过程的数学部分的复杂性 - 这样很难解释,以艺术家,谁突然想要的东西,以改变。最大的问题仍然是代码C和汇编语言的优化,但最终一切都已经到眼球 - 当时只有4个字节的2兆字节的RAM空间

在驾驶模拟器1984年加快转速有一个小窍门。游戏的图形看,如下图所示。在屏幕的很大一部分分配给统一蓝天面积

< BR />


这个游戏的创造者,把英国的杰夫Crammond 。他用显存的这个数据区用于存储相当大的一段代码,这是地方 BBC微是非常小的。这个区域是画了蓝色,所以玩家并不知道这件事,如果只是游戏没有一个错误结束 - 然后在屏幕中弥漫着一些垃圾

许多这些招数都习惯了这种日子,虽然家用电脑和游戏机的功率提高了几个数量级。

基于材料<一href="https://www.quora.com/How-did-game-developers-pack-entire-games-into-so-little-memory-twenty-five-years-ago">треда在Quora的的。

来源: geektimes.ru/post/242152/