I’m currently following a tutorial series for a Tile Engine which uses XML files to store conversations between NPCs. A topic it doesn’t appear to cover (I have only quickly glanced through the subsequent videos) is how to prevent the user from either altering or knowing in advance what the NPC is going to say by opening the XML file easily with a generic text editor.
The 2nd point of being able to read future conversations is not a real issue but something I wanted to think about, so if that’s hard to implement I am not too fussed at this point.
How would I go about making the XML uneditable? I know vaguely about CRC32’s which can check file integrity which may be useful and I also think there might be better ways to go about that (i.e. not with a CRC32).
The most extreme action I can think of would be to create my own arbitrary encoding for the conversation data, but the usefulness of XML files deters me from that slightly, and with the tutorials I’m following teaching me a lot things I don’t know, I would prefer not to defer too far away from them!
Just looking for a direction really, thanks!
Historically, many games wrap multiple resources into a single binary file.
You might put it in a ZIP file (and maybe change the file extension). That would allow you to avoid having an XML file with an obvious name as a temptation for your users :).
Ultimately, you’re asking something similar to the DRM question. I don’t know whether your platform has an answer to that. (E.g., “using RSA encryption” is not secure as such; your program still has to decrypt the data at some point using the appropriate key, etc).