游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3458|回复: 9

即时存档一般该怎么弄的??

[复制链接]

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-21 20:49:00 | 显示全部楼层 |阅读模式
谢谢回答。

33

主题

544

帖子

554

积分

高级会员

Rank: 4

积分
554
发表于 2007-2-21 21:18:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

游戏编程精粹3第一章的第七篇文章就是专门讲这个的;)
1.7  立即存盘               
Martin Brownlow

模拟器里的做法好象就是把内存和显存直接保存下来,然后读的时候原封不动的丢进去

5

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2007-2-21 22:02:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

把你需要存档的数据都加到一个list里面,游戏中这些变量的写操作必须通过这个list,

比如listModify(对象值,数据ID号)

在这个list的写方法中加入发送“即时存档”消息的代码,

这样,只要是最终导致改变了这些数据(比如玩家的装备,状态(体力恢复,是否中毒等),在地图上的坐标,或者切换地图时的地图编号),list就发送一个消息给消息队列,消息队列接收以后就自动存盘。

以RPG为例,每次移动都要进行磁盘写操作,如果你的游戏规模很庞大,除了主角本身的信息还有脚本状态和世界设定等等……采用即时存档就会影响游戏速度,折中的办法是切换地图时临时存,或者计时器,积累在地图上30秒钟时间存一次。
如果是动作类的,交换数据量太多,比如录像功能,一般是记录在缓存里面,等一盘比赛结束了再存盘。

5

主题

44

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2007-2-21 22:27:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

有宏的话也可以用宏定义来监视变量的变化,一旦变量所在位置发生变化,存盘

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-2-22 00:31:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

有穷状态机

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2007-2-22 20:18:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

游戏编程精粹3里面讲的基本和现在高级语言中的序列化方式相似,
可以参考boost里面的序列化库来实现,只要所有活动对象实现一个序列化接口就可以了
当然,最好参看一下 精粹里面的文章,会很有帮助

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2007-2-22 21:26:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

可以参考boost里面的序列化库来实现,只要所有活动对象实现一个序列化接口就可以了

为什么不直接用boost的序列化库呢?

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2007-2-26 01:20:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

一个简单的即时存档功能居然又扯上用boost了。。天

离开boost,C++就干不了活么。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2007-2-26 10:01:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

关键还是……用了boost就不用自己写了…………

1

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2007-2-26 11:41:00 | 显示全部楼层

Re:即时存档一般该怎么弄的??

你是指game运行中save? 就是把类和结构的成员(注意是值类型成员而不是他们本身和指针)集中写文件。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 14:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表