Giter VIP home page Giter VIP logo

pob-web's Introduction

pob.cool - Path of Building for browser environment

wakatime

This is browser version of Path of Building.

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.

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

Install dependencies

npm ci

Run driver shell

Set up a development server for the PoB web driver alone.

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.

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.

pob-web's People

Contributors

atty303 avatar atty303-bot[bot] avatar

Stargazers

 avatar Yaraslau avatar  avatar  avatar Vladyslav avatar mlzzen avatar Tai Yi avatar  avatar Andrew Hunn avatar Paulo Vitor De Souza avatar Decal Bagel avatar Théo FIDRY avatar Zachary Childs avatar Connor avatar Tiago Dantas avatar  avatar sagokafkef avatar  avatar  avatar Danut Mitrofan avatar zakaluka avatar Matias E. Petenatti avatar  avatar Mattia De Rosa avatar Boroda avatar Ryo Narita avatar Tanaka avatar Daichi Hirata avatar Nguyen Bao avatar Jesse avatar Wiktor avatar David Herberth avatar Quentin avatar  avatar spooee avatar Yotoon avatar Al Murray avatar Evan Rosson avatar mangkoran avatar Andrew Miller avatar  avatar Adrien Louis-Rossignol avatar Valentin HV avatar

Watchers

 avatar Théo FIDRY avatar

pob-web's Issues

Notes tab doesn't work corrently

One bug I noticed is the colour coding for the notes sections is acting very funny (colouring the words BEFORE the intended section)
Additionally the curser in the notes section is not accurate to where I click, it seems to think its about 1.5 lines above where I clicked.

Sorting out errors

  • Errors generated in Lua are displayed on the screen & notified to Sentry
  • Errors that depend on the user's environment are displayed on the screen & not notified to Sentry

Mobile support

The following items need to be considered

  • How to handle keyboard input
  • How to handle mouse-over
  • How to display on a small screen

We'll get to it after the desktop development is settled. Otherwise the work may be wasted.

Error in `Get Currency Conversion Rates`

/assets/worker-a2Y1A8Nb.js:1 Uncaught (in promise) Error: In download callback: Classes/TradeQuery.lua:74: attempt to index local 'obj' (a nil value)
stack traceback:
	Classes/TradeQuery.lua:74: in function 'callback'
	Launch.lua:306: in function <Launch.lua:305>
	[C]: in function 'xpcall'
	[string "-- pob-web: Path of Building Web..."]:96: in function 'PCall'
	Launch.lua:222: in function <Launch.lua:214>
    at Function.onError (index-D9iCzRnr.js:52:1943)
    at MessagePort.r (index-D9iCzRnr.js:47:1249)
    at MessagePort.r (index-D9iCzRnr.js:74:18355)
    at MessagePort.c (rocket-loader.min.js:1:9405)

Host any PoB version

Stop Emscripten's FS build and provide FS via BrowserFS.

  • r2/2.42.0/images.tsv
  • r2/2.42.0/root.zip
  • r2/2.42.0/root/asset.png ...

Bypass CORS with Chrome Extension

https://chatgpt.com/c/2233402b-9e2f-43b9-a31e-499a6f92fe40

Access to trade sites, for example, bypasses CORS with a server proxy.
There is a high possibility that the rate limited will be imposed by the access source IP.
Therefore, we bypass CORS with an extension.

Security: Is the security risk increased if the origin is limited to pob.cool? I understand that there is a risk of CSRF if pob.cool itself is rewritten by an attack.

Drawing of build code is inefficient

The build code is very wide and will not fit in the width of the texture atlas.
Scrolling the cursor in the code text box generates many texture atlases. This is because separate DrawTexts are emitted before and after the cursor.
We need to implement a GC to erase recently unused strings from the Texture Atlas, or come up with something else.

Adding cluster jewel to tree causes error

image

Steps:
1- Open a new tree
2- Allocate any cluster jewel slot
3- On Itens, search for a cluster jewel unique (you have to search by hand, since we can't type anything yet, voices will cause the bug)
4- Put on the slot selected in step 2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.