Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/atty303/pob-web
Online build planner for Path of Exile.
https://github.com/atty303/pob-web
emscripten pathofbuilding pathofexile webgl
Last synced: 3 months ago
JSON representation
Online build planner for Path of Exile.
- Host: GitHub
- URL: https://github.com/atty303/pob-web
- Owner: atty303
- License: mit
- Created: 2024-05-05T00:11:20.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-07-30T14:27:24.000Z (6 months ago)
- Last Synced: 2024-07-30T18:12:14.891Z (6 months ago)
- Topics: emscripten, pathofbuilding, pathofexile, webgl
- Language: TypeScript
- Homepage: https://pob.cool
- Size: 1.95 MB
- Stars: 35
- Watchers: 1
- Forks: 2
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# pob.cool - Path of Building for browser environment
[![wakatime](https://wakatime.com/badge/user/018dace5-5642-4ac8-88a7-2ec0a867f8a7/project/fa7418b8-8ddb-479c-805b-ce2043f24d24.svg)](https://wakatime.com/badge/user/018dace5-5642-4ac8-88a7-2ec0a867f8a7/project/fa7418b8-8ddb-479c-805b-ce2043f24d24)
This is browser version of [Path of Building](https://pathofbuilding.community/).
## Features
- Run the PoB in your browser, that's all.
- You can select the version of the PoB to run.
- Saved builds are stored in the browser's local storage.
- The `Cloud` folder appears when you are logged into the site. Builds saved there are stored in the cloud and can be accessed from anywhere.
- You can load a build by specifying a hash in the URL.
- eg. https://pob.cool/#build=https://pobb.in/WwTAYwulVav6## Limitations
- Network access is through our CORS proxy, so all users have the same source IP. This will likely cause rate limiting.
- For security reasons, requests containing the POESESSID cookie will be unconditionally rejected. Do not enter POESESSID in the PoB of this site.## Principle
- We will not make any changes to the original PoB. This is because a lot of effort has been put into the PoB itself and
we want the community to focus on developing the offline version.
- However, it does make changes in behavior that are possible without changing the code.## Development
### Prerequisites
- [Node 22](https://nodejs.org/)
- [Emscripten](https://emscripten.org/)
- [CMake](https://cmake.org/)
- [Ninja](https://ninja-build.org/)### Clone the Repository
This repository includes a [submodule](https://gist.github.com/gitaarik/8735255) in `vendor/lua`. To include the submodule when cloning the repository, use the `--recurse-submodules` flag:
```bash
git clone --recurse-submodules
```
If you omitted the flag, you can use the following commands to clone the submodule:
```bash
git submodule init
git submodule update
```### Install dependencies
```bash
npm ci
```### Run driver shell
Set up a development server for the PoB web driver alone.
```bash
npm run build -w packages/driver
npm run dev -w packages/driver
```### Run web app
Set up a web application development server.
You need to build the driver first.```bash
npm run dev -w packages/web
```## Under the hood
- Running the original PoB Lua code.
- Use a custom Lua 5.2 interpreter to run the code.
- Using Emscripten to compile the PoB engine to WebAssembly.
- A module equivalent to SimpleGraphic is written in C to bridge with the JS driver.
- The JS renderer renders using WebGL.
- `packages/driver` emulates PoB windows with vanilla JS.
- `packages/web` is the React application that uses the driver.