(十二)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类代码实现较为复杂,代码行数上千行,将在后续讲解。

相关推荐
apocelipes16 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
郝学胜_神的一滴2 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
见过夏天3 天前
C++ 基础入门完全指南
c++
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK5 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
金銀銅鐵5 天前
[Python] 模 n 乘法的逆元计算器
python·数学·游戏
卷无止境5 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境5 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
金銀銅鐵6 天前
借助 Pygame 探索最大公约数的规律
python·数学·游戏
郝学胜_神的一滴6 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake