(十二)C++自制植物大战僵尸游戏多用户存档实现(一)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs


游戏存档

游戏存档允许玩家保存游戏进度,以便在之后的时间继续游戏。通过存档,玩家可以暂停游戏并在需要时重新开始,而不必从头开始或重新完成已经完成的任务。游戏通常提供多个存档槽位,使玩家可以保存不同的游戏进度。这样,玩家可以同时进行多个游戏或在同一游戏中尝试不同的决策和路径。

  • 数据序列化和反序列化:将游戏中的相关数据序列化为特定格式,以便存储和读取。常用的序列化格式包括 JSONJavaScript Object Notation )和 XMLeXtensible Markup Language)等。
  • 存档加密和验证:为了保护存档的完整性和安全性,可以使用加密算法对存档文件进行加密,以防止未经授权的访问和篡改。同时,还可以实现存档的验证机制,确保存档文件的合法性和有效性。
  • 存档管理:为玩家提供管理存档的功能,如创建新存档、选择存档槽位、删除存档等。这可以通过用户界面(UI)元素和交互来实现,例如菜单、按钮、列表等。

Cocos2d-x 中提供了UserDefault 类用于存储游戏数据信息,使用XML 格式进行数据存储,但是它不支持多个存档,所以需要自定义实现游戏存档。在本游戏中,使用了RapidJson 库来实现存档管理,存档文件使用json 格式,并对在json文件的进行加密保存,防止信息被篡改,保证文件合法和有效。

本游戏存档分为关卡存档,和用户信息存档以及客户端设置存档三类。客户端的个性化设置存档使用Cocos2d-x自带存档类UserDefault实现。关卡存档,和用户信息存档使用自定义类UserData实现。

关卡存档主要保存的是在游戏闯关途中的数据信息,可以实现玩家在闯关中随时保存本关游戏数据,后续进入该关卡可以继续游戏。此类存档数据信息较多,例如在场景中的植物、僵尸、子弹、动画特效等众多信息全部需要序列化进行保存。

用户信息存档存储的一般是游戏中的金币数量,植物解锁是否解锁,关卡解锁进度等内容。数据量较小。


文件位置

实现功能的代码文件在Class\Based文件夹中。该类代码较多,数量达到了上千行。


存档文件位置

存档文件位置使用Cocos2d-x中默认的存档位置,具体位置如下图所示。

.sav后缀的文件是关卡存档,.dat后缀的文件是用户信息存档。因为游戏支持多用户存档,所以在存档文件的后面使用数字区分不同用户存档。

游戏最多支持八个用户的存档,在游戏中支持多个存档的快速切换,无需加载等待。上一篇教程中的客户端更新下载的文件也将存储在这个文件夹之中。


后续

UserData类代码实现较为复杂,代码行数上千行,将在后续讲解。

相关推荐
南东山人3 小时前
一文说清:C和C++混合编程
c语言·c++
Ysjt | 深5 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
ephemerals__6 小时前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
Microsoft Word6 小时前
c++基础语法
开发语言·c++·算法
一只小小汤圆6 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade
legend_jz7 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
嘿BRE7 小时前
【C++】几个基本容器的模拟实现(string,vector,list,stack,queue,priority_queue)
c++
ö Constancy8 小时前
c++ 笔记
开发语言·c++
fengbizhe8 小时前
笔试-笔记2
c++·笔记