GGPK
Old: ChuanHsing 2023-02-13 21:38:51
New: ChuanHsing 2023-02-13 21:43:10
| Old | New | Differences | |
|---|---|---|---|
| 1 | - | # Tools | |
| 1 | + | # GGPK | |
| 2 | + | ||
| 3 | + | ## GGPK schema | |
| 4 | + | ||
| 5 | + | ### Record Structures | |
| 2 | 6 | ||
| 3 | 7 | ||
| 4 | 8 | ||
| 5 | - | ## Information Resources | |
| 9 | + | ``` | |
| 10 | + | struct GGPK { | |
| 11 | + | uint32 Length; | |
| 12 | + | char[4] Tag; // ="GGPK" | |
| 13 | + | uint32 Version; | |
| 14 | + | GgpkEntry[2] Entries; | |
| 15 | + | } | |
| 16 | + | ||
| 17 | + | struct GgpkEntry { | |
| 18 | + | uint64 offset; | |
| 19 | + | } | |
| 20 | + | ``` | |
| 21 | + | ||
| 22 | + | ``` | |
| 23 | + | struct FREE { | |
| 24 | + | uint32 Length; | |
| 25 | + | char[4] Tag; // = "FREE" | |
| 26 | + | Byte[Length-8] Data; | |
| 27 | + | } | |
| 28 | + | ``` | |
| 29 | + | ||
| 30 | + | ``` | |
| 31 | + | struct PDIR { | |
| 32 | + | uint32 Length; | |
| 33 | + | char[4] Tag; // ="PDIR" | |
| 34 | + | uint32 NameLength; | |
| 35 | + | uint32 TotalEntries; | |
| 36 | + | byte[32] SHA256Hash; | |
| 37 | + | wchat_t[NameLength] Name; | |
| 38 | + | DirectoryEntry[TotalEntries]; | |
| 39 | + | } | |
| 40 | + | ||
| 41 | + | struct DirectoryEntry { | |
| 42 | + | int32 entryNameHash; | |
| 43 | + | uint64 offset; | |
| 44 | + | } | |
| 45 | + | ``` | |
| 46 | + | ||
| 47 | + | ``` | |
| 48 | + | struct FILE { | |
| 49 | + | uint32 Length; | |
| 50 | + | char[4] Tag; // ="FILE" | |
| 51 | + | uint32 NameLength; | |
| 52 | + | byte[32] SHA256Hash; | |
| 53 | + | wchat_t[NameLength] Name; | |
| 54 | + | byte[reminder] Data; | |
| 55 | + | } | |
| 56 | + | ``` | |
| 57 | + | ||
| 58 | + | <a href="https://i.imgur.com/VRBetTX.png" data-lightbox="panel"></a> | |
| 59 | + | ||
| 60 | + | ### Sample Tree | |
| 61 | + | <a href="https://i.imgur.com/EP7QRal.png" data-lightbox="panel"></a> | |
| 6 | 62 | ||
| 7 | 63 | Site | Description | |
| 8 | 64 | - | - | |
| 9 | - | [PoEDB](https://poedb.tw/us/) | Database and index for information from the ggpk | |
| 10 | - | [Developer API](Developer_API) | PoEDB API Collection | |
| 11 | - | [PoE Community Wiki](https://www.poewiki.net/) | Community fan wiki | |
| 12 | - | [Daily Labyrinth Layouts](http://www.poelab.com/) | Labyrinth Layouts are updated daily by a team of runners | |
| 65 | + | [Path of Go](https://github.com/oriath-net/pogo) | Golang tools for reading PoE data files | |
| 66 | + | [LibGGPK2](https://github.com/aianlinb/LibGGPK2) | Windows GUI tool to view Content.ggpk and export | |
| 13 | 67 | ||
| 14 | - | ## Character Builds and Planners | |
| 68 | + | ## Bundle schema | |
| 69 | + | ||
| 70 | + | [Bundle schema](Bundle_schema) | |
| 71 | + | ||
| 72 | + | ## Dat schema | |
| 73 | + | ||
| 74 | + | ``` | |
| 75 | + | struct DAT { | |
| 76 | + | uint32 rowCounts; | |
| 77 | + | Data[rowCounts] rows; | |
| 78 | + | REFERENCE refer; | |
| 79 | + | } | |
| 80 | + | ||
| 81 | + | struct Data { | |
| 82 | + | blob row; | |
| 83 | + | } | |
| 84 | + | ||
| 85 | + | struct REFERENCE { | |
| 86 | + | char[8]; // 0xBB * 8 | |
| 87 | + | blob reference; | |
| 88 | + | } | |
| 89 | + | ``` | |
| 90 | + | ||
| 91 | + | ### Data Export | |
| 92 | + | ||
| 93 | + | The game data does not have any official API, and only possible data can be analyzed from the game files. | |
| 94 | + | ||
| 95 | + | Almost all data is stored in .dat64 files within Content.ggpk. But they only have data, no headers. You can start with the .dat64 format, the [PoE dat schema](https://github.com/poe-tool-dev/dat-schema) project is the latest format. Or try to parse the .dat format from [PoE Dat Viewer](https://snosme.github.io/poe-dat-viewer/) yourself. [RePoE](https://github.com/brather1ng/RePoE/) collects many common and processed .dat files and exports them to .json format. | |
| 15 | 96 | ||
| 16 | 97 | Site | Description | |
| 17 | 98 | - | - | |
| 18 | - | [poe.ninja Builds](https://poe.ninja/challenge/builds) | An index of player and streamer character data in challenge and event leagues | |
| 19 | - | [Path of Building fork](https://github.com/PathOfBuildingCommunity/PathOfBuilding/) | A fork of the original Path of Building with more features, managed by the community | |
| 20 | - | [PoE Planner](http://poeplanner.com/) | An online build planner | |
| 21 | - | [PoESkillTree](https://github.com/PoESkillTree/PoESkillTree/) | An offline build planner | |
| 22 | - | [poebuilds.cc](https://www.poebuilds.cc/) | simple build aggregator | |
| 23 | - | [Mikelat's Mana Reserved Calculator](https://poe.mikelat.com) | A simple mana reserve calculator | |
| 24 | - | [PoE Build Browser](http://www.timtips.com/buildbrowser) | An index of forum builds | |
| 99 | + | [PyPoE](https://github.com/Project-Path-of-Exile-Wiki/PyPoE) | Collection of Python Tools for Path of Exile, mostly used by wiki | |
| 100 | + | [RePoE](https://github.com/brather1ng/RePoE/) | Repository of Path of Exile resources for tool developers. | |
| 101 | + | [Poe Dat Viewer](https://snosme.github.io/poe-dat-viewer/) | Web-base Poe Dat Viewer | |
| 102 | + | [PoE dat schema](https://github.com/poe-tool-dev/dat-schema) | Source of truth schema for dat files. | |
| 103 | + | [Path Of Building Fork schema](https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/dev/src/Export/spec.lua) | Source of Path Of Building Fork schema | |
| 25 | 104 | ||
| 26 | - | ## Crafting Resources | |
| 27 | - | ||
| 28 | - | Site | Description | |
| 29 | - | - | - | |
| 30 | - | [Craft of Exile](https://www.craftofexile.com/) | Item crafting resource and simulator | |
| 31 | - | [Vorici Chromatic Calculator](http://siveran.github.io/calc.html) | Attempts to calculate the optimal use for your Chromatic Orbs. May not be fully accurate. | |
| 32 | - | ||
| 33 | - | ## Trading and Economy | |
| 34 | - | ||
| 35 | - | Site | Description | |
| 36 | - | - | - | |
| 37 | - | [Official Path of Exile Trade](https://www.pathofexile.com/trade) | PoE Shop Indexer | |
| 38 | - | [Better Trading Extension](https://chrome.google.com/webstore/detail/better-pathofexile-tradin/fhlinfpmdlijegjlpgedcmglkakaghnk) | Extension for Google Chrome that can save trade searches and improves trading interface among other features | |
| 39 | - | [poe.ninja](http://poe.ninja/) | A history graph of the price of items across leagues | |
| 40 | - | [PoE Antiquary](https://poe-antiquary.xyz/) | index of older league price data from poe.ninja | |
| 41 | - | [PoE Overlay](https://kyusung4698.github.io/PoE-Overlay/) | All-in-one macro and price checking tool. Requires installation of Overwolf. Has several additional features compared to the Community version. | |
| 42 | - | [PoE Overlay Community Fork](https://github.com/PoE-Overlay-Community/PoE-Overlay-Community-Fork/) | All-in-one macro and price checking tool, standalone community version. | |
| 43 | - | [Awakened PoE Trade](https://github.com/SnosMe/awakened-poe-trade/) | price checking tool | |
| 44 | - | [Menagerie](https://github.com/nomis51/Menagerie/) | A Path of Exile trade manager to simplify and speed up your trading experience, and much more! | |
| 45 | - | [PoE Lurker](https://github.com/C1rdec/Poe-Lurker/) | Compact trading manager and companion | |
| 46 | - | ||
| 47 | - | ## Filters | |
| 48 | - | ||
| 49 | - | Site | Description | |
| 50 | - | - | - | |
| 51 | - | [NeverSink.Filter](https://github.com/NeverSinkDev/NeverSink-Filter/releases) | NeverSink.Filter | |
| 52 | - | [FilterBlade](http://www.filterblade.xyz/) | Loot Filter Customizer | |
| 53 | - | [FilterBlast](https://filterblast.xyz) | Loot Filter Hub & Editor | |
| 54 | - | ||
| 55 | - | ||
| 56 | - | ## In-Game Tools | |
| 57 | - | ||
| 58 | - | Site | Description | |
| 59 | - | - | - | |
| 60 | - | [Lutbot Logout Macro](http://lutbot.com/) | A TCP disconnect logout macro with more optional functionality. Also integrated with the Trade Macro. | |
| 61 | - | [Exilence Next](https://github.com/viktorgullmark/exilence-next) | A progression and income tracker for you and your friends | |
| 62 | - | ||
| 63 | - | ## Hideouts | |
| 64 | - | ||
| 65 | - | Site | Description | |
| 66 | - | - | - | |
| 67 | - | [HideoutShowcase](https://hideoutshowcase.com/) | Hideouts import file database and calculator. Contains screenshots, videos, master level required, decorations needed, etc. | |
| 68 | - | ||
| 69 | - | ## Media | |
| 70 | - | ||
| 71 | - | Site | Description | |
| 72 | - | - | - | |
| 73 | - | [Developer Tracker](http://www.gggtracker.com/) | Tracks the post from GGG staff members on the official forums and reddit. | |
| 74 | - | [Reddit](https://www.reddit.com/r/pathofexile/) | A subreddit dedicated to Path of Exile | |
| 75 | - | ||
| 76 | - | ## Community | |
| 77 | - | ||
| 78 | - | Site | Description | |
| 79 | - | - | - | |
| 80 | - | [The Forbidden Trove Discord](https://discord.gg/zBpfweq) | Largest In-game trading Discord group | |
| 81 | - | [MF Academy](https://discord.gg/AUGEZM7e) | MF Academy Discord group | |
| 82 | - | ||
| 83 | - | ||
| 105 | + | PyPoe stable.py to spec.json | |
| 106 | + | ``` | |
| 107 | + | from PyPoE.poe.file.specification.data import stable | |
| 108 | + | from json import dump | |
| 109 | + | with open('D:/spec.json', 'w') as f: | |
| 110 | + | dump(stable.specification.as_dict(), f) | |
| 111 | + | ``` |