Okay, I'm going to try my best to explain to you how the save file works. I will break down each section and show the difference between what the game reads and how you think the game should read it. The whole save file is what the game is expecting to read. If you open a save file in messaging environment, you will see how the game reads the file... Spoiler version: 903 digest { version: 903 hero_id { id_high: 4420622837916500727 id_low: 12277622428419139937 } hero_name: "Sif" gbid_class: 4041749 level: 60 player_flags: 503316483 visual_equipment { visual_item { gbid: 1565456763 dye_type: 5 } visual_item { gbid: 463475741 } visual_item { gbid: 2140882333 dye_type: 21 } visual_item { gbid: -1533912121 dye_type: 21 } visual_item { gbid: 176323551 dye_type: 6 } visual_item { gbid: 1065040961 dye_type: 6 } visual_item { gbid: 365492432 dye_type: 21 } visual_item { gbid: -1512729956 dye_type: 21 } } quest_history { sno_quest: 87700 difficulty: 0 } quest_history { sno_quest: 72095 difficulty: 0 } quest_history { sno_quest: 72221 difficulty: 0 } quest_history { sno_quest: 72061 difficulty: 0 } quest_history { sno_quest: 117779 difficulty: 0 } quest_history { sno_quest: 72738 difficulty: 0 } quest_history { sno_quest: 73236 difficulty: 0 } quest_history { sno_quest: 72546 difficulty: 0 } quest_history { sno_quest: 72801 difficulty: 0 } quest_history { sno_quest: 136656 difficulty: 0 } quest_history { sno_quest: 80322 difficulty: 0 } quest_history { sno_quest: 93396 difficulty: 0 } quest_history { sno_quest: 74128 difficulty: 0 } quest_history { sno_quest: 57331 difficulty: 0 } quest_history { sno_quest: 78264 difficulty: 0 } quest_history { sno_quest: 78266 difficulty: 0 } quest_history { sno_quest: 57335 difficulty: 0 } quest_history { sno_quest: 57337 difficulty: 0 } quest_history { sno_quest: 121792 difficulty: 0 } quest_history { sno_quest: 57339 difficulty: 0 } quest_history { sno_quest: 93595 difficulty: 0 } quest_history { sno_quest: 93684 difficulty: 0 } quest_history { sno_quest: 93697 difficulty: 0 } quest_history { sno_quest: 203595 difficulty: 0 } quest_history { sno_quest: 101756 difficulty: 0 } quest_history { sno_quest: 101750 difficulty: 0 } quest_history { sno_quest: 101758 difficulty: 0 } quest_history { sno_quest: 112498 difficulty: 0 } quest_history { sno_quest: 113910 difficulty: 0 } quest_history { sno_quest: 114795 difficulty: 0 } quest_history { sno_quest: 114901 difficulty: 0 } quest_history { sno_quest: 87700 difficulty: 1 highest_played_quest_step: -1 } quest_history { sno_quest: 93595 difficulty: 1 } quest_history { sno_quest: 93684 difficulty: 1 } quest_history { sno_quest: 93697 difficulty: 1 } quest_history { sno_quest: 203595 difficulty: 1 } quest_history { sno_quest: 101750 difficulty: 1 } quest_history { sno_quest: 101758 difficulty: 1 } quest_history { sno_quest: 112498 difficulty: 1 } quest_history { sno_quest: 113910 difficulty: 1 } quest_history { sno_quest: 114795 difficulty: 1 } quest_history { sno_quest: 114901 difficulty: 1 } quest_history { sno_quest: 101750 difficulty: 2 } quest_history { sno_quest: 101758 difficulty: 2 } quest_history { sno_quest: 112498 difficulty: 2 } quest_history { sno_quest: 113910 difficulty: 2 } quest_history { sno_quest: 114795 difficulty: 2 } quest_history { sno_quest: 114901 difficulty: 2 } quest_history { sno_quest: 87700 difficulty: 3 } quest_history { sno_quest: 93595 difficulty: 3 } quest_history { sno_quest: 93684 difficulty: 3 } quest_history { sno_quest: 93697 difficulty: 3 } quest_history { sno_quest: 72801 difficulty: 1 } quest_history { sno_quest: 136656 difficulty: 1 } quest_history { sno_quest: 80322 difficulty: 1 } quest_history { sno_quest: 93396 difficulty: 1 } quest_history { sno_quest: 74128 difficulty: 1 } quest_history { sno_quest: 57331 difficulty: 1 } quest_history { sno_quest: 78264 difficulty: 1 } quest_history { sno_quest: 78266 difficulty: 1 } quest_history { sno_quest: 57335 difficulty: 1 } quest_history { sno_quest: 57337 difficulty: 1 } quest_history { sno_quest: 121792 difficulty: 1 } quest_history { sno_quest: 57339 difficulty: 1 } quest_history { sno_quest: 101756 difficulty: 1 } quest_history { sno_quest: 93595 difficulty: 2 } quest_history { sno_quest: 93684 difficulty: 2 } quest_history { sno_quest: 93697 difficulty: 2 } quest_history { sno_quest: 203595 difficulty: 2 } quest_history { sno_quest: 101756 difficulty: 2 } quest_history { sno_quest: 57339 difficulty: 3 } quest_history { sno_quest: 117779 difficulty: 3 } quest_history { sno_quest: 72738 difficulty: 3 } quest_history { sno_quest: 114901 difficulty: 3 highest_played_quest_step: 17 } quest_history { sno_quest: 74128 difficulty: 2 highest_played_quest_step: 54 } quest_history { sno_quest: 72801 difficulty: 2 highest_played_quest_step: 39 } quest_history { sno_quest: 57339 difficulty: 2 highest_played_quest_step: 27 } quest_history { sno_quest: 72801 difficulty: 3 } quest_history { sno_quest: 101758 difficulty: 3 } quest_history { sno_quest: 112498 difficulty: 3 } quest_history { sno_quest: 113910 difficulty: 3 } quest_history { sno_quest: 114795 difficulty: 3 } quest_history { sno_quest: 72095 difficulty: 3 } quest_history { sno_quest: 72221 difficulty: 3 } quest_history { sno_quest: 72061 difficulty: 3 } quest_history { sno_quest: 73236 difficulty: 3 } quest_history { sno_quest: 72546 difficulty: 3 } quest_history { sno_quest: 136656 difficulty: 3 } quest_history { sno_quest: 80322 difficulty: 3 highest_played_quest_step: -1 } quest_history { sno_quest: 101756 difficulty: 3 } quest_history { sno_quest: 203595 difficulty: 3 } quest_history { sno_quest: 101750 difficulty: 3 } quest_history { sno_quest: 57337 difficulty: 3 } quest_history { sno_quest: 121792 difficulty: 3 } quest_history { sno_quest: 78264 difficulty: 3 } quest_history { sno_quest: 78266 difficulty: 3 } quest_history { sno_quest: 57335 difficulty: 3 } quest_history { sno_quest: 136656 difficulty: 2 highest_played_quest_step: 1 } quest_history { sno_quest: 72546 difficulty: 1 highest_played_quest_step: 17 } last_played_act: 300 highest_unlocked_act: 300 last_played_difficulty: 2 highest_unlocked_difficulty: 3 last_played_quest: 114795 last_played_quest_step: 16 time_played: 359883 highest_completed_difficulty: 3 create_time: 1380418818 last_played_time: 1384948852 alt_level: 26 pvp_rank: 1 } Now, let's look at this without messaging in binary form. Spoiler 08 87 07 12 AB 08 08 87 07 12 15 08 F7 85 F8 9F CB A1 CD AC 3D 10 E1 D2 AA E2 C8 91 B8 B1 AA 01 1A 03 53 69 66 25 15 AC 3D 00 28 78 30 83 80 80 F0 01 3A 46 0A 07 0D 7B F9 4E 5D 10 0A 0A 05 0D 1D 14 A0 1B 0A 07 0D 9D 45 9B 7F 10 2A 0A 07 0D C7 5B 92 A4 10 2A 0A 07 0D DF 7B 82 0A 10 0C 0A 07 0D 41 3C 7B 3F 10 0C 0A 07 0D D0 F8 C8 15 10 2A 0A 07 0D 9C 92 D5 A5 10 2A 42 07 0D 94 56 01 00 10 00 42 07 0D 9F 19 01 00 10 00 42 07 0D 1D 1A 01 00 10 00 42 07 0D 7D 19 01 00 10 00 42 07 0D 13 CC 01 00 10 00 42 07 0D 22 1C 01 00 10 00 42 07 0D 14 1E 01 00 10 00 42 07 0D 62 1B 01 00 10 00 42 07 0D 61 1C 01 00 10 00 42 07 0D D0 15 02 00 10 00 42 07 0D C2 39 01 00 10 00 42 07 0D D4 6C 01 00 10 00 42 07 0D 90 21 01 00 10 00 42 07 0D F3 DF 00 00 10 00 42 07 0D B8 31 01 00 10 00 42 07 0D BA 31 01 00 10 00 42 07 0D F7 DF 00 00 10 00 42 07 0D F9 DF 00 00 10 00 42 07 0D C0 DB 01 00 10 00 42 07 0D FB DF 00 00 10 00 42 07 0D 9B 6D 01 00 10 00 42 07 0D F4 6D 01 00 10 00 42 07 0D 01 6E 01 00 10 00 42 07 0D 4B 1B 03 00 10 00 42 07 0D 7C 8D 01 00 10 00 42 07 0D 76 8D 01 00 10 00 42 07 0D 7E 8D 01 00 10 00 42 07 0D 72 B7 01 00 10 00 42 07 0D F6 BC 01 00 10 00 42 07 0D 6B C0 01 00 10 00 42 07 0D D5 C0 01 00 10 00 42 09 0D 94 56 01 00 10 02 18 01 42 07 0D 9B 6D 01 00 10 02 42 07 0D F4 6D 01 00 10 02 42 07 0D 01 6E 01 00 10 02 42 07 0D 4B 1B 03 00 10 02 42 07 0D 76 8D 01 00 10 02 42 07 0D 7E 8D 01 00 10 02 42 07 0D 72 B7 01 00 10 02 42 07 0D F6 BC 01 00 10 02 42 07 0D 6B C0 01 00 10 02 42 07 0D D5 C0 01 00 10 02 42 07 0D 76 8D 01 00 10 04 42 07 0D 7E 8D 01 00 10 04 42 07 0D 72 B7 01 00 10 04 42 07 0D F6 BC 01 00 10 04 42 07 0D 6B C0 01 00 10 04 42 07 0D D5 C0 01 00 10 04 42 07 0D 94 56 01 00 10 06 42 07 0D 9B 6D 01 00 10 06 42 07 0D F4 6D 01 00 10 06 42 07 0D 01 6E 01 00 10 06 42 07 0D 61 1C 01 00 10 02 42 07 0D D0 15 02 00 10 02 42 07 0D C2 39 01 00 10 02 42 07 0D D4 6C 01 00 10 02 42 07 0D 90 21 01 00 10 02 42 07 0D F3 DF 00 00 10 02 42 07 0D B8 31 01 00 10 02 42 07 0D BA 31 01 00 10 02 42 07 0D F7 DF 00 00 10 02 42 07 0D F9 DF 00 00 10 02 42 07 0D C0 DB 01 00 10 02 42 07 0D FB DF 00 00 10 02 42 07 0D 7C 8D 01 00 10 02 42 07 0D 9B 6D 01 00 10 04 42 07 0D F4 6D 01 00 10 04 42 07 0D 01 6E 01 00 10 04 42 07 0D 4B 1B 03 00 10 04 42 07 0D 7C 8D 01 00 10 04 42 07 0D FB DF 00 00 10 06 42 07 0D 13 CC 01 00 10 06 42 07 0D 22 1C 01 00 10 06 42 09 0D D5 C0 01 00 10 06 18 22 42 09 0D 90 21 01 00 10 04 18 6C 42 09 0D 61 1C 01 00 10 04 18 4E 42 09 0D FB DF 00 00 10 04 18 36 42 07 0D 61 1C 01 00 10 06 42 07 0D 7E 8D 01 00 10 06 42 07 0D 72 B7 01 00 10 06 42 07 0D F6 BC 01 00 10 06 42 07 0D 6B C0 01 00 10 06 42 07 0D 9F 19 01 00 10 06 42 07 0D 1D 1A 01 00 10 06 42 07 0D 7D 19 01 00 10 06 42 07 0D 14 1E 01 00 10 06 42 07 0D 62 1B 01 00 10 06 42 07 0D D0 15 02 00 10 06 42 09 0D C2 39 01 00 10 06 18 01 42 07 0D 7C 8D 01 00 10 06 42 07 0D 4B 1B 03 00 10 06 42 07 0D 76 8D 01 00 10 06 42 07 0D F9 DF 00 00 10 06 42 07 0D C0 DB 01 00 10 06 42 07 0D B8 31 01 00 10 06 42 07 0D BA 31 01 00 10 06 42 07 0D F7 DF 00 00 10 06 42 09 0D D0 15 02 00 10 04 18 02 42 09 0D 62 1B 01 00 10 02 18 22 48 D8 04 50 D8 04 58 04 60 06 6D 6B C0 01 00 70 20 78 CB FB 15 80 01 06 88 01 82 8A 9E 92 05 90 01 F4 C8 B2 94 05 A0 01 34 A8 01 02 1A F6 01 Looks the exact same to me.. Now, let's look at an item.. and this time break it down. Spoiler items { id { id_high: 1 id_low: 2015166548 } hireling_class: 0 item_slot: 272 square_index: 0 used_socket_count: 0 generator { seed: 1311733795 gb_handle { game_balance_type: 2 gbid: 172016995 } base_affixes: 555585138 base_affixes: 555585138 base_affixes: 555585138 base_affixes: 555585138 base_affixes: 1661455578 base_affixes: 555585138 flags: 13 durability: 0 stack_size: 420420254 } } In binary form. Spoiler 01 0A 08 08 01 10 D4 80 F4 C0 07 20 00 28 A0 04 30 00 38 00 42 B9 01 08 A3 F0 BD F1 04 12 07 08 04 15 63 C5 40 0A1D 72 8E 1D 21 1D 72 8E 1D 21 1D 72 8E 1D 21 1D 72 8E 1D 21 1D DA CC 07 63 1D 72 8E 1D 21 30 0D 38 00 40 9E B5 BC C8 01 0A Let's look at the base affix. What is the groups of a base affix? It tells the game to use this stat with this range. Let's say I want 2000000 damage on a sword, so I change the first base affix to 2000000. Let's see what happens... Let's change that to hex 00030D40 Spoiler 01 0A 08 08 01 10 D4 80 F4 C0 07 20 00 28 A0 04 30 00 38 00 42 B9 01 08 A3 F0 BD F1 04 12 07 08 04 15 63 C5 40 0A 1D 00 03 0D 40 1D 72 8E 1D 21 1D 72 8E 1D 21 1D 72 8E 1D 21 1D 72 8E 1D 21 1D DA CC 07 63 1D 72 8E 1D 21 30 0D 38 00 40 9E B5 BC C8 01 0A The item didn't load in look at that. I want 2000000 damage, so how do I get it? Well the fact of the matter is that you cannot change the affix to just anything you want that the game cannot read.. It is expecting a number that is predefined in the affix table.. Now, I still want 20000000 damage! How do I get it? You can't without rolling the seed field and change that random number after adding the highest affixes in the affix table... How do I roll the seed? Well you pick a random number between 0 to 4294967294.. Changing the seed will change the stat. How do i make it exceed the what a single stat can do? double up the stat. I want 127 stats that are all different? After the patch 2.0.5, 6 stats on the item is all you get.
Thank you. There is a whole lot more, but without explaining bit for bit, byte for byte it's enough to see why it is what it is...
this is absolutely veeery well written and uber interesting!! thanks mate i really enjoyed reading it. as you stated, i'm aware there s a ton more to it, but it's an outstanding explanation nonetheless. cheers man