Unfortunately, all the checksums and encryption in the world don't prevent a user from copying his bank file and redeploying it at will. This can have a number of unfair benefits depending on the game. You could duplicate items by giving them to a friend and then reloading your old bank. You can bypass an auto-save if something bad happened to your character. You can backup your bank before editting it, preventing bank deletion when/if the game realizes you've edited your bank. I'm sure there's a few other tricks I haven't thought of, and they're all bad. If I wanted features like this, I'd program them in.
Now, I'm already considering not using items because, frankly, they don't work very well. They feel like an afterthought, and hotkeys for items are horrible. I'm also considering avoiding auto-saving, or at least giving the player options if something bad happens that they'd rather not save. Still, I'd like to immediately save a blank character over their bank if I detect a modification. I'd also like to avoid any other unwanted consequences of bank duplication.
The problem is, there really isn't any way to tell if a bank has been duplicated. None that I know of at least. Is there any way that others can think of that might avoid this pitfall? Everything I can think of falls short. Saving to another bank is just as vulnerable as the first. Timestamps really don't mean anything without relative information (like knowing when the last time the player saved was). As far as I can tell, there's no way to prevent a player from reloading a bank from a backup.
You can either try encrypting your banks by modifying values while saving (like multiplying them by 985 + 497 or sth.) so while editing bank values won't mean much to the one editing, then decrypting them when loading map and returning fail if values don't match (failed 'hacking').
There's not really a better solution atm, blizz didn't think well about using banks for saving stuffs like that.
You can either try encrypting your banks by modifying values while saving (like multiplying them by 985 + 497 or sth.) so while editing bank values won't mean much to the one editing, then decrypting them when loading map and returning fail if values don't match (failed 'hacking').
There's not really a better solution atm, blizz didn't think well about using banks for saving stuffs like that.
May only work vs. hacking not vs. duplication.
You could try to attach a value to every item that contains the name of the player who found/bought the item and a number. The numbers increase with every item found by the player (e.g. first item found is 1, second 2 etc.). Every number should only used once per player! (store the last number used in the bank)
Then you encrypt this item-identifier and attach it to the item. This identifier does not change when an item is traded! After loading the heroes you have to check all items. When there are two items with the same identifier do <random action>
However this only works for items not for money and additionally only when two players with duplicated items join the same game (friends will play together ;) )
Unfortunately, all the checksums and encryption in the world don't prevent a user from copying his bank file and redeploying it at will. This can have a number of unfair benefits depending on the game. You could duplicate items by giving them to a friend and then reloading your old bank. You can bypass an auto-save if something bad happened to your character. You can backup your bank before editting it, preventing bank deletion when/if the game realizes you've edited your bank. I'm sure there's a few other tricks I haven't thought of, and they're all bad. If I wanted features like this, I'd program them in.
Now, I'm already considering not using items because, frankly, they don't work very well. They feel like an afterthought, and hotkeys for items are horrible. I'm also considering avoiding auto-saving, or at least giving the player options if something bad happens that they'd rather not save. Still, I'd like to immediately save a blank character over their bank if I detect a modification. I'd also like to avoid any other unwanted consequences of bank duplication.
The problem is, there really isn't any way to tell if a bank has been duplicated. None that I know of at least. Is there any way that others can think of that might avoid this pitfall? Everything I can think of falls short. Saving to another bank is just as vulnerable as the first. Timestamps really don't mean anything without relative information (like knowing when the last time the player saved was). As far as I can tell, there's no way to prevent a player from reloading a bank from a backup.
Ideas?
You can either try encrypting your banks by modifying values while saving (like multiplying them by 985 + 497 or sth.) so while editing bank values won't mean much to the one editing, then decrypting them when loading map and returning fail if values don't match (failed 'hacking').
There's not really a better solution atm, blizz didn't think well about using banks for saving stuffs like that.
May only work vs. hacking not vs. duplication.
You could try to attach a value to every item that contains the name of the player who found/bought the item and a number. The numbers increase with every item found by the player (e.g. first item found is 1, second 2 etc.). Every number should only used once per player! (store the last number used in the bank) Then you encrypt this item-identifier and attach it to the item. This identifier does not change when an item is traded! After loading the heroes you have to check all items. When there are two items with the same identifier do <random action> However this only works for items not for money and additionally only when two players with duplicated items join the same game (friends will play together ;) )
We have no constant information, the map is blind and it's easy to deceive a blind man.