存档——让我们继续游戏

存档——让我们继续游戏

作者:leexuany

历史

1958年物理学家威利·希金博特姆(Willy Higinbotham)发明了第一个“视频”形式游戏。他为了提高参观纽约Brookhaven国家实验室游客的兴趣,在一台示波器上展示着一款"Tennis for Two"双人网球交互式游戏。在展览结束后,这个装置就被拆除了,它没有存档功能。

后来的街机十分流行,但是由于商业运作的需求,在街机上是不会出现存档的功能。

当家用机兴起的时候,随着游戏规模的逐步扩大,玩家一次用较短的时间完成游戏变得越来越困难,因此制作者开始为游戏添加功能以便玩家能分几次来完成游戏。

分类

游戏的存档大致可以分为关卡类、地图类、脚本类和属性类。(这4个分类是我想出来的,可能还不太全面)

关卡类:早期的游戏中存在着大量的ACT动作类游戏,玩家的任务就是完成一个个关卡。因此制作者采用了开启关卡的方式,在不能保存文件实体的FC等游戏机上,游戏在玩家完成某个关卡时向玩家提供通关密码,而在PC上用一个配置文件来存储通关信息。

地图类:这是关卡类的增强版本,原本的关卡变成了一张张地图,存档的信息也更加复杂。采用这个方式的游戏以RPG和即时战略类为代表。

脚本类:这一类的游戏往往由脚本驱动整个游戏的发展,如文字类的AVG游戏。在此类游戏中,制作者都努力实现一个VM,至少我看到的游戏是这样的。VM是为游戏中的脚本系统提供的。比起ACT和RPG类游戏中的事件驱动,实现VM对脚本的意义更重大。同时,制作者会将脚本编译成字节码,这一点与Java十分相似,但Java的VM功能更强大,而文字类AVG游戏的VM只需实现文字显示、图片特效、脚本流控制等有限的功能。这类游戏的存档也就是VM的内存镜像。如果你用过早期的游戏修改器应该还记得即时存档的功能,它们的原理是相似的。

属性类:最后一类游戏基本不需要游戏的发展进度,每次游戏只需记录玩家的个人属性即可。大部分的休闲网游,如《泡泡堂》《跑跑卡丁车》等都属于这个范畴。

简单实现

每种不同的游戏在设计时都有他自己的技巧,下面以我较熟悉的RPG为例简单介绍。大家都知道存档的原理就是存储当前某些变量的值,等到用时再读取进来。但是面对剧情丰富,变量千千万万的RPG来说存档的工作无异于一场噩梦。

在存储一个RPG的进度的时候,我们需要保存那些信息呢?主角队伍的HP、MP、EXP还有所在的地图和坐标。在完成了这些信息之后还远远没有完成,因为还有最最麻烦的剧情的进度,具体一点说就是地图上的NPC和隐藏道具。为了能够保存这些信息,我们应构造一棵地图对象树,如图

地图对象树
其中obj可以是npc也可以是隐藏道具。在保存进度的时候,先保存玩家信息再保存这棵地图对象树,只要obj对象的内容足够全面,我们就可以完美再现游戏存储时的一切。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值