所以我目前正在开发一个简单的游戏项目,大多数人都是从“突破”开始的。我的部分目标是以最简单的方式制作当前游戏状态的游戏存档。例如。
==场景==
然后假设我输掉了比赛,或者我因为累了想上床睡觉,所以我想重新加载游戏状态到我回到桨、球和砖的相同位置的地方。唯一的问题是我有多个表格,我只想将这个特定的表格保存在它的特定状态。
我有一个关于如何接近的想法(我会找到一种方法来保存桨、球和砖块的位置以及确切的时间)只是我不知道我将如何执行它。我究竟如何才能实现这一壮举?
所以我目前正在开发一个简单的游戏项目,大多数人都是从“突破”开始的。我的部分目标是以最简单的方式制作当前游戏状态的游戏存档。例如。
==场景==
然后假设我输掉了比赛,或者我因为累了想上床睡觉,所以我想重新加载游戏状态到我回到桨、球和砖的相同位置的地方。唯一的问题是我有多个表格,我只想将这个特定的表格保存在它的特定状态。
我有一个关于如何接近的想法(我会找到一种方法来保存桨、球和砖块的位置以及确切的时间)只是我不知道我将如何执行它。我究竟如何才能实现这一壮举?
这可能是一个非常复杂的问题,但在您的情况下,我建议您从简单开始,随着您的游戏变得更加复杂,从那里开始。本质上,这个问题被称为序列化。或者,将应用程序的内存写入磁盘或数据库,以便以后可以读回内存。
有很多技术可以做到这一点,例如将您的对象转换为 XML 或 JSON 或其他一些二进制文件格式。例如,位图文件只是内存中某些图像结构的序列化形式。
除了 C#(XNA?)之外,我真的不知道您用于制作游戏的技术(XNA?)但本质上您想使用某种在您的环境中可用的文件系统 API 并在那里编写您的序列化对象。根据您的问题,您可能需要重新设计一些游戏以促进这一点。一般来说,最好有一个单一的“真实来源”来表示你的游戏状态,但即使你没有,你仍然可能会弄明白。
所以这里是我将采取的步骤的粗略轮廓......
序列化
反序列化
[编辑:添加一些额外的链接和快速代码示例]
这是一个相当不错的开源 json 库:http: //json.codeplex.com/
// somehow convert your game state into a serializable object graph
var saveState = gameState.Save();
// use json.net to convert that to a string
string json = JsonConvert.SerializeObject(saveState, Formatting.Indented);
// save that string to the file system using whatever is available to you.
fileSystemService.WriteAllText("Saves\game1.json", json);
您可以简单地将其保存在 XML 文件中,然后在启动时读取 XML 文件。