所以我目前正在开发一个简单的游戏项目,大多数人都是以“突破”开始的。我的目标之一是以最简单的方式制作当前游戏状态的游戏。 例如
==场景==
然后让我说我输了比赛或者我想上床因为我累了,所以我想重新加载游戏状态到我回到桨,球和砖的相同位置。唯一的问题是我有多种形式,我只想将这种特定形式保存在特定的状态。
我有一个关于如何接近的想法(我会找到一种方法来保存桨,球和砖的位置以及那个确切的时间),我不知道如何执行它。 我怎么能实现这一壮举?
答案 0 :(得分:5)
这可能是一个非常复杂的问题,但在你的情况下,我会建议你开始简单,然后从那里开始,因为你的游戏变得更加复杂。本质上,概率被称为Serialization。或者,将应用程序的内存写入磁盘或数据库,以便以后可以将其读回内存。
有很多技术可以做到这一点,例如将对象转换为XML或JSON或其他二进制文件格式。例如,位图文件只是内存中某些图像结构的序列化形式。
我真的不知道你用来制作游戏的技术而不是C#(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);
答案 1 :(得分:1)
您只需将其保存在XML文件中,然后在启动时读取XML文件即可。