[英]C# Saving Multiple Objects to file
因此,基本上,我正在使用C#開發基於控制台的游戲。 我已經准備好保存數據了。 如果可能,我希望將所有數據保存到一個文件中。 我不需要像XML序列化之類的東西,玩家可以進去並給自己一百萬美元。
我應該使用什么? 這是我需要序列化的內容:
GameWorld
Inventory
Player
List<Item>
Point
List<String>
這是類中的變量:
public class GameWorld
{
Dictionary<Point, Room>
}
public class Item
{
String Creator
String Verb
String RequiredItem
Action OnActivate
int Difficulty
Action OnDefeatEnemy
Action OnDefeatedByEnemy
}
public class Room
{
String Title
String Description
List<Item> Items
List<String> ItemNames
String Creator
}
public class Inventory
{
List<Items>
}
public enum ActionType
{
ACQUIRE_GOLD, DECREASE_HEALTH, INCREASE_HEALTH, DECREASE_STRENGTH, INCREASE_STRENGTH, GET_ITEM, PRINT_MESSAGE
}
public class Action
{
ActionType actionType
int Amount
String GiveItem
String Message
String Creator
bool SingleActivation
bool HasActivated
}
使用二進制序列化會有點模糊。
[雖然它不會阻止使用Reflector的人,但是會在您的代碼和數據文件上戳出一點點]
您可以很容易地將其序列化為xml,然后將其加密,然后再將其保存到文件中。
使用嵌入式對象數據庫(如Db4o或Eloquera),可以更容易地以編程方式管理存儲的對象。
如果您不擔心公開,則可以添加[與某些魔術常數連接的序列化數據]的哈希。 然后,如果黑客想要操縱您的序列化數據,則他們將不得不反匯編程序以查找常量。
如果公開是一個問題,那么我建議使用魔術常數進行“加密”。 這實際上只是內容加擾的一種形式,因為魔術常數是“已知的”(盡管可能很難找到)。
順便說一句,您的問題類似於DRM問題,除非您完全控制客戶端平台,否則這確實無法解決。 http://www.schneier.com/crypto-gram-0105.html#3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.