在当今时代,不少朋友经常感叹现代游戏或APP所需的巨大存储空间,通常不下于10GB起步。
这让我想起了我初中时玩的那款游戏——《魂斗罗》,它仅占128KB大小,为什么却呈现了丰富的故事情节呢?
想象一下,现代程序员A与上世纪80年代的游戏开发者B之间的对话会是怎样的:
A: “你是如何在只有128KB的空间里实现这么多画面、音乐和动画的?”
B: “128KB不够吗?为了增强表现力,实际上加了许多不重要的细节优化。”
A: “以你们的音乐为例,即便我将它转换为最低码率的MP3,也需要至少1MB。”
B: “你是怎样压缩的?一首背景音乐怎么可能超过 1KB。”
A: “那你实现全屏卷轴,用了多少显存?”
B: “一共就只有 2KB 显存,多了也放不下啊。”
A:……
一、128KB的游戏容量
让我们深入探究一下128KB的游戏容量究竟意味着什么。
KB是计算机存储的单位,1KB等同于1024字节。
如今的游戏通常需要几GB的存储空间,也就是几千万KB。
这意味着,《魂斗罗》的容量只有现代游戏的千分之一。
《魂斗罗》是如何在如此小的空间内创造出一个完整的故事?这归功于当时的游戏开发技术与设计。
二、游戏开发技术
1980年代初期,游戏开发技术还在起步阶段。
开发者必须在有限的存储空间内创造出完整的游戏体验,因此采用了众多特殊技术来优化存储与性能。
压缩技术
《魂斗罗》的制作团队采用了如“运行长度编码”(RLE)等压缩技术,有效降低了游戏数据的存储需求。
RLE是基于重复数据串的压缩方法。
在游戏制作中,开发者对重复的数据(例如地形、敌人信息等)进行压缩,只保存一份,并通过RLE编码,以便于快速解压。
这让他们能在128KB的存储空间里提供一个完整的游戏体验。
汇编语言
开发者还使用汇编语言来编写游戏代码。
汇编语言是一种直接与硬件操作的低级计算机语言,其执行效率极高。
尽管编写起来较为复杂,但它让开发者能够精确控制游戏的运行,确保游戏在有限的存储空间下运行得更加流畅、稳定。
优化技术
开发者还运用了其他优化技术来减少存储需求和提高性能。
比如,他们将游戏数据存放在ROM芯片上,直接读取数据,减少了读写操作的需要。
同时,音效和音乐文件被压缩到非常小的体积,并通过简单的算法实现播放。
三、硬件层面的优化
在FC时代,游戏缺乏独立的“引擎层”,或者说引擎层即硬件层。
任天堂的主机是为游戏设计的,已经集成了瓦片、调色板、音乐、音效等基本功能,从而极大地节约了底层代码的需求。
程序员需要深入研究文档,在硬件架构下解决问题,比如显示图像、屏幕滚动等;同时熟悉硬件底层和汇编语言,以免浪费代码空间。
这样,代码就能被编写得更为紧凑、高效。
感谢您的阅读!
关注我,了解更多有趣的游戏内容!
图片来源于网络,如有侵权请联系删除
以前是用心做游戏,现在是用薪玩游戏
不是现在优化不了,而是现在没人做优化。看看手机上越来越大的APP就知道了。
单机和网络,有可比性……,原来的像素和现在的像素可比……,几个人的数据和几十万人的数据能同日而语……。
其实现在很多游戏只要出品商能真的用心去优化压缩,能做到体积小运行流畅画质也行的
魂斗罗和超级玛丽两款游戏是电子游戏的祖宗
无限重复,只换背景,也就是说你一直在玩同一关,只是改变了背景图。游戏当然小了
上上下下左右左右BA+start=30条命?
以前做游戏是在游戏性上绞尽脑汁,现在做游戏是在策划充值上面绞尽脑汁。
以前游戏才多少内存用的少,优化容易。现在以g起步,优化工作量比以前是一个天一个地。
128KB的是FC的美版魂斗罗,不是街机,它根本没有剧情,有剧情的是256KB的日版,标题就错的一塌糊涂
KB,GB,相差百万,而不是一千。
你要是玩过4k的3d游戏,就知道了
汇编,牛。游戏机本身集成了一些资源,是个办法。
现在的游戏看似华丽,实际也是华丽[呲牙笑]
现在都是数毛毛 没什么游戏性可言
这是fc版街机1代是300多k好吗[得瑟]街机2代1m多
现有些游戏为了版权加入加密无用数据程序码,有些游戏根本没有动动就几十个吉
你们猜,battle city的35关地图多大?35K。
过去游戏内容少开发时间短,大部分时间在优化和修改bug.如今游戏开发时间长 成本增加,没足够时间优化和修改了。
优化那是什么。给你补丁自己下去[得瑟]
以前的程序员和现在的码农一个水平?[笑着哭]
光是那几张图片也不止128 kb了吧
我只吃加速,无限循环死不了的,还有谁[笑着哭]
剧情交代 树叶会动 有下雪 …… 256KB 日版
一代经典