Skip to content
@ggpk-exposed

ggpk.exposed

GGPK Browser consists of the following components:

poecdn-bundle-index automated export of all files listed in the bundle index. ggpk-server (ggpk-index.onrender.com) - a searchable index of all PoE1 and PoE2 game files. Axum server deployable as a docker image. This index is now stored as static data in cloudflare and accessed directly by ggpker
unoodler (unoodler.lvlvlvllvlvlvl.workers.dev) - extracts individual blocks of raw data from bundle files. Cloudflare worker written in rust.
ggpker (ggpk.exposed) - file server that fetches file details from the index server and uses that to identify which raw blocks to fetch, slice and concatenate to produce requested files. Cloudflare worker written in typescript.
unddser (image-old.ggpk.exposed) - image conversion service. Cloudflare worker, currently using a fork of image-rs as the pull request (image-rs/image#2258) adding support for required DX10 image formats has not been merged yet. undds2r (image.ggpk.exposed) - image conversion service. Native rust axum server running in a cloudflare container. exposer (www.ggpk.exposed) - web frontend using vuefinder file browser. SPA that calls apis served by ggpker.

visual representation

The bundle scheme is detailed here, but a high-level overview is that individual game files are contained within bundles, which contain blocks of data compressed with oodle. Bundles do not contain information about their own contents, instead all file entries are listed in a single bundle named _.index.bin, which also lists the names of all other bundle files, and the location of each file within a bundle as a byte offset and size.

PoE1 has about 1 million files, with an _.index.bin of around 20Mb, while PoE2 has closer to 4 million files indexed a file of almost 100Mb.

Development

This project uses Cloudflare Workers and a Vue frontend. To run the entire stack locally in development mode, follow these steps:

  1. Ensure you have node, npm and cargo (Rust) installed.
  2. Check out all component repositories.
  3. Run npx wrangler dev in the ggpk-index-server and unoodler repositories and wait for them to start
  4. Run npx wrangler dev in the ggpker repository, then the undds2er repository after ggpker starts
  5. Run npm run dev in the exposer repository to start the frontend.

Services and Ports:

  • Exposer (Frontend): http://localhost:5173
  • GGPKer (Gateway): http://localhost:8788
  • UNDDSer (Images): http://localhost:8789
  • UNoddler (Extractor): http://localhost:8787
  • Index Server: http://localhost:8790

Popular repositories Loading

  1. poecdn-bundle-index poecdn-bundle-index Public

    Rust 3

  2. ggpk-index-server ggpk-index-server Public

    Rust 1

  3. ggpker ggpker Public

    TypeScript 1

  4. exposer exposer Public

    CSS

  5. unddser unddser Public

    Rust

  6. unoodler unoodler Public

    Rust

Repositories

Showing 7 of 7 repositories

Top languages

Loading…

Most used topics

Loading…