#tooldev-general

1 messages ยท Page 127 of 1

simple ravine
#

I was actively having some kind of patronage on Patreon, and realized the card had expired, and updated it, so it may look new

fickle yew
#

Yeah it said updated from 2.5 to 5

simple ravine
#

oops

frigid nova
#

@fickle yew i just priced cluster jewel prices a few days ago using my modified pricing algorithm, if you're curious in comparing let me know

#

i did the splits you suggested, although i further grouped small node numbers into 2, 3, 4-5, 6, 8, 9-11, 12

worthy cape
#

@hazy fog A bird whispered in my ear that @gilded tree is the current dev behind poe.watch and could arguably be considered worthy of the sweet green role.

#

(I'm doing my job, for once)

hazy fog
#

words go here I just woke up and zao says this is indeed the Mxrk that creates https://poe.watch/ so now @gilded tree is a tooldev party

distant rock
#

Anyone aware of any changes to the character-window API that was supposed to go live now?

Exilence started blowing up just about now for everyone, and the error implies our client tries to send incorrectly formatted data.

#

I will investigate it deeper, just wanted to check if anyone knew something that just changed

simple ravine
#

That doesn't say much, other than your mvvm thing doesn't like the data. You should check at the right stack level, i.e. at infra service layer / http request response

distant rock
#

Ye agreed, just wanted to check quickly if anyone had an answer before I dig deeper, but already on it, thanks @simple ravine

simple ravine
#

Introduction of OAuth, and I saw GGG website asking for new ToS consent when logging in

#

perhaps that's blocking someting

#

@civic crane u make the awakened poe thing right?

#

I see some mods that it's not recognizing, additionally it doesn't recognize if things are synthezied it looks like

civic crane
simple ravine
#

:yawn:

worthy cape
#

You should join SnosMe's Discord and ask questions without reading the FAQ or providing logs. That's what everyone else seems to be doing ^_^

simple ravine
#

:yawn: * 2

crimson owl
#

@distant rock bit late but im having the same issue with exilence

distant rock
#

fix coming up, we didnt have proper defaults on our end and poe.ninja removed them today on his end so it blew up a bit

fickle yew
#

Yeah I'm culling my api data a bit more for values that don't make sense - like mapTier on a unique weapon.

steel adder
#

What tool is this that Quin uses, anyone know? Gets like map information and other stuff.

worthy cape
#

@steel adder Awakened PoE Trade's "Map Check" functionality.

steel adder
#

Ahh okay, I was using poetrade and it was just like a little text box, I'll check that out

velvet berry
#

Copying item info (Ctrl+C) is a client-side only action right?

ebon oasis
#

afaik yes

short steppe
#

hey guys, do 3.14 bases not show in PoB? my apothecary gloves do not load

raven tiger
#

update your pob

short steppe
#

got it thanks. how do i set wither totem stacks in POB?

worthy cape
#

Please note that this channel is not for end-user support.

velvet fog
compact isle
#

yep but again enforcement isn't changing. It just helps since we can point out a part of the ToS instead of saying "sorry we don't officially support these APIs"

velvet fog
#

okay, thanks

frigid nova
#

curious if anyone else here with stat translations from the ggpk could tell me what index handlers they have for:
map_boss_chance_to_drop_additional_map_currency_permyriad

#

(RePoE currently has none listed, which im suspicious of)

compact isle
#

divide_by_one_hundred_0dp

fickle yew
#

@civic crane You're only fetching poe.ninja data for one league right? I'm currently doing a review of 3rd party users of my api since my requests to itemoverview is now over 1 billion requests per week...

velvet fog
#

wow

ebon oasis
#

thats a lot of requests

distant rock
#

did some rough estimates @fickle yew , we probably account for approx 30mill per day in exilence lol, thats a bit on the pessimistic side of things though counted on 5k concurrent users around the clock

#

still "only" a fifth of your total if that number is accurate

fickle yew
ebon kernel
#

oof

fickle yew
#

I can only imagine what @compact isle is seeing in his Cloudflare dashboard for poecdn ๐Ÿ˜„

lusty musk
#

@compact isle Maybe you could take a look at the 'chaos orb equivalent' calculation for the official site because it's been out of whack for a couple days now. Items listed for 0.6 ex (~90c) take precedence over ~60c items, and it gets worse for larger amounts. This also artificially inflates the demand (and thus price) of exalts because people are incentivized to list their items for exalts for better listing priority. Never before have I seen more listings for '0.6ex' or '0.5ex' than this league.

#

@fickle yew oof, that's big, I wonder how much that could be avoided with caching

#

whenever I wrote a script that uses poe.ninja I always cached for at least ~15 mins

#

but the big offenders are always community tools that are effectively a distributed denial of service

distant rock
#

in exilence we have a plan on proxying the requests and caching them on our end so a big chunk should be removed with that, but I doubt we are the largest consumer

fickle yew
#

Exilence is already at 20 min intervals and awakened at 10.

#

I wonder what other tools might be big consumers.

distant rock
#

really should try to find user agents if possible in some way

lusty musk
fickle yew
#

It almost has to be distributed tools..

lusty musk
#

when I say 10% of the things I mean one or two particular tools

fickle yew
#

To reach 2000 requests / sec average over 30 days.

lusty musk
#

what you could do is add an API key with a very simple form to fill out to get an API key

#

and for the website rotate API keys e.g. hourly

#

that way an intentionally bad actor could of course still 'scrape' the website to get the website API key and use that

#

but I doubt you're facing such an actor

#

any legitimate tools would just be identifiable through their API key

#

depending on your server bill might be worthwhile ๐Ÿ˜›

fickle yew
#

I could just use Cloudflare rate-limiting - it's 5 cents per 10k good requests, so at 5 billion requests per month I can get it for cheap at $25000 / month ๐Ÿ˜„

lusty musk
#

what a steal

fickle yew
ebon kernel
#

imagine if you could throw an ad through each request or mine some crypto oof Kapp

distant rock
#

DONT GIVE HIM ANY IDEAS AILURO

ebon kernel
#

inb4 Novynn actually grabs that idea for poe trade and throws blame into 3rd party apps for slowing the network

civic crane
#

considering that people can keep app running after exiting poe, it is also possible to pause price updates in the background

lusty musk
#

does someone know a machine-readable source of how much xp each gem needs to hit max level?

worthy cape
#

Should be tabulated in one of the dat tables.

#

Requires of course that your tooling is up to spec tho ๐Ÿ™‚

lusty musk
#

I have nothing right now

worthy cape
#

Guessing wildly, ItemExperiencePerLevel and SkillGems, related via BaseItemTypes.

lusty musk
#

I was ideally hoping for an existing resource unless extracting that stuff is really easy

worthy cape
#

Doesn't seem like RePoE has it, not sure if PyPoE's has the right specs to export it.

#

I'm at "work" so can't really check much.

#

@velvet fog Is the above the right way to find XP reqs for gem levels?

lusty musk
#

@fickle yew I'd suggest for gems to add a new group with 'any quality' and aggregate over that

worthy cape
#

@lusty musk yeah, it's all in ItemExperiencePerLevel:

#

BaseItemTypes:

fickle yew
#

I fixed it the other day, but not every gem has updated yet.

lusty musk
#

I see

fickle yew
#

So any quality you see that's below 20 is 0-19

#

Same for levels.. 1 is 1-19 for any level 20 max gem

worthy cape
#

Oof, just saw the update to README.md on PyPoE.
Big thanks to @obtuse citrus for all the work over the years SadCat brittlL

worthy cape
# lusty musk I see

brather1ng's fork has a good enough spec to export to JSON with:

pypoe_exporter dat json --files=BaseItemTypes .\baseitem.json
pypoe_exporter dat json --files=ItemExperiencePerLevel .\gemxp.json
primal schooner
#

Anybody here have an inside line to the development track of POE (or direct contact with a dev that might know) that could tell me if GGG plans on adding the copy/paste functionality to bench / horti station crafts, or the possibility of exposing them to the api?

worthy cape
#

I wouldn't hold my breath.

#

Way back when they were items, the reasoning around having river info on them was that there was no inherent tradeability in them, instead being more suitable for third party meetups: #tooldev-general message

frigid nova
#

going to update the readme of RePoE soon to indicate we are now consuming brather1ng's fork of PyPoE to power RePoE

does anyone know if someone is going to take over the wiki from @obtuse citrus ?

compact isle
#

and cloudflare was angry at us for having less than that on the enterprise plan lol

primal schooner
rapid pagoda
compact isle
#

unless I'm misunderstanding what you mean

rapid pagoda
#

oh, web.poecdn, nm. was thinking of patch.poecdn

compact isle
#

yeah patch is... a big number for sure

primal schooner
#

Nov / Viper Any chance we can get bench / Horti station crafts to be able to produce info when you mouse-over and CtrlC, like for gear?

#

Just sneak that into one of the sprints and i'll luv u long time

unreal solar
wind garden
#

ya i was noticing the same

unreal solar
#

very strange

compact isle
#

that happens whenever we update ratios because it by far isn't an instant process

frigid nova
#

interesting case of the stat translation hiding the actual value:

#
    "stats": [
      {
        "id": "map_boss_chance_to_drop_additional_atlas_base_type_permyriad",
        "max": 450,
        "min": 350
      }
    ],
#

3.5 gets rounded to 4 and 4.5 gets rounded to 5

distant zodiac
#

Anyone know a api query to official poe api or poe.ninja on getting current temp league name ?

distant zodiac
#

Thanks, works like a charm and now i have their refrence doc. ty alot

compact isle
#

you guys can just PM me these things instead of not-so-subtly suggesting they get fixed :p

slate linden
#

is there a tooldev-updates channel that I am missing somewhere?

worthy cape
frank drift
slate linden
#

thanks

lusty musk
#

@fickle yew would it be possible to add fire burst as a skill to poe.ninja?

latent solar
#

@velvet fog was the 3d model viewer function removed from poedb? I don't see it anymore

grave wren
#

i had a vsc plugin that had working autocomplete for poe filters and a colorpicker, does anyone remember which of the plugins does that?

grave wren
#

doesnt have autocomplete nor the color picker for me ๐Ÿค”

tiny cargo
#

Oh, sorry then, thought you meant that one

grave wren
#

np, its weird that none of the ones i find do it anymore

#

maybe that plugin got pulled :<

velvet fog
#

@latent solar disabled due to some issues

latent solar
#

aight, thanks

frank drift
#

@fickle yew requesting "quality type" dropdown on poeninja economy skill gems page, ie superior/divergent/anomalous/phantasmal

#

I've seen other people want it too

fickle yew
hazy fiber
#

its decent for ignite bomber now

#

they doubled its cooldown, but to compensate, more than doubled its damage and massively increased its aoe

rapid pagoda
#

Neither of those were ever droppable, sooo...

cold wedge
#

that's funny, looks like there's some kind of limitation or protection to sending inputs in the game

#

it deletes consecutive letters if they are the same

#

like "vaal" -> "val"

#

I had to work with the clipboard

worthy cape
#

If you're using the wrong kind of input, you may be feeding it faster than it can process it.

#

Wouldn't surprise me if it would trip up if you've got multiple taps per loop iteration.

civic crane
cold wedge
#

no I'm not, I was relaying in win32 SendInput

#

and I use win32 since, well, yesterday

#

so no

#

but if I send the input in for example notepad, the content was fine

#

@worthy capemaybe

#

anyway with the clipboard it's working like a charm

worthy cape
#

Now that was a mistake, capped the game to 1 Hz.

#

Accepts interactive input without dropping at that setting, so might need tool-grade speeds to tilt some other aspect.

cold wedge
#

watcha doin

#

to capped the game to 1hz

worthy cape
#

I mean using the in-game Foreground FPS Cap to simulate a less interactive client, but I guess that input processing may be decoupled from that.

civic crane
#

just remembered that Awakened sends two ArrowUp events and it works (no delay/sleep)

cold wedge
#

my code for finding the poe process is shit I need to work on that

#

and I need to style my app

#

other than that it's working I'm happy

primal schooner
#

Anyone in the know with CraftofExile.com got a line on the ETA for Engineering rings support?

simple ravine
#

Hmm, poeprices seems to be needing a model retraining

#

The author here?

frank drift
simple ravine
frank drift
#

yeah not sure about the model though

simple ravine
#

I hope it's continuously updated, otherwise the data would be useless fairly quickly

#

I picked up a one-handed sword, foil, and it priced it fairly high on confidence at 172c

#

while it was barely worth 10c

#

additionally some items have been priced at < 1c when it's been worth quite a bit more (10c+)

#

it did price my previous chest fairly well though, around 7-11ex, so sometimes it's within a reasonable range

#

previously used it to get an indication whether an item is worth something or not, to investigate further, but now I fear it'll be too inaccurate

frank drift
#

I've never personally used it for rare items, since it's pretty quick to do an actual search with an overlay

#

fine for uniques and gems etc mostly

simple ravine
#

I'm yet to find one that's super-nice in terms of poe-trade search. The one SnosMe is making is the best I've tried so far, but it has some things I am not super fond of as well

#

And considering the rate-limitation on trade site, it's a bit prohibitive

#

Perhaps I pick up too many items ๐Ÿ˜„

primal schooner
#

I had started working on the concept of a public dump tab for rares w/ a companion website that used similar algorithms to price rares

#

website / overlay

#

sort of like ExilenceNext but for rares

simple ravine
#

The trick is to determine which ones to check, if you need to prioritize

#

Might be interesting to do some crowd-sourcing of combinations of modifiers that is interesting for certain base types

#

like a semi-AI of sorts, I guess?

#

the difficulty is the amount of permutations that are available nowadays

frank drift
#

one approach I've thought about is taking the rares ladder builds are using and only considering those

#

not on ladder? worthless templarLul

simple ravine
#

hehe

#

well, it's definitely a good idea @frank drift to utilize the synergies in the ladder rares for sure as an information source, similar to a crowd sourcing source

primal schooner
#

yeah, I was going to use poe.ninja API and parse all the rares on all the top 15000 ppl on the ladder

#

and determine which bases / affixes were used the most

#

and use that to set relative values to the rares in the stash that needed evaluation

simple ravine
#

i wonder how much you'd throw away if you'd only use that information, and if it's worth it

#

i certainly think it's probably worth for people who are spending their time in end-game-ish

primal schooner
#

step 2 was makret evaulation

#

but even step 1 was a LENGTHY project, and I didn't ahve all the coding skills to accompish it on my own

#

TBH, I was designing it for the casual player

simple ravine
#

while I think I do, not to be that guy, unfortunately limited time due to job and family

primal schooner
#

so they could just ID And dump rares, and then check a website or overlay for an estimated value

simple ravine
#

and even my PoeSharp project is suffering gravely

primal schooner
#

but then Snos added that to AWPOE

simple ravine
#

oh that's a feature in AWPOE?

primal schooner
#

but you still need to spend time IDing and evaluating each item indivudally

#

yeah yo ucan set a command to evaluate a rare against the market

#

but you need to do it for each item

#

manually

simple ravine
#

oh i thought u meant IDing things in a dump tab

primal schooner
#

oh , no

#

that was the feature i was working on

#

trying to piece it together from Exlience and AWpoe

simple ravine
#

right, i've been thinking about doing the same

primal schooner
#

but alas, i'm a dumdum and couldn;t pull it together

simple ravine
#

but first wanted to reach a stable version of PoeSharp to use as a base for extracting meaningful data from ggpk/dats

primal schooner
#

there's nothing that does that 100%

simple ravine
#

well, keep at it

primal schooner
#

also, that's a violation of TOS

#

technically

simple ravine
#

i know, and that's an issue, so probably will have to do some kind of RePoE thing out of it

#

but because I am paranoid enough that projects usually die (like mine do lol), I don't want to be dependent on other libraries too much

#

because then your program would suffer badly in case the upstream project "dies"

#

like PyPoE etc

primal schooner
#

yeah, hence me only pretty much using poe.ninja and the GGG trade API

simple ravine
#

yeah that might be enough

primal schooner
#

I just didn't want to parse all that data

#

Ras already does, to populate the ranks page

simple ravine
#

indexing the river takes some thinking for sure

primal schooner
#

so I was trying to get him to make me and endpoint

#

๐Ÿ˜• no luck tho

simple ravine
#

for which part?

primal schooner
#

the rares

#

on all the profiles

simple ravine
#

oh

#

shouldn't be too difficult to do though

primal schooner
#

other than the fact it's not exposed

#

and I don't have admin access to poe.ninja ... lol

simple ravine
#

well, to replicate what he's doing

primal schooner
#

the data scraping alone is an insane amount of work

simple ravine
#

you don't have to do all what he's doing, like PoB headless etc to get the stats

primal schooner
#

yeah

simple ravine
#

nah

#

step 1: get ladder (easy)

primal schooner
#

it would be a condensved version

simple ravine
#

step 2: queue them (easy)

#

step 3: make worker that gets it thru /view-profile/... (pretty easy)

primal schooner
#

parsing each base and each affix

simple ravine
#

but yeah, it's a bit difficult if you're new to working with databases I guess

primal schooner
#

DBs are fine

simple ravine
#

parsing probably takes a bit of tinkering, but a pro tip is to create a bunch of unit tests and get a live-runner

primal schooner
#

parsing all the info correctly is the hard part

#

that and there's some wonkey stuff w/ the double line affixes

#

you'd need to account for

simple ravine
#

if you have enterprise sub from work, then you're in luck

#

do you have an example?

#

I've made a few parser in my days, I think I even made one for reverse-parsing actual stats into stat descriptors

#

twice even I think lol

worthy cape
#

Even APT settles for either English and Russian for non-advanced item parses, the mapping is icky.

#

PoB has a nice partial string matching soup.

simple ravine
#

when I made one a couple of years ago, it wasn't that icky, perhaps it's worse now

#

what I did was generate compiled RegEx into a a dictionary from the stat descriptions

#

and did some massaging on the actual lines from the json

#

and mapped that way

#

but there are likely much better ways

#

especially if you can normalize the given stat lines and then hash it

primal schooner
#

well, if you ever want to work on EXGF, let me know

simple ravine
#

I'm quite particular with the way I'd want to do it I think, but happy to share thoughts and guide

#

looks like the get-items doesn't bundle mods together

#

didn't they do something like that for trade or river nowadays?

#

or do you have to pass some query string into it?

primal schooner
#

i haven't looked at how GGG does API stuff since pre corona

#

their trade site doesn't use their API

#

it pulls the item directly from their DB

worthy cape
#

Game offers advanced mod descriptions in Ctrl-C if you hold the key, everything else should still be the old mangled mess.

#

Not sure what the trade site does if you interface directly with it, as you're not supposed to do that.

primal schooner
#

yeah, you need to manual pull and parse all the item in your dump stash

simple ravine
#

I'm looking at the private stash tab endpoint (get-items), @worthy cape

#

and then there's the trade APIs and the river

primal schooner
#

as well as parse like item / affixes and have some means oof evaluating the two against each other

#

getting the individual public tab items isn't hard, scraping the base / affixes / implicits/etc individually is the time consuming part

#

I got about that far

#

when I started working on my dump-tab pricer

civic crane
#

I've already done backend for watching river (+ diffing stashes) and cool shit like prometheus stats + grafana for it. Also made UI that renders items as in game. Next thing is to bring into code multiple ideas and see which one gives more accurate price prediction. Hopefully project/site will be ready by the end of summer. I think it will be more useful than adding "mercury trade"-like module to Awakend trade ๐Ÿ˜…

#

Prototype of Live page with recently sold items

simple ravine
#

thank god, then i can save my keystrokes

#

i might do something just for fun once i'm done with league

#

i just feel like poe2 is "around the corner" and spending all this time on something that gut feeling says it'll be a "waste" is eh.. yeah

worthy cape
#

You've got years ๐Ÿ™‚

simple ravine
#

My guess is that it will come out H1 next year

#

Also waiting for WinUI 3 to hit stable (or at least useable), which should be with .NET 6 launch, which in turn is in like september-november this year

frigid nova
#

@civic crane would be down to chat about different ideas in the price prediction space if you're open to external opinions on it.

swift shell
#

is the gui for pypoe not starting for anyone else?

worthy cape
#

Not sure if it's been functional since the tech patch.

swift shell
#

lmao guess i'll just use command line then thanks

worthy cape
#

If you aren't, you probably want to run brather1ng's fork, that's more likely to be maintained now.

swift shell
#

oh ill check that out

swift shell
#

wait if i want to use the ggpk viewer do i have to download the standalone version

#

because the steam version doesnt use content.ggpk

worthy cape
#

Both Standalone and Steam uses bundles, but Steam has them as loose files in a directory tree while Standalone has them in a GGPK file.

#

Not sure if PyPoE understands Steam's thing, but it should be "easier".

swift shell
#

pypoe gui wants the content.ggpk specifically i think

worthy cape
#

If you just want file contents, my bun_extract_file can do bulk extraction.

#

But yeah, that sounds familiar.

swift shell
#

im just looking for a way to get a list of all unique maps with their map name

#

and i am tempted to manually copy paste from poedb at this point

#

does poedb have an api or am i gonna have to write a scraper

worthy cape
#

Negative.

swift shell
#

alright scraper it is

worthy cape
#

If all you want is the list of unique maps, pypoe_exporter dat json --files=UniqueMaps UniqueMaps.json

#

(after installing the cli)

#

There's keys into ItemVisualIdentity and WorldAreas for more junk, but the fields in UniqueMaps may suffice.

#

(for WorldAreas the spec is not up to date)

swift shell
#

where do i actually point it to the unique maps data file?

worthy cape
#

It yoinks it from the game it finds automagically.

#

Not sure if you can tell it otherwise ๐Ÿ˜„

#

The WorldAreas are either the underlying base map or the dedicated unique map base, depending on if it has one or not.

swift shell
#

oh wait i forgot to install the ooz thing

worthy cape
#

I've got both types of game installed so no idea what it tried to extract from, probably GGPK.

swift shell
worthy cape
#

(technically three kinds, got EGS too ^_^)

swift shell
#

yknow what poedb scraping isnt that bad

#

maybe i should move it all to poedb scraping lmao

frigid nova
#

pretty lightweight and up to date reference

swift shell
#

oh that has name and basetype

#

that is actually all i need thank you

#

aw i actually need to authorize for that though

frank drift
#

authorizing should be quick

swift shell
#

ok if im reading the docs right i need to register my application and get a client id/secret in order to authorize?

swift shell
ebon kernel
#

is there a pantheon json?

warm moss
#

any1 know what may be causing a path of building crash on startup? It seems to be really random. I was just using it and when i backed out of a build to go to build selection, it just closed. Now it won't start. It was happening before, and a reinstallation didn't really work. It just started working normally after a few starts

hazy fog
swift shell
#

man fuck maelstr๏ฟฝm of chaos

#

all my homies hate maelstr๏ฟฝm of chaos

worthy cape
#

hรถhรถhรถ

golden bane
#

Maelstrรถm of Chaos is fine

#

But I hate when mz kezboard lazout changes

swift shell
#

it's fucking with my python because im using utf8

golden bane
#

I guess the "รถ" is in Windows-1252?

#

You'll have to do

your_string.decode("cp1252")

then

swift shell
#

problem i that im saving all the map names as a constant in a module, so it crashes when i try to import the module since the default encoding is utf8

golden bane
#

Just decode them before you save them then

swift shell
#

dumb question but how

#

nvm figured it out

cold wedge
#

wait

#

PoE logs are not reliable?

worthy cape
#

Depends on what you mean.

cold wedge
#

I just got 2 trade messages and I wondered why my app didn't caught them

#

and for some reason they are not visible in the log file

worthy cape
#

They do not have Kakao (Korean) player chat.

#

Privacy legislation prohibits it.

cold wedge
#

oh that would make sence

#

what about russian ?

#

the 2 missing messages are russian and korean

worthy cape
#

Might depend on the type of account they have, all I know is that Koreans for sure are excluded.

cold wedge
#

ok

#

thank you for the info

frank drift
cold wedge
#

@frank driftthank you

primal schooner
#

Anybody have suggestions on how to get around CORS errors using poe.ninja API ?

primal schooner
#

Thanks

worthy cape
#

@fickle yew Seems like someone has managed to break the buy price for Ancient Orbs on ninja.

worthy cape
#

and a couple of small tools on the way that will make diagnosing performance issues more efficient.

#

This sounds interesting...

#

(from the 3.14.1d article just posted)

swift beacon
#

Yeah, I was curious if they meant internal tools or something for players.

primal schooner
#

Is there any documented GGG explanation of what is and is not Pay 2 Win ?

frank drift
#

if you mean RMT

primal schooner
#

Perform in-game services during your use of the Website, Materials or Services for any form of compensation outside of PoE.

#

I think that covers it

dire ibex
#

how does one get the game data thats not part of the skilltree data.json? I vaguely remember GGG changing the unpacking thingy, but wanted to provide the data somewhere else, but am unable to find where

worthy cape
#

You may be remembering the story around Path of Building where there was a brief offer to provide specific files that were needed to fuel that tool.

#

That ran out into the sand and/or became redundant as proper tooling for file access was written.

dire ibex
#

ahh, good to know, where can I find the proper tooling for file access :D?

worthy cape
#

In short, most things you want is still in DAT files and stat description text files in the game archives, they're just stored differently in bundles after the September tech patch.

#

Are you looking to access content live in your code or are you happy by extracting to disk?

dire ibex
#

nice, thank you :D

#

extracting to disk

worthy cape
#

bun_extract_file list-files and bun_extract_file extract-files, supports file lists or regexes on command line or standard input.

#

What kind of assets are you looking at looking at?

dire ibex
#

it was mainly curiosity, because I was unable to find any official sources on the cluster jewel ordering

worthy cape
#

PoB implements the layout algorithm for that correctly btw.

dire ibex
#

yeah, but I wanted to know where they got their data

worthy cape
#

The order of the notables is in row ID order, from a DAT table (same order as on poedb).

#

The small passive and socket spacing is from empirical studies I believe.

dire ibex
#

its essentially just about PoC'ing some custom cluster jewel finder, so tree placement isnt needed

worthy cape
#

I mean, the algorithm and ordering inside a jewel cluster, not where they are in the big tree.

dire ibex
#

oh no, really?

#

eh, maybe I'll look into the data after work :D thanks for your help!

worthy cape
#

Note that in order to read the DAT files, you need a schema and tooling.

#

Given that its schema is up to date, you can use pypoe to convert a single DAT file to a JSON file.

#

If you want the easy way, you could yoink the PoB Lua tables ๐Ÿ™‚

dire ibex
#

i'll see how far the ggpk wiki page will bring me with your input from earlier :D

dire ibex
tiny cargo
dire ibex
tiny cargo
#

Oh, sorry, missunderstood. Thought the data felt not right to you, but getting the data this way doesn't feel right to you

worthy cape
dire ibex
#

noice, the cluster jewel ordering is seemingly also in the dat files :D

warm moss
#

my PoB i still crashing, i am completely unable to use it and Awakened PoE Trade also began crashing for whatever reason

#

i have absolutely no idea what could be causing this, but since PoB caused a Display Driver crash at some point, i reverted to old drivers

#

did nothing, was hoping anyone could point me anywhere in the right direction to either report this issue or gain some assistance towards it

#

since it feels pretty damn bad to not be able to play half the game.

worthy cape
warm moss
#

Any other way? doubt dropping another droplet into an ocean does anything, especially when i fully believe my issue is unique

worthy cape
#

As for crashes, ensure youโ€™re not running old AMD GPUs in compute mode, try the brand new 2021.5.2 drivers and if you feel brave, try my version of SimpleGraphic.

warm moss
#

oh god

#

that

#

might be it

#

compute mode

worthy cape
#

Well, itโ€™s where we track issues. ๐Ÿ˜„

warm moss
#

jesus i'll be so embarrassed if that's the issue

worthy cape
#

โ€œuniqueโ€ templarLul

simple ravine
#

u make me curious

worthy cape
#

Swapped out the windowing and GL context creation with GLFW and ported it to Linux/macOS as an experiment.

warm moss
#

i looked through so many pages of the github and googled past 4 PAGES!!

#

do you know how desperate i gotta be to go past the first page, even more the 3rd

#

you fixed my issue though, thank you so much

#

can't believe i forgot to put my gpu back on graphics T_T

worthy cape
#

@simple ravine thereโ€™s some persistent issues that people run into that may be alleviated if weโ€™re a bit less custom and get the engine a bit of an audit.

#

Still getting a feel for some of the systems, just found out how threaded subscripts synchronize just this week as I was lifting some slow Lua into C++.

#

Long-term stuff I want to feel out is DPI scaling, more Unicode:y text handling, that kind of groundwork.

simple ravine
#

how tightly coupled is the "business logic" to the UI in PoB?

worthy cape
#

Well, it can run headless so โ€œnot super muchโ€.

#

I donโ€™t touch the Lua much, itโ€™s all soup to me.

cold wedge
#

In Lua, indexing generally starts at index 1

#

so that's why it wasn't working

#

uh

worthy cape
#

Ragging on one-indexing is so silly, there's so much else that is more fun to mock ๐Ÿ˜„

#

For starters, using narrow filesystem APIs on Windows, locking you into silly ACPs unless you're running the rather new UTF-8 opt-in manifests.

grave wren
#

yeah but that doesnt have comics

cold wedge
#

it's just so frustrating to get stuck on silly things like that

#

it's my bad, I don't do lua usually so I need to learn

#

but still

violet hearth
#

@timid hemlock PoB shows that 3 stacks of Rupture is a 75% bleed damage multiplier. Is this right? The description of Rupture would seem to indicate that each stack is a 25% more multiplier, so wouldn't it be a 95.3% multiplier with 3 stacks?

keen dragon
#

things that are the same modifier add before they multiply, same way that 5% chaos multi on the tree is additive with other chaos multi on the weapon etc

violet hearth
sleek nacelle
#

also, openarl hasn't updated his PoB in a couple of patches so he's not even the right person to ask about PoB anymore

#

that's not how that works lol

#

you don't get increased chaos dot multi, you get +x% dot multi. it's additive because you only ever get added dot multi

keen dragon
#

the 'increase' in that sentence is not a keyword it's a description that states it's purpose

violet hearth
#

Yes, you're right, but the point still stands: The stat itself is not a more multiplier. The stat is additive with itself.

keen dragon
#

in that specific case it would depend on how these stacks are applied, if they are tracked as separate entities then they would multiply in affect but if they are tracked as a single debuff they would be additive between themselves

violet hearth
#

Here's a counter example to what you're saying: The 30% more spell damage from Pain Attunement is not additive with the X% more spell damage from Controlled Destruction.

hazy fiber
#

those are differnt sources

keen dragon
#

they are not the same modifier

hazy fiber
#

look at seismic cry for a better example of why rupture is 75% not 95%

sleek nacelle
#

the wording on rupture isn't exactly the same as other stats like it in the game, but there's no reason to think it works differently than stats like "4% more attack damage per frenzy charge". if you have 7 frenzy charges that stat would give you 28% more attack damage. rupture is the same thing where each stack gives 25% more bleed damage taken and 3 stacks gives 75% more bleed damage taken

hazy fiber
#

or even just somthing like frenzy charges

violet hearth
#

I see what you're saying, but in that case it says "per whatever"

sleek nacelle
#

there's no reason to think that this ONE thing works differently imo

violet hearth
#

the wording on rupture isn't exactly the same as other stats like it in the game, but there's no reason to think it works differently than stats like "4% more attack damage per frenzy charge".

So it could just be poor wording on GGG's part?

keen dragon
#

you can test it in pvp, if you see 3 debuffs on yourself saying rupture then they would be multiplicative between themselves, but if it's one debuff then it would be additive

sleek nacelle
#

they had to word it a little differently for rupture because rupture is a debuff, most debuffs in the game don't stack

#

and I think even the debuffs that do stack all say increased/reduced

violet hearth
#

Good points, fellas. Thanks.

golden bane
grave wren
#

To start you can access the industryโ€™s most generous free tier offering with 4 cores and 24 GB of RAM of Ampere A1 Compute as part of our Always Free tier. Just sign up here, and youโ€™ll get this along with more than 20 great Always Free services like 200 GB of block storage, 2 Autonomous Databases, and more.

worthy cape
#

Gut reaction - nothing that involves Oracle can be without a catch ๐Ÿ˜„

frank drift
#

gut reaction, how are they not going to be slammed by crypto mining scammers

#

guessing credit card required

grave wren
#

They still try to sell me a better instance although it mostly idles

simple ravine
#

Oracle is too little, too late

#

we just had to buy new licenses for a legacy application because moving it to cloud

#

they wanted โ‚ฌ420,000 for 2 servers

rapid pagoda
frank drift
#

2x doesn't sound right

simple ravine
#

Oracle is the poop

timber path
#

Did anyone notice the change in MonsterVarieties.dat since 3.14.2 patch? -- When using existing dat definitions, it breaks when parsing Endgame_ModsKeys (a ref|list|ulong field type)

worthy cape
#

Ooh, surprise changes?

timber path
# worthy cape Ooh, surprise changes?

Yeah, seems like some surprise change. I didn't bother looking into it, because (luckily) I only need the fields up and until "Name" for my own parsing, so I simply disregarded any fields after that in order to get my parser to stop throwing errors about them ๐Ÿ˜„

ebon kernel
#

where can i find all gem images exaltThink? or at least a source/json that has gem and cdn naming consistency

worthy cape
#

I forget which table in particular holds the mapping to 2D Art.

ebon kernel
#

im so confusion

#

for example earthshatter has https://web.poecdn.com/image/Art/2DItems/Gems/SpikeSlamGem.png?w=1&h=1&scale=1 - SpikeSlamGem while the mapped id is Metadata/Items/Gems/SkillGemEarthshatter

#

while majority of other gems are following thorugh prefix of SupportGem or SkillGemVaal

#

or static strike that is StaticGem on cdn and has static_strike_new in metadata; my brain is absolutely melting

#

or Steelskin

#

QuickGuardGem

#

are there any docs about what refers to what? exaltThink

civic crane
ebon kernel
#

๐Ÿค” seems like i have some potato json then

ebon kernel
# civic crane

is that source available perhaps? as i took a look at RePoE gems json and there is no visual_identity ๐Ÿค”

civic crane
#

base items

ebon kernel
#

got it, cheers

timber path
#

Can anyone who's not playing in English give me a hand on some client.txt logs to complete the list of "left area" in other languages?

  "joinedArea": {
    "English": ": (?<player>.*?) has joined the area",
    "Portuguese": ": (?<player>.*?) entrou na รกrea",
    "Russian": ": (?<player>.*?) ะฟั€ะธัะพะตะดะธะฝะธะปัั",
    "Thai": ": (?<player>.*?) เน€เธ‚เน‰เธฒเธชเธนเนˆเธžเธทเน‰เธ™เธ—เธตเนˆ",
    "German": ": (?<player>.*?) hat das Gebiet betreten",
    "French": ": (?<player>.*?) a rejoint la zone",
    "Spanish": ": (?<player>.*?) se uniรณ al รกrea",
    "Korean": ": (?<player>.*?) ๋‹˜์ด ์ง€์—ญ์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค"
  },
  "leftArea": {
    "English": ": (?<player>.*?) has left the area"
  },
civic crane
#

isn't this info in ClientStrings

rapid pagoda
#

it isn't, actually

timber path
rapid pagoda
#

Don't see it in any of the data files

#

WAIT NO

#

It's in BackendErrors

#
{
  "_key": 116,
  "Id": "PlayerDisconnected",
  "Text": "{0} has left the area."
}
{
  "_key": 117,
  "Id": "PlayerJoined",
  "Text": "{0} has joined the area."
}
{
  "_key": 118,
  "Id": "EnteredArea",
  "Text": "You have entered {0}."
}
timber path
#

xD great place to put it ... lol :p

#

Thx for the into though ๐Ÿ™‚ I'll figure the rest out on my own. Now I know where to look ๐Ÿ˜‰

rapid pagoda
cold wedge
#

wait

#

there's some files with all those strings inside ?

timber path
#

Does anyone have any experience with appveyor & electron?

worthy cape
#

I just found out that DepotDownloader has support for incremental updates these days. I've burned so much bandwidth ๐Ÿ˜„

civic crane
#

tip: don't hash stash id using only 32bit, you will find collision every ~70'000 stash ๐Ÿ˜…

pallid doveBOT
#

Please don't post discord invites

civic crane
oak estuary
#

Not sure how these are determined anymore, but the vendor rewards for marauder no longer include Lancing Steel for Sever the Right Hand. @velvet fog

velvet fog
#

the vendor rewards no longer in game file and hard to maintain

oak estuary
#

Yeah, wasn't sure if you were still trying to keep it up to date anyway

velvet fog
#

thanks anyway, nope, just give up. ggg don't want us to know that.

rapid pagoda
#

do you just download the new manifest into a -dir that already has files, orโ€ฆ?

worthy cape
#

I invoke it relatively straight-forwardly with a directory and as long as the .DepotDownloader in there is intact, it only downloads changes.

"${DD_APP}" -app "$app" -depot "$depot" -manifest "$1" \
    -username BobbyTables -os windows -osarch 64 -remember-password \
    -dir "downloading/incr"
#

There's some option you can pass to have it also validate the contents of the existing files, by default it trusts the metadata it has written before.

rapid pagoda
#

aha, perfect

worthy cape
#

The feature that I believe that they don't support yet is applying patches for transforming files, I think it always does a full download per-file and as such, not quite as useful for the pre-tech big Content.ggpk.

#

There's been talk in issues about doing so, but I think it was pending some support in the underlying steamkit library.

rapid pagoda
#

Oh. Bother.

burnt terrace
#

it also doesn't have all maps apparently or perhaps they have a different name

velvet fog
burnt terrace
#

@velvet fog got it. thanks for the help.

dull lintel
#

Hi, I seek dev for big problem account

worthy cape
#

Not quite sure what you're asking about, @dull lintel. If it's related to some problem you have in-game, contact support or tech support.

hazy fiber
dull lintel
#

Not probleme in game ๐Ÿ™‚

#

I use steam, my account is no longer connected.

worthy cape
#

That's still a game-related problem, not about developing tools, which this channel is about.

#

The support email are the people who help with that, they're very good and fast.

timber path
#

How do you actually obtain a map's art name, based on its base item type? nvm, found it, ItemVisualIdentity contains this info.

frank drift
simple ravine
#

Within 49 minutes, 95% of our network was operating as normal.

that doesn't sound right

frank drift
#

yeah def some creative truths there

simple ravine
#

our developers was unable to conduct work for far longer than that due to StackOverflow being down Kek

#

jokes aside, people were screaming for longer than that tho

worthy cape
#

I had hoped for an actual technical post mortem

simple ravine
#

I'm curious who the customer was, and what the configuration circumstance was

frank drift
#

hopefully postmortem later

silent tree
#

maybe they meant 95% of all customers, just so happens the 5% included the biggest ones

timber path
#

Since GGG's OAuth can't be used without a central server (which is quite unfortunate), I'm wondering how much creativity is allowed in regards of obtaining access to semi-private account info (such as a list current leagues, which I assume would include private leagues if the player is signed-in) by opening the poe website in a local browser window, let players authenticate, then obtain the poe session id (since it's a local browser, within the Electron scope, it should be accessible I assume)?

timber path
#

๐Ÿค” Apparently there is no public API to get a list of leagues that include the private leagues (given you provide a cookie with a session ID)

pseudo ocean
#

Guys can anyone help me with fps drops? I noticed that when i talk , see an npc i sometimes get fps spikes exactly to 5 fps and after that it goes up to my cap

#

Is there any fix for this? Its not 100% consistent but it happens and i go crazy

worthy cape
#

@pseudo ocean Contact the techsupport email or post on the forums, this channel is for tool development.

upper turtle
#

how i can get my stash tab information ? I've looked at api, but i'm probably bad at creating requests because i get 403 error

worthy cape
#

Make sure you provide a session ID cookie (or use OAuth), make sure you set an user-agent that identifies {the tool name, tool version, and you} - so that misbehaving tools can be reached.

#

If those are satisfied, access to the endpoints as described in the developer documentation is likely to work.

upper turtle
worthy cape
#

The backend that the website's character window uses is not supposed to be scripted against, there's an explicit API.

upper turtle
worthy cape
#

I guess that those endpoints may require OAuth? I don't really do much web stuff.

#

Might be worth looking at how Procurement (old) and Exilence Next (new) accesses stashes and if the former still works.

upper turtle
#

i found how Exilence Next accesses stash tabs, it uses character-window/get-stash-items

velvet fog
#

oauth need to send request to oauth team and take some time

#

/character-window/get-stash-items seems still workable

gilded tree
#

There are no anchor tags in the new documentation, correct? Canโ€™t find them. Maybe useful for better linking.

Ah, only if you use the nav on the left, I am stupid. Maybe useful to add a hashtag (or something similar) behind the titles like in other docs.

robust stream
#

In item filters when is the = operator applicable?

frank drift
#

I don't think NeverSink ever uses it

#

does save file size omitting it also I suppose

robust stream
#

Oh right, when omitting it.. Dunno what I was reading but yea I can accept that argument. Thanks

frank drift
#

= is used all the time yeah, just implicitly rather than explicitly by most authors

robust stream
#

Does it mean that following example would be correct, Rarity equal Unique ?

frank drift
#

no, I was referring to = sorry

#

so Rarity Unique is valid, implicit equal, or Rarity = Unique, explicit

#

NeverSink does implicit

robust stream
#

Understood that but in isolation, replacing the = condition with the equal and it should work still?

frank drift
#

only = or nothing

robust stream
#

Hmm.. Okey

#

Well it went throo the game parser so I would assume it's legal syntax

#

Where's the ISO standard

#

lulw

frank drift
#

same place as all the other GGG formats ๐Ÿ™‚

civic crane
#

parsing advanced mods text, exactly what I wanted templarLul

tacit birch
worthy cape
#

Neato. Reminds me of the time where they accidentally printed a bunch of debug distance computations to the chat window ๐Ÿ˜„

tacit birch
#

From the people in the thread it seems that not all deaths are logged, guessing it's something they are working on or just a test, as it's a very popular requested feature ^^

hazy fiber
#

or its becouse china realm, who knows

#

considering its basically what they had over a year ago

tacit birch
# hazy fiber considering its basically what they had over a year ago

From what I understand the China system is most likely incomplete and this tries to also show the exact attack or effect that killed you which is not always tied to a enemy. For example the log states if the enemy is destroyed etc which I guess would prevent the Chinese system from giving a accurate kill message. So this is most likely not the same but a improved system.

civic crane
#

death log in poe is useful only as a breakdown of received damage by type over N last seconds before death. And as a bonus show source (mob type) who contributed max damage for each type of damage. Ahh and also pls show me how good my defence layers were working... basically just show me fullscreen spreadsheet ๐Ÿ˜…

frank drift
#

yeah

#

League of Legends did a pretty good job with their death recap rework, something like that

#

I had someone on reddit argue to me that a death log in PoE would be literally impossible to implement... not difficult, but impossible

#

that's why I don't post on reddit much

tacit birch
#

@civic crane Yeah even if they added a recap a video of the death tells so much more, so have shadowplay or relive active in your GPU drivers

rapid pagoda
#

It wouldn't be impossible, but it would likely push some builds from "a little laggy" into "server crashing"

worthy cape
#

Fond memories of auras and minions in which league was it, Blight?

#

Maintaining a coherent history without performance impact was one of the big things about League's tracker where they erred on the side of performance.

rapid pagoda
#

And the number of damage events that can occur in a busy PoE instance is dramatically higher. I wouldn't be surprised at all if busy instances routinely reached thousands of distinct damage events per second

worthy cape
#

How do you then present it in a meaningful way? Scrollable replays from the server's perspective, with inspection of monsters around you and a tally of things done?

#

Of course, most of this has been summarised already in posts, hasn't it?

worthy cape
#

Upside of things, you're already dead so as long as it doesn't impact the five other peeps in the instance it's probably "fine".

worthy cape
#

Aaw, Chris and company crushing everyone's dreams ๐Ÿ˜„

compact isle
#

I thought it would be pretty obvious that the logs are primarily for us to use :p

tacit birch
#

If there is even a small benefit players will see a way to use it vanity

oak estuary
#

Have a link handy to that Among Us post? I love reading stuff like that

broken cloud
#

Random question, is there a name for the algorithm used in quality vendor recipes ("given a bunch of numbers from 1-19, make as many sets as possible that add up to at least 40")?

swift beacon
#

It just adds up the quality in the order they're added to the window. If you put the items in the window in a different order, you can get different results.

#

If you want the most efficient result, you need to sort the items manually.

worthy cape
#

I'm guessing the question is "is there an named algorithm to maximize the number of partitions of values that each sum up to N"

#

Kind of like "knapsack problem" and "bin packing".

#

Way easier to implement if there's a known algorithm for it, instead of rediscovering that you're doing something NP-complete again.

swift beacon
#

Yeah, I'd be interested if there's a way to do it that's better than brute force.

hazy fiber
#

I mean a greedy should come very close

#

becouse you have a nice condition of "that add up to at least 40"

#

meaning its not one big problem its many smaller ones

worthy cape
#

In the bin covering problem, items of different sizes must be packed into a finite number of bins or containers, each of which must contain at least a certain given total size, in a way that maximizes the number of bins used.
This problem is a dual of the bin packing problem: in bin covering, the bin sizes are bounded from below and the goal is...

broken cloud
#

...aaaand it's NP-hard lol

worthy cape
#

Upside of PoE amounts of items is that the number of items is reasonably friendly at least and there's only 19 distinct sizes.

hazy fiber
#

for most things you wont find much 1-4 quality either

broken cloud
#

I'd hoped to set it as a problem for a local programming competition... ah well, the "add them up in order" version will do for an easy item I guess

golden bane
worthy cape
#

Procurement had an approximation algorithm back in the day too.

golden bane
#

The code looks bad but it should work ๐Ÿ˜„

broken cloud
#

Ooh neat, thanks ๐Ÿง

ebon kernel
#

whats the way pob/poe website/poeplanner encode/decode everything to string for exporting/importing?

worthy cape
#
local xmlText = Inflate(common.base64.decode(buf:gsub("-","+"):gsub("_","/")))
#

XML, compressed with zlib deflate, base64-encoded with an alternate alphabet.

ebon kernel
mortal bone
#

if you are using node js you can just inflate with zlib, but that link above gets you into a byte array to a string and back

civic crane
worthy cape
#

I did the thing.

mortal bone
#

Nice :)

weak pike
#

Is there an API that'll get me a list of gems and which class(es) it is available to? I'm only able to find the gem data with no association to which class(es) can get it

worthy cape
#

Quest and vendor rewards are explicitly removed from the game data files a few leagues ago, everything since then is manually curated.

weak pike
#

Did GGG explain why that was the case?

worthy cape
#

Not that I know of, seems like an implementation detail which wasn't needed for the client anymore.

weak pike
#

Oh well... Thanks for the help!

worthy cape
#

The best source to update and consult in the future is probably the wiki, if people start contributing on those manual sections.

weak pike
worthy cape
#

Not sure if they have any good cargo queries you can use API-wise, but it's likely to be the place with the least out-of-date information.

#

I forget what Chuan's stance on it is, but I don't think they care overly much about trying to maintain something unmineable like that on poedb.

weak pike
#

I've seen a few cargo queries on the /poedev but I didn't see any that had gems associated with classes

#

I have a cargo query for all gems only templarSad

#

I think the consensus really is to manually piece together the information

worthy cape
#

Who knows, maybe poke around in #wiki and see if someone has insight?

#

Not sure what the stance is on doing the occasional data pull.

weak pike
#

You got it!

frank drift
#

Chuan has said he's not interested in maintaining data manually yeah

ebon kernel
#

so when it comes to exporting stuff to base64.. are there any common approaches on how the data should be stored before encoding? mainly curious about build skills (gem name + quality/levels) and gear

velvet fog
#

We are trying to remove data that the game client doesn't need, to prevent datamining by chris

civic crane
#

Taking our (my ๐Ÿ˜„ ) wishes into account, I created a dedicated repository for storing schema https://github.com/poe-tool-dev/dat-schema. I hope that we can avoid https://xkcd.com/927/ and agree to use this schema as a single source of truth.
If your tool needs additional metadata that schema doesn't currently support, it can be added. For example PyPoE has 9 dat files that use "virtual" fields, if we agree that this info will be useful for everyone it can be added as following

type BaseItemTypes {
  RarePurchase_Items: [BaseItemTypes]
  RarePurchase_Costs: [i32]
  RarePurchase: kv @virtual(
    keys: "RarePurchase_Items",
    values: "RarePurchase_Costs")
}

I've already switched my CLI and Web dat viewer (https://snosme.github.io/poe-dat-viewer) to use this schema.

Also defined column names for Ultimatum tables if anyone hasn't been able to figure them out yet ๐Ÿ˜‰ https://github.com/poe-tool-dev/dat-schema/blob/main/dat-schema/3_14_Ultimatum.gql

jade hawk
#

Is there a public json file for all divination card data? Here is an example of what I mean:

#
{
            "id":1, "name":"The Astromancer", "art":"https://web.poecdn.com/image/divination-card/TheAstromancer.png",
            "stack":7, 
            "reward": [["c-unique", "The Eternity Shroud"], ["c-corrupted", "Two-Implicit"], ["c-corrupted", "Corrupted"]],
            "flavour": "They would say that he was a dangerous man,\nunbound by the sense of morality,\nbut what does this matter, when his love for humanity is undeniable and completion of his work would benefit everyone?"
}
#

and then a giant list of all divination cards. Of course the data doesnt have to be in this order or style, just that this data is there.

velvet fog
jade hawk
#

Only missing the art and flavor text but ill manage.

woeful sphinx
worthy cape
#

Notable excerpt:

We have removed the 32-bit Path of Exile client. Basically no one is running 32-bit versions of Windows anymore.

#

I wonder if they will take the opportunity to obliterate the 32-bit DATs doing so.

frank drift
#

eventually no doubt

grave wren
#

are there any rate limits known for the forums?

ivory echo
#

I was tcpdumping the client today because i wanted to get to the bottom of hte lag spikes I see when my screen goes from nothign happening to a few things happening - then it slowly comes back to normal even as more pile onto the screen. It feels like a network issue since it isn't correlating to much else).

#

I found out the traffic is encrypted for some godaweful reason. Why?

#

The performance and latency hit that must create would be quite suffocating. I'm dumbfounded. My game traffic is probably the last on my list of traffic to encrypt.

#

Oh, and the protocol between the cliend and server is really fucking weird.

#

why are there back to back emty serer sends within 70ms of each (consitent through the connection)

#

waaaaay too many small packets - very poor packetization in general it seesm.

#

I write quite a bit of high performance network code for trading institutions and so some of this seems a little off to me. Has anybody tried to figure some of this out before?

frank drift
#

if you just want to rant, try reddit

ivory echo
#

bite me

worthy cape
#

Please note that it's extremely against the ToU to touch the client or its traffic.

ivory echo
#

i didn't touch the client or its trffic

#

and i'll read whatever i want to off the stream

worthy cape
#

Heartbeats are not uncommon and there's always a tradeoff in realtime applications between packet overhead and responsivity.

#

You're fucking with the traffic. Don't.

ivory echo
#

70 ms heartbeats are waaaay too fast esp for over the inet.

#

even colocation in a trading system we might do 2 sec

worthy cape
ivory echo
#

more often 30 across the network

#

I'm noit fucking wit the the traffic

worthy cape
#

Misunderstand me right, will you?

#

In any way unless you have a whole lot of time, the protocol is supposedly extremely opaque and not self-descriptive in any way, as any dense command stream is.

#

Not much difference between encrypted and unencrypted observations of "yep, there's data here".

ivory echo
#

its encrypted is the first problem that would have to be solved

frank drift
#

it's encrypted to discourage snooping

ivory echo
#

the more i think about that the more i think that is just a horribl idea

#

that fucking lame

hazy fiber
#

if it was unencrypted it would be a joke to write things like bots, as you would no longer even need the client once you figure out how to mimic it

#

or it could reveal info that the player isnt supposed to know but the client needs

#

the same way that game files are missing from the client, that needs to be sent often, things which are definitely not network efficient but prevent data mining

#

I doubt that the encryption of network traffic causes any significant performance issues

worthy cape
#

You may observe rather different traffic patterns between lockstep and predictive too, for obvious reasons.

frank drift
#

I may or may not know a game or two where you can do things like duplicate items just by dropping a packet or two

broken cloud
#

Hmm, isn't it standard practice for always-online games to encrypt packets?

frank drift
#

competent ones yeah

worthy cape
#

Cheap enough for the amount of data, helps combat routers and ISPs trying to do naughty things to traffic, and it forces any fiddlers to read process memory to get session keys, which is a good time to boop some snoots.

worthy cape
#

@velvet fog Patch notes for 3.14.3 up, assuming you'll find out any moment now ๐Ÿ˜„

worthy cape
#

EXE not mentioned in binaries manifest in this patch.

#

Data index still has .dat files.

rapid pagoda
#

I believe there's a command line flag to reenable local fetch, alternatively I think there are some headers/access-control-allow-origin handshakes you can enable to make it work

velvet fog
worthy cape
#

So the EXE is gone, but the bundle index still has the 32-bit DATs.

velvet fog
#

got it, thanks

white cave
#

is there any type of changelogs anywhere? revisiting a super small project i was working on which broke because winged scarabs are now properly identified as such. took me a while to find, they used to be labelled as jewelled for whatever reason

worthy cape
#

Each league tends to have a thread with the relevant changes to things like item names, I forget if they're linked from the wiki somewhere.

#

As for fixes like that, not really sure.

white cave
#

nevermind i lied, only the new ones added this league use winged, others still use jewelled

lyric flame
#

sorry for the slightly unrelated question, but i was wondering if anyone here knows a way to display poe item info on my website? im not the most technical person so i'm not sure i could figure out the api or whether its even possible to see item info with api, but any advice on direction would be highly appreciated

frank drift
broken cloud
grave wren
#

do we have a resource for old skill tree json files somewhere?

grave wren
#

that was fast, thanks ๐Ÿ™‚

worthy cape
#

Built up a new VM server this weekend with an HDD array of 6x 3TB. Elected to go for a RAID-0 death stripe and see if I could rehydrate all the GGPKs and bundles. Progress thus far at 614/712 manifests:

NAME              USED  AVAIL     REFER  MOUNTPOINT
yolo/full-packs  7.83T  7.97T     7.83T  /yolo/full-packs
#

Upper bound estimate for size last year was something like 14 TiB for a full reconstitution, probably gonna land somewhere around 10T.

sonic gull
#

Could anyone perhaps upload an updated version of this?

civic crane
sonic gull
#

i would hate to ask for spoonfeeding but my knowledge in anything that is even in there is literally that of a toddler :/

worthy cape
#

You would use some modern tool (like bun or one of the other pack viewers) to extract the DDS textures and the sprite atlas TXT files; and then run something like those scripts to slice out the individual art from the sheets.

sonic gull
#

hm

#

can't find the documentation for the shell scripts

worthy cape
#

Implication is that you have an extracted PoE tree on disk, a bash shell, ImageMagick (convert, mogrify), xxd hex editor, Python with the PIL package.

golden bane
#

Python 2 to be exact

worthy cape
#

I forget if there's texture symlinks these days and if tools handle them.

sonic gull
worthy cape
#

It's straightforward enough; you need some prerequisites installed and an unpacked game tree.
Got a bit too much on my plate to walk you through how to do all those things.

civic crane
#

@compact isle what defines order of stats in dropdown on trade. Number of items that have this stat in descending order (across all leagues)?

compact isle
worthy cape
#

Pointless trivia of the day: all non-bundle GGPKs since launch sum up to 8.12 TiB on disk.

golden bane
worthy cape
#

Yeah, pondering what to do now, this was a bit of a sidetracking to get an older version set up which I could use to toy around with the viewer, as the DAT spec has run away from me since I last touched it.

mortal bone
#

damn, I need to update the poe json repo.... done

stiff sierra
#

Hi all,
Does anyone know if there is a python (other langues could work) library for pulling XP ladder info from private leagues/regular leagues?

#

Dreaming of writing a discord bot that my guild needs

#

Also if anyone has experience writing discord bots and would be willing to answer a question or two I would really love that :)

worthy cape
#

Blissfully unaware of the former, and only bumbling around with the Rust Discord bot libraries for the latter, but hi! brittlW

frank drift
stiff sierra
stiff sierra
grave wren
stiff sierra
#

any database design geniuses here? I might have a question

worthy cape
#

I'm the opposite of a genius on that front.

mortal bone
#

It is easier to ask the question than to ask to ask the question ๐Ÿ˜„

hazy fiber
#

yeah but then you might get bad answers

#

is it better to have a bad answer than no answer, that is the real question

grizzled seal
#

someone giving a wrong answer on the internet is often the quickest way to get the right answer, people can't resist correcting mistakes online

grizzled seal
#

heh, I knew there had to be a wiki entry for it

pseudo ocean
#

Hey. I wanna join voice. I dont know how to.

#

Can any1 help me?

#

I can just see i cant join.

#

Dont know why.

#

Just says i cant join

worthy cape
finite axle
#

poeapp - wherever u are... miss ya bro! lol

pseudo ocean
#

Hey

#

I need some1 to talk to

worthy cape
#

I wonder how much fun Novynn is having with implementing meaningful trade filters for the upcoming ||Logbooks||.

simple ravine
slate linden
#

Anyone tried out Menagerie?

wet aurora
#

I saw a tool on reddit like a week ago, but can't find it, anyone knows what was it?

simple ravine
#

๐Ÿ˜‚ hilarious

worthy cape
#

If it's bad, I didn't create it. If it's good, I'll take the glory.

worthy cape
# simple ravine ๐Ÿ˜‚ hilarious

I'm toying with the old fun project of jamming all the data files into a single database.
Turns out that it's harder than it looks to work with a real database system.

#

I've gotten so many amazing errors from Postgres with my (ab)use.

#
NAME                USED  AVAIL     REFER  MOUNTPOINT
yolo               9.61T  6.20T       25K  /yolo
yolo/full-bundles  1.42T  6.20T     1.42T  /yolo/full-bundles
yolo/full-packs    8.12T  6.20T     8.12T  /yolo/full-packs
yolo/poe-db        70.9G  6.20T     70.9G  /yolo/poe-db
#

Plenty of space to experiment tho.

simple ravine
#

toying with your work environment, or u got that amount of disk space at home?

#

that's some space if so ๐Ÿ™‚

worthy cape
#

At home, glued six 3TB disks together into a RAID-0 when upgrading my VM machine.

#

Thus the pool name.

simple ravine
#

oh I read it wrong, haha.. I read 70T first

#

what kind of errors have u observed?

#

filesystem/raid-0 related or?

worthy cape
#

I actually have 21 more of those disks in a box here, so I could actually build a 70T array if I had enough power and controllers ๐Ÿ˜„

simple ravine
#

haha, investing in Chia?

worthy cape
#

No filesystem problems observed yet, just incompetence at working with postgres and libraries.

#

Leaking temporary tables in a connection, constraint violations propagating as errors, stuff like that.

worthy cape
#

Plan right now is to extract all files from bundles, put them in a postgres table indexed by content hash, and associate (manifest,filename,hash) with them to have a central DB of all files.

#

Glue on a web snout or some other network accessibility and have it power whatever tools I want to make on my desktop.

#

As I'm not distributing any of my tooling anymore for reasons, might as well tie it to my home infrastructure for some fun experiments.

simple ravine
#

are you still doing the de-duplication and version chain stuff?

worthy cape
#

The primary purpose of building this disk array was to see how much space all the data files would be if reconstructing everything in full instead of the delta compression.

#

As shown in the list above, all the GGPKs up until the tech patch were 8.12T, I had a conservative upper limit estimated of 14T.

#

The plan onward is to crack each version's pack/bundles into individual files and ingest them into the deduplication database.

simple ravine
#

I guess you're more nostalgic than I am heh

#

but pretty cool indeed

worthy cape
#

With that I can support some fun stuff in tools, like time-travel for individual files.

simple ravine
#

very useful for some .dat analysis perhaps

worthy cape
#

I see the most value for figuring out formats over time, but also DAT changes over time.

#

Indeed.

#

Building the infra now so that I have it when tools could use it.

simple ravine
#

I'm debating with myself if I should continue working on my library or not

#

I had a pretty long period of time where I did not feel like writing a single line of code

#

but I am getting the itch again

#

however the library has limited usage, and not sure how exciting it is

#

parsing files has a limited excitement factor, if I put it that way

worthy cape
#

Dev sure feels different now that I don't have any end-user/end-dev facing tools to do.

simple ravine
#

Did you retract those tools due to rule compliance, or other reasons?

worthy cape
#

Got a lurking long-term goal of getting the now-defunct hideout editor adapted into a viewer with VR support.

#

The rule compliance thing, if I can't ship to users anyway, I might as well build something more selfish.

#

Taunting people with screenshots and videos ๐Ÿ˜‰

simple ravine
#

hehe

#

my end-goal was to have a companion tool that was self-reliant (no external depedencies on PyPoE etc), hence why I started in that end to parse ggpk

#

now that it seems like they might not take kindly on that, im not sure

#

GUI development is kind of in a weird state right now, where you don't really want to invest a lot of effort into the current tooling, as new ones are coming, but it's not there yet

#

and it has been in a "it's coming soon" state for a frustrating long time

worthy cape
#

MS is always eternally cycling UI tech ๐Ÿ™‚

simple ravine
#

yeah, and there aren't any "very nice" other tooling out there either

#

and don't try to convince me on those hybrids, they're not gonna fly with me

#

and then I debate with myself... "PoE 2 comes out soon โ„ข๏ธ, how much time do I want to invest in something that is likely going to be pretty much dead in the water when it comes out?"

worthy cape
#

Any decade now.

simple ravine
#

hehe right

#

but u get the thought process though?

worthy cape
#

Guess it depends a bit on what kind of companion you were aiming for as well.

simple ravine
#

every item, skill etc will likely look quite different in poe2

worthy cape
#

Some things will remain relevant, not sure how much will be obsolete.

simple ravine
#

"omni search" and "trade" in one

worthy cape
#

My eternal niggle in the back of my head is the problem of ever-changing data and format specs. A tool that uses game files directly needs to degrade gracefully when the formats rightfully change, either by caching or bundling pre-extracted data, and by then there's not much point in direct access anymore.

simple ravine
#

i see your point indeed

#

I made this in 2019

#

i still haven't given up hope though

round hazel
#

Just asking. Any tool that can extract .dds from the ggpk without knowing much on programming. I guess the hotlink from POE CDN as .png are gone or relocated

worthy cape
#

Unfortunatly my TLS cert has expired atm, but let's see...

#

For the UI sprite sheets you need to read Art/UIImages1.txt and slice out the parts of the texture atlases for the icon/element you seek.

round hazel
#

thanks

civic crane
velvet fog
#

Ggg removed many images from cdn

normal prairie
#

so the public stash tab api - does one just have to go through the entire thing for the first time (including null league statshes apparently) before you get to the recent results, or am i doing something wrong?

worthy cape
#

Yep, you pick a point in history before which you don't care and then suck on the firehose.

normal prairie
#

cool, is there a way to determine when to start? i thought the pagination id is completely random (is there a list of "recent" ids one can start from?)

worthy cape
#

People tend to write down the start of leagues occasionally.

normal prairie
#

right, makes sense

#

ty

worthy cape
#

Note that the river contents is not a 1:1 record of how stashes have changed over time, if you're working on historical IDs, it's quite likely that they're empty, being obsoleted by a more recent contents that the API producer knows about.

normal prairie
#

yeah i don't really care about the past, i'm tinkering with stuff that would want to listen to ongoing things in the future

worthy cape
normal prairie
#

eh, i have a go script looking at the data, i just grabbed the last api id from somewhere on poe.ninja and will take that

#

not fussed about accuracy yet, will start with the new league

worthy cape
#

A tip if you're writing pipelined code to rapidly fetch data, it's common to take the first bunch of bytes of the response and extract the next ID from that, deferring the full response to some other piece of code.

#

Otherwise it can be hard to keep up.

normal prairie
#

mhm

#

it moves that fast does it?

worthy cape
#

It's not that bad, but it tends to help if you end up backlogged or when services are slow due to load.

#

I don't have good measurements, back when I was trying to catch up with some test code, it fed me 5 MiB/s.

normal prairie
#

will have to see if my rpi chokes on it then ๐Ÿ˜‚

simple ravine
#

I initially did what zao mentioned as well when toying with it, and it's a solid recommendation. For me though, ttfb was the bottleneck, not transfer even at 5MB chunks

#

And I transferred it all the way to Sweden

grave wren
#

is there an easy way to look up internal unique item names to generate links to the cdn? tried cargo queries with the wiki but metadata_id doesnt seem to work

compact isle
worthy cape
#

^_^

compact isle
#

so if anyone has any good ideas I'm all ears ๐Ÿ‘€ or... er... eyes

worthy cape
#

So for logbooks you've got a set of rolled locations, each with some faction and a bunch of implicit mods; as well as the usual explicit mods?

#

Kind of tricky, as I assume that if you're looking for juicy locations, you don't want to mix mods between different choices in your results.

compact isle
#

yep exactly. The best solution I have thusfar is adding a new stat group (like if, count, weighted sum) specifically to match an single area out of the multiple each item can have

velvet fog
#

They don't explain the logbook very much, so we don't know.

#

but you can assume the Karui Wargraves like a room in The Temple of Atzoatl with modifiers

velvet fog
#

2-3 implicits, each implicit have location name, major monster type (4 types), 1-3 random modifiers

#

in video and web site havd 2 or 3 implicits

velvet fog
#

seems only 4 types, for 4 bosses

#

video said boss will be displayed on the logbook, no idea how it present

fluid wave
#

I'm trying to create an access token with the scope "service:pvp_matches", but it doesn't seem like the API accepts that scope as described in the docs.

#

query: &grant_type=client_credentials&scope=service:pvp_matches, response: {"error":"invalid_scope","error_description":"The scope requested is invalid for this request"}

normal prairie
simple ravine
#

Pretty much

#

When I did the tests, I personally saved about 50ms by taking the ID before consuming the content, which wasn't worth the added complexity in the code

#

but do your own tests

worthy cape
#

It's worth decoupling the ingest processing from obtaining and chaining new requests on the IDs.

#

Still gonna have to honor the rate limits, but it can help if your code is streamlined.

normal prairie
#

yeah ofc, i'm building the rate limiting interface now

#

it's ok to not have a registered app if i'm just consuming the trade api right?

simple ravine
#

@worthy cape how much did you shave off by consuming the first bytes to start the subsequent request sooner?

worthy cape
#

Don't recall, time-to-first-byte was horrible back then.

worthy cape
simple ravine
#

yeah, I only shaved ~50ms or so, as in the transfer rate of the 5 MiB was quite fast

worthy cape
#

They really want to be able to get hold of you if it does naughty stuff.

normal prairie
#

yeah, i set that up, I just have no plans to set up a full app (yet)

simple ravine
normal prairie
#

what languages do you use out of curiosity?

worthy cape
#

Varying constellations of C++, Rust, Python3.

#

Zensei is one of those filthy C# peeps ๐Ÿ˜‰

simple ravine
#

@worthy cape is the Rust/C++ muscle-flexer ๐Ÿ˜‡

normal prairie
#

heh

worthy cape
#

I don't do much around the APIs tho, my jam is data files and vis.

normal prairie
#

I'm trying to learn new languages, thus hobby projects ๐Ÿคท
tinkering with go atm, though i do want to try rust at some point
I loathe C#, too much bad xp with it and MS

simple ravine
#

oh btw, weren't they gonna add HTTP 2.0/QUIC support to that endpoint?

#

go is popular indeed, i think there are some library around for it as well (poe-related)

worthy cape
#

I feel you on learning, currently (ab)using PostgreSQL with async Rust.

rapid pagoda
simple ravine
#

ok out for dinner a while

fluid wave
#

though currently doing this with Python + SQLAlchemy, so even more abuse ๐Ÿ˜„

frank kayak
simple ravine
#

oh did Rust finally get async?

worthy cape
#

async story has been brewing for a good while, language bits with Future, Pin and async/await landed like a year ago or so.

#

Runtimes like tokio have also released 1.0:s for that.

simple ravine
#

Pin as in pinnable memory?

worthy cape
#

It took quite a while to sort out the rather unique ownership and pinning semantics needed for async Rust, and the automatic implementation of coroutine state for futures.

simple ravine
#

or was it go that lacked async story completely?

worthy cape
#

Values in Rust can move around quite a bit, so there's a Pin trait that lets you have some guarantees about the permanence and address of something, kind of akin to .NET pinned memory yes.

simple ravine
#

i mix them together somtimes and which one's missing what

worthy cape
#

Early async in Rust is a bit before my time, but there was a lot of macros and a fair bit of manual implementation and composition of futures, with explicit carrying around of state.

#

It's in a good place atm.

simple ravine
#

Pinning is a bit expensive

worthy cape
#

Core difference is that in .NET pinning is about keeping heap-allocated objects in place so that GC doesn't jiggle them around.
In Rust it's more about ensuring the same for anything, regardless of allocation source, across entering and exiting the async machinery.

#

Mostly for when you pass things like buffers off to things like OS socket functions and IOCPs, etc.

fluid wave
#

Async in rust is in a really good place right now

#

Pin is one of the things that still confuse me though

frank kayak
worthy cape
#

Is it still keen on the goroutines and channel kind of thing?

simple ravine
#

Oh right go opted for channels

frank kayak
#

thats the main stuff for concurrency but the sync package also has mutexes, waitgroups etc

#

i think its solved very elegant

simple ravine
#

While .net originally opted for APM/TPM

#

But they did introduce channels and pipes a while ago as well

fluid wave
simple ravine
#

I really wanna learn Erlang/Elixir

fluid wave
#

Do it! I made some hobby projects last year using Phoenix, felt very natural and powerful

simple ravine
#

Nice. what I really like about it is the 'actor-esque' first class citizen

#

and the robustness that comes with the runtime

#

I heard that some of those design decisions they made are a bit of a trade-off in regards to performance though

fluid wave
worthy cape
#

Ooh, from 3.14.3c notes:

You are now able to view your Guild Stash on the Path of Exile website.

fluid wave
#

๐Ÿ˜ฎ

simple ravine
#

oh nice, that in conjunction with the stash transaction log can be nifty

worthy cape
#

nom nom nom

#

How does it normally look during migration?

simple ravine
#

oh it's migration atm

worthy cape
simple ravine
#

I guess I am not groing to tinker on my poe river thing

#

It's pushing about 1270 empty stashes per change id atm

worthy cape
#

They've heard the complaints about bloated river responses and this is what we get ๐Ÿ˜‰

simple ravine
#

haha

compact isle
#

the public stash API is the way it is so that we don't have to store extra data on our end

#

and league ids are kind of flakey so we'd be relying on you being able to delete all your local stashes by league that might actually be the infamous <ERROR> league

#

it's annoying for us as well but we don't have a lot of good solutions without a total overhaul ๐Ÿ˜„

worthy cape
#

Where on the website is that functionality supposed to be? Can't seem to see much in the guild section as an officer.

compact isle
#

its in your character window as a tab

#

which isn't really the right place for it but we've been sitting on the feature for way too long

worthy cape
#

Actually didn't have any plans on scraping anything, the History has worked well enough to police the take-1-leave-1 map tab scheme we run.

#

Ah, there. Being able to see the contents without having to log into the game is nice, helps with looking into stuff.

compact isle
#

yeah that's what support said in their request for it haha

fluid wave
#

Small shout out to a very early version of a Python PoE API client I'm working on for the next BPL league: https://github.com/BPL-Development-Team/poe-client
It's an async client based on aiohttp, and has pydantic schemas for all the PoE API type definitions.

civic crane
fluid wave
#

Oo good call

#

Lucky this isn't used yet

simple ravine
#

What's BPL?

frank drift
fluid wave
#

That is correct!
@civic crane just fixed that in a new version ๐Ÿ™

dull roost
keen dragon
#

was there any info on what CustomAlertSoundOptional condition, the other two (DisableDropSoundIfAlertSound, EnableDropSoundIfAlertSound) seem more understandable

frank drift
#

presumably allows fallback to default sound instead of erroring out of the filter parser

#

usually there's a technical info post for filter and other tool dev stuff

#

maybe tomorrow

compact isle
keen dragon
#

thank you

carmine merlin
#

@velvet fog any idea when they removed this line -- MonsterSummonedSkullFastAttack1 [active_skill_attack_speed_+%_final = 40] from the mod list of SummonedRagingSpirit, SummonedEssenceSpirit and IcyRagingSpirit

velvet fog
#

seems fine for me

#

oh, some column changed in MonsterVarieties.dat

carmine merlin
#

wonder if the mod got moved in there