#tooldev-general
1 messages ยท Page 51 of 1
that's why when you have insane movespeed and, murdering a bunch of mobs in asynchronous mode, you'll see your character and monsters change position instantly sometimes.
I wonder why the calculations differ
i would assume packet drops?
Maybe it's somewhat affects by interrupts, such as stuns, knockbacks, movement skill and rounding
pretty sure in lockstep it sends 30 ticks per second
to the server
someone should pm Battle(non)sense on youtube and make a netcode video about PoE
๐
reverse engineering network traffic is quite tedious, and possibly impossible if they use asymetric encryption
not without injecting into the process and doing things GGG might scold you for, yep
IF it's encrypted
they might not do it, if it's just validation, for the sake of clarity and speed
they would still send information that would be valuable for botting, which they'd want to prevent
map data etc
I found this:
https://github.com/Zoxc/PoE-OPN
but it's super old. i'm sure it has changed since then, and it seems incomplete
well, I'm not sure if PoE bots run by using injection or packet tracing
interesting
Since then, according to some dubious forum posts, they've added encryption - at least to the sensitive data parts (login)
But that was 4+ years ago, and considering how much the game's grown since then, I'm just assuming that they've tightened up a bit since then.
latency alone can cause desync. an easy to visualize case is imagine a group of mobs with little space between them. on the client you run through very fast with 100ms latency. on the server the mobs are walking around. if the mobs block the location your client pathed through then you are desynced. lockstep helps but if you have higher latency and client side prediction then you will end up with desync no matter what. @hushed relic
now ggg might have a way to make the client know the behavior of the mobs so that doesnt happen as much but thats pretty complicated
and stuns like you said can throw that off since you wont know how much the mob hit you for until you already thought you ran past
Yep, the client seems to know the AI
at least to a certain simplified degree
and simulates it, though I guess some calculations need server side confirmation
can't let the client random things, otherwise it'll be able to predict too much
yeah i imagine that they run a basic game sim locally and then the server sends updates. teleporting or sliding mobs around until they match
back in the day before lockstep walking through a pack of monsters was 100% certain desync and 90% chance of death
I think they use some sort of periodical confirmation
because the client would path around and the server wouldnt
yeep
those were the times
/oos
When cyclone was balanced, because of desync ๐
yeah you can tag events with a time and send them between the client and server. it can then use that history to figure out what actually happened and what might happen next
haha
i remember one technique ggg used was to animate monsters walking to their correct locations if they got desynced
that was the only time we saw vaal oversoul walking
ofc his desync was a bug since how does a monster that teleports get desynced in the first place
that's pretty interesting
im playing with a library right now that abstracts that whole thing
it lets you fill a list with events at a certain time and then you can request ANY time
and it will [using your code] auto adjust the values for that time
predicting what it would have been or will be
but the predictions are easy to code since you can just extrapolate or use fancy averages for older times
then it syncs all that info between the client and server
i dont know how it will handle animations yet though
@torpid mesa you develop games?
hobby but yea
the logic you described in your previous message sounds much like tweening
basically is yea
keyframing with tweening, pretty much
its the first networking library/paper i saw that treated it as tweening
most of the time they dont abstract it at all and talk about 'going back in time' and just keeping a history then cludging it all together
i mean no offense when i write the following, but...
game designers really should take more interest in system development, in general. they'd benefit from understanding the concepts that are developed for other things, to and take inspiration from them
(and vice versa of course)
there are some games you can see how it's literally terrible design underneath
you can tell that they dont have a real structure for their latency compenstion if two people shooting at the same time results in one dying and the other persons bullets/rockets disappearing
and yeah, reinventing serialization of data, in a much worse manner than what you get out of the box with existing solutions
with this tweening library you can just check if they were alive when they shot
and if so shoot anyway
problem should take care of itself really
since you would always want to do that check anyway
one thing that game developers should look more closely at is actors
literally just if status[timeofcommand].alive==true then docommand
though youd have to decide how to keyframe/interp boolean states
you wont go from alive to dead to alive again in the same frame though so its not a big deal
yeah some of those patterns i dont have a big grasp on yet
with an actor framework, what I'd do is treat the player as an actor (object), and the projectile generated by the player's weapon as another.
so no matter if they shoot at the same time, you'd both die
for java, Akka (https://akka.io/)
for .net, Akka.net (https://getakka.net/), Orleans (https://dotnet.github.io/orleans/), or Service Fabric (https://azure.microsoft.com/en-us/services/service-fabric/ - on premise available too)
erlang has it built in
the beautiful thing is that you can horizontally distribute them, and they have failure tolerance built in
and each actor has its own logic, so the design of your application / system / game becomes quite good
ah thats similar to the entity system that people do
not the fake one that unity has
but like an ECS
where everything is an entity which has basically zero behavior and all its properties added via composition
then to process them you have systems which are basically services
that becomes terribly messy
so you have raw data that is grouped into an object and you can pass relevent ones or messages to the actual services that process them
but its way better than what they usually do
which is you have like a mobile class
then subclass it to monster, player
then subclass monster to each type of monster
etc
well that is basic inheritance and polymorphism, which can be used with actor models as well
yeah but it has a lot of issues compared to the ecs way
with composition the behavior is inherited and then you have to reuse a ton of code in a way that has little logic
so if you make a monster thats also something else
you gotta subclass two things
or copypaste
suppose you have class Monster that have basic implementation of interface IMonster, and then you have class Porcupine : Monster (Inherits Monster)
yeah but what happens when you want to reuse stats?
and is porcupine really its behavior?
because if its just stats you dont really need to inherit since itll have the same stats as any other monster
stats shouldn't be hardcoded into the class
they should be derived from configuration and passed using a DI/IoC container
vs behaviors you say that this monster will follow
so instead you break it up into the data your entity has. like positon, ai behaviors, stats like %inc hp and what not
then you have code that is NOT part of that entity that looks at that and does the work
because Porcupine have special domain logic that is unique, i.e. upon death, it has x% probability of shooting those goddamn spikes
then you dont have to inherit anything for code reuse
your ai system knows what behaviors the monster has
and just does them
but any mosnter could ahve on death effects
instead of making a porcupine class
make a stat or behavior that any monster can have that does that
right, and that is how you end up with class files with 5,000 lines of code
nah you can break out the actual behaviors into their own files
you only need the triggers in the main class
like on death, on hit on crit etc
then the behavior list on the entity says which ones it uses and what they do
ok so having a porcupine class breaks the s right off the bat
what resposiblities does a monster class that handles everything have?
vs an ai system that ONLY handles triggers
etc
you still have most of the useful logic in a Monster class, but any specialized logic can be overridden or appended to in the Porcupine class
THAT seems like a huge class to me
youd still want to make the monster have plugin behaviors
well, in reality you will have sub-classes for different logic
i feel ike youd only subclass if it makes sense that X is a Y
I guess we'll just agree to disagree ๐
there are a million ways of achieving the same thing
for example if you are making a UI you could have a BOX to hold other elements, and a VBOX to hold a collection of them etc
and subclassing since they are all an element of the ui could make sense
eg they have hieght width style etc
the only difference is how they hold their children
one would have an ordered index and the other freeform
but a monster isnt so direct
that's basic inheritance right there..
yeah but a porcupine isnt a monster with different behavior, its a monster with a few stats changed. its an instance of monster
any monster could get a random mod that says explodes on death
like volitile
so it makes more sense to me to say that there is an on death event
and you can add to the list of stuff that happens when it dies
some are part of the porcupine template
some are random mods added
some are map mods even ifyou want to be cruel
right, which becomes very cluttered when your game evolves and you have hundreds of different things that can happen at different places
but that clutter will happen in some form no matter what if you want that feature. so either you can organise it so that monster is more abstract and just a place to hold these stats. or you can hard code all these behaviors by subclassing every type of monster
I would rather subclass things.
to me it seems way cleaner to do new monster. mosnter.addtrigger(OnDeath, ThrowSpines) and have a json file that determines which triggers each mosnter get
because I would imagine having to keep track of hundreds of different stats/triggers etc, and how they might also behave slightly differently in certain situations
rather than actually ever hard code any monster getting anything in particular
so instead of having one code base for ondeath, you would prefer to have the explicit code for each monster have say an ondeath method that you override and write it in to
the problem with that though, is that your compiler won't optimize the IL code for that
how do you imagine .addtrigger(...), OnDeath, ThrowSpines look like?
youd have like a json file with stuff like
yeah i get that part
porcupine {
basehp:100, ondeath:spines} etc```
i mean, the actual code
yeah
so youd have your behavior list or component. it would have a list potential triggers. then there is code you run every frame that iterates these lists. you basically already do that if you just have an update() function on a class anyway
except your monster.update() does everything for the monster
so instead you could run all your ai at once
it would visit each monster, see what its behavior is supposed to be now with a state table or whatever. then it checks to see if any behaviors should trigger
I think that would become a bit slow though
for example the monster died
you trade iterating through each entity only once for instead doing it a few times but batching all of your similar behavior together
you also reuse code more
because you only write your on death code once. you even reuse your shoot projecile code
I think you're not seeing the entire picture of my proposed solution
because your spines() method can just be a new attack
though i guess that works fine in an porcupine class too
I am trying to find a better way of explaining it
what i am invisioning is the traditional messy way people do inheritence in games:
class porcupine:
update() {
if alve{
movetowardsplayer() // move how ever far we can this frame
attack() // would check if we are in an attack animation, if not see if we want to start one etc
} else if died { //some other monster killed us before this update but after the last one
startattack(spines)
}```
etc
damnit, ok let me write something up
i presume we would still load stuff like hp and damage values per instance
im gonna use c# but u'll get the gist
what i wrote above is actually a very popualr way to make games
I'm not doubting that
though porcupine would inherit from a monster type or interface
ill do a quick write up of the newer way people are doing it
e.addComponent<Motion>(new)
e.addComponent<Behavior>(new)
MotionSysystem.update(dt, entity) {
Motion m = e.get<motion>
CalculateMovement(m.location, m.movementType, m.goal) //movementtype could simply be pathfind to
// calculatemovement would have a map of movementtype to the methods/other code that can make that monster move however movementype specifies
}
AISystem.update(dt, entity){
Behavior b = e.get<Behavior>()
// the behavior would be data that specifies what state machine states it has access too [likely a template for the state machine is stored some place
// and a list of triggers when the state machine reaches certain states
}```
In a truly asynchronous game such as PoE though, I'd imagine you don't really need an "Update" function.
poe isnt really async though
it still has discrete server frames
though idk what the max actions per second would be
if you have an idea thats different from both im pretty interested
sorry, was preparing kid for bedtime
yea give me a couple of minutes to contemplate
thats fine though in about 15 minutes ill be much slower to respond fora few hours
im still interested in talking about this
my main goal right now is to experiment with different ways to structure a game
to be completely honest, I didn't think about the discrete frames etc, but I feel that should be controlled by a separate logic - but then again, im no game developer. i have architected a few complex systems in my careeer though, please hold ๐
to give a reference to how frames tend to be done: there is a game loops, and you count the time since the last frame or tick (which is what you can call it when your game loop doesnt rely on frame time). you then run an update or other method in every system or on every entity/monster and pass them the time since last frame or 'delta time'. once this processing is done you figure out how long its been and then sleep until either the next frame or until a certain amount of time has passed since you started this tick
so in most modern games that are not locked to any particular frame rate the delta time is roughtly the same between ticks
Oh, I have a keynote for you if you're interested
On how they built Halo 4 with Orleans (actor framework)
sounds fun
k ill check it out some time this afternoon/evening
I'm confident you'll find the hour worth it
:>
Even if you don't use .net/c#, the concept itself can be interesting and inspiring
as far as a tick based game goes you need to pass the delta time to scale stuff like velocity
for example position = position + velocity * dt
since you only want to move them 1/10th of a second worth of movement
if you tick is 1/10th of a second long
i do use c# actually
That in my opinion should not be up to the entity class
though i hate most of the frameworks i have been playing with for some reason or another
which part? the dt or scaling the velocity down?
Calculations based on ticks, throttling or however you'd call it
this got me intrigued, I'll post some code snippets here, and you can just @-me when you have time
aight
I'll be here for about 6 more hours
as a side note thats why i prefer ecs. all the code dependant on frame rate is grouped outside of the entity
though its grouped by what type of code it is like ai, physics etc
alright ill be responding less often now though ill check back in
all these things should be pluggable
Take Malachai fight for an example
that's vastly different than a Seawitch or whatever
Yeah whatever system it needs to be pluggable and dynamic to some extent
reading the docs on orleans is pretty interesting
and i guess most operations technically don need to sync on a tick
you just need to have some stuff like trading still be atomic
patch
@simple ravine i skimwatched that video. its pretty interesting but it looks like they used it for the presence server/lobby system. basically who is in what game and in general how are they doing. perhaps matchmaking too but they didnt reallymention that
TIL, HashAlgorithm (like SHA256) is not thread safe, and it's really intricate to see how the memorytearing behaves. fml, 300 GB of data transformed in vain
FML
I just did
lol
1st iteration, murmur hash - apparently output is different from x86 and x64 processor architectures - and different steps in pipeline - messed things up
2nd iteration, sha256 hash, forgot to thread lock, didn't think it'll be any issues
3rd iteration, sha256 properly with a lock
๐
Funny thing, it's 300 GB in sql server, but only 150GB in Document DB (cosmos)
and moving it from West US to West Europe takes about 2-3 hours
with the ETL transformation inbetween
so it's quite painful
Here's a fun phenomenon with Cosmos DB.
A timeline of number of documents in this collection over time.
... We never removed any documents ourselves, and we intended to insert 36.6M documents, which it will go down to again. Hmm?
My conspiracy theory is that they do this when you insert in a rapid pace, to ensure there's space enough for whatever you're wanting to insert next, so they pre-allocate
When the system observes that rapid insertion has stopped, they optimize your storage (so you don't pay for something you don't use).
hmm
POE trade shows wrong ES vlaues for legacy items.
Is there anything to be done about this?
For example, Shapers Touch, Stepan Ear come to mind. If you sort by ES, the top results have pre 3.0 values...
Who is poetrade dev?
Yes.
The item base ES values are wrong.
I knwo the mods can be legacy, but the actual base es is wrong.
@chrome topaz Can you look into this. For example: http://poe.trade/search/anahasimimiobo top Setp boots show 343 ES.
This is impossible, I have perfect roll Steps and they dont have 343.
@simple ravine 343 uses old base, which NO ONE has.
aka if you buy these item from in in game, they dont actually have 343 es.
@gritty olive i just had a great idea for CurrencyCop
Live Server
so you can see the hourly/daily/weekly earnings of streamers
it might be ggg reporting those values, i feel like the same issue happened with items that didnt get relisted after a mod was changed
last time
those are likely to be forum-indexed
This issue cost me like 10ex and I want to kill myself.
rip
if it has a "verify" link at the bottom, it's from forums
basically a service to remotely see someone's earnings
that's a no no
That's quite a ton of work + lot's of logistics + streamers would have to allow this.
I think it'd be way easier to just have a mini plugin for streamers to show XP/hour and Earnings/Hour in their stream overlay
Though experience tells me that that'd evolve into a D-size-contest and would be equally useful as the tooltip DPS ingame.
He would need the accountkey from every streamer
which is the same as saying "give me ur stash info"
Wouldn't necessarily need to do that I could allow people to opt-in to a leaderboard through currency-cop that sends stats over
what would you do to combat fake listings on a leaderboard
I dunno, make sure the md5 hash is correct so that the exe isn't modified?
@torpid mesa two options, opt in could be "I allow the server to use my token on my behalf to calculate" or "client sends objects, server does calculations, sends back a response to client and waits for confirmation"
mm yeah doing it on the server would help a lot
lol
for people who want to be on a leaderboard, just use the public stash route
boom done.
- exe hash will solve nothing
- client sends objects will solve nothing, u just fake the object
OAuth would solve this though... cough @sudden tiger ๐
Dual resolution is the issue @simple ravine
Public stash doesn't solve the issue since what currency-cop does is calculate private & public
OAuth would be a solution but I'm not going to badger them to do something that isn't ultimately required ๐
He said "it was in the works"
The client sending object with verification would solve it, but having the server do it is the easiest route
The dual verification? Because they'd have to do the exact same on their side
So the server & client must come to the same conclusion
My assumption is that you'd extract the item data from their private stashes, and pass them on to your server-side
If they build a system that can in-real time do that verification then, I mean, well, shit, I don't really care at that point
I'd be impressed
Was my assumption wrong, or?
Yeah @simple ravine then it would ping back to the client, and get the client to do the same workflow it does and give a conclusion hash
use that hash to compare against the server
If everything works out, then yay it's accepted
Ok, so assume I make a rogue application
If they build a system that can in-real time do that verification then, I mean, well, shit, I don't really care at that point
Was me assuming that
that tells your server-side that hey, look what I found, 10000 exalts
Yeah, but you'd have to do the same mathematical equations and algorithms to come to an exact value with a hashing of steps
I would be impressed ๐
your application is an electron application, right?
Yeah
okeh.
If we are talking about the most secure way then passing session to server and having the server to do it
If we are talking about semi-secure ways of doing it then I can do client/server agreement protocols
assymetric encryption ร la SSL/TLS
just tell them to send a postcard with their drops to update ratios manually
"mail me a usb with your session token"
Doing it on a server would be best though, and if people start feeling secure with sending stuff to a server I could move the whole app to the server <_<
yea, give a half-decent-scriptkiddie 30 minutes, and he'll be posting fake stuff to your leaduerboard.. sorry, but I've seen that happen so many times
I've built game engines, I am not discussing the most secure way to do it, thats why you can do fun lua stuff with WoW because it does server/client agreement
not sure what game engines has to do with this
But, then again, I don't really care about the legitimacy of the leaderboard, but I think users would
Because they are the best example of client<->server communication
Not really, in my opinion, they are the best example
HFT, ad server tech, distributed consensus algorithm (raft, paxos) (like zookeeper)
Most widely used, and openly discussed as far as Defcon talks go
The majority use the things you're mentioning
I quite enjoy game client<->server communication it's a really good place to learn from, especially when you look at new games and their exploits and how they attempt to mitigate or the short circuit routes they attempt
when it comes to security
bring me one single legit defcon keynote that says gameserver communication is da best
That is not what I said, or implied
Because they are the best example of client<->server communication
So what do you mean with this?
That is not related to the Defcon statement
I'm lost
"Openly discussed as far as defcon talks" this refers to Game Engines and Exploits
yeah, im just lost in the conversation as a whole i guess
Which is to me a great insight and cause for being a best example because of the references
Well, no need continuing it then xD
If I create a leaderboard it would be done via session server-side
Opened an issue for thoughts on server side vs application
I wish I had time to hack on PoE stuff more.
Same, running two engineering teams leaves me little time for life stuff
Yea, running 4 companies is not recommended if you want to have a social life
at all
๐ ๐ซ
I have two companies I could not imagine adding two more
but im intriguied enough about the discussion with rifflaute the other day, so i'll mess around with that a little
What was it around? I think I missed it
game engine loop stuff
abstraction, SOLID foundation etc
inheritance
his preference was plugging with configurations, and I can see some of his point of view, but, yeah, I need to think a bit more about the problem domain
Oh the actor system?
yea
that is the approach i would want to draw inspiration from
we've actually built an event sourced distributed system with orleans
it became pretty neat
This reminds me of something a prof I know keeps talking about a lot
"Agent Driven Programming"
Basically it's a merge of the Actor system that was brought up with some AI constructs
It's used to simulate complex environments, such as traffic etc
by arranging a set of entities, each with it's own motivations + rules and each hosting all the crosscutting concerns
over time they arrange themselves into an optimal "shape"
and it's way less costly than calculating the optimal criteria for the whole centralized swarm
Very swarm intelligence inspired
that sounds intriguing
Yep!
on a different topic, yesterday we've implemented a prototype to store and share "Filter Variations" on the filterblade server!
This was linked more than once
best joke of today ๐
Yeah we intend to make a small "subversion table", with description, versions, upvote system
i read subversion, and instantly was like "why not git?" until I re-read that. omg in braindead today
feature branches!
aww ๐
nah, i mean it's cool
but it was also kinda cool that it was purely client side logic
Well, you can't store things in a DB without serverside logic :[
Firebase!
we could've used node.js instead of php I guess
but I've heard about OVH conflicting with some modules
and i have to admit that this is 100x better than any other stuff they've come up with in the past
Interesting, I'll be sure to check it out during the next months
It seems like I'll be forced ot do so, if I'll come to an agreement regarding the job offer I've been talking about during the last weeks
hehe, u got the 2nd interview yet?
It'll be in november
so far, everything was phone only, excited to meet those guys
it seems both sides have a lot of questions
though, these news happened just ~2 weeks ago
so, it's all fresh still
well, i'm sure you're going to have an offer from them
unless they require you to know something very specific that's far from expertise
my friend told them about my endeavours as "NeverSink" (on top of my academic/job history). Apparently that's a huge selling point to them
This is kind of funny on several levels for me (hard to explain)
lol
a bit delayed, but i used to like php when i was younger
My dad is in love with the language
its quick and easy to make it do something visible
He asked me to write the JS parts for him here and there
I can write a 400 page book about how and why I hate PHP so badly
well i hate js, i have no objective reason though, it just does not sit with me right
Well.. some people like certain logic types (I've spent some time studying Monads lately and am totally inspired by it and most of my colleagues cringe when the just hear the word)
Fun with functors!
i have no clue wha tthat is
functional programming stuff
Basically a way of dealing with side effects in functional languages, by "expanding" objects
LINQ, Nullable types are very much inspired by them
and provide a more OOP-eye friendly implementation
I wouldn't use the terminology side effect with this
maybe i should look at that, never managed to figure out oop
Cross Cutting Concerns? Additional Functions?
type ParserResult<'a> =
| Success of 'a * list<char>
| Failure
type Parser<'a> = list<char> -> ParserResult<'a>
that's a monad.
As someone put it:
It is said that thereโs a curse with Monads.. When you finally understand it, youโll lose the ability to explain it to others. This curse is made worse by the fact that after you understand it, youโll begin to see it everywhere
๐
I think it's more about their goal
what made it "click" for me, is understanding referential transparency
okay, what i'm getting here is that i need to take a step back
theres definitely some stuff between my current level of programming and monads that i need to figure out first :D
the thing is, programming can happen on so many different levels, veritcally, horizontally so to speak
the space is deep man
It's really about being able to "think in a different pattern"
in 2017, you don't necessarily have to go that deep into space to achieve something
.. but you can!
i know, i've been around programming for a while, i just stayed mostly on the simple scripting level, stuff like simple python, vba, autohotkey..
enough to make my life easier, but not much more
that's where 90%+ settle - and that's totally OK
but if you get into functional programming, you'll get to see hamburgers
that could be seen as a ... added benefit ๐
omg, my humor is terrible today too
but i'm definitely at least very advanced excel user, because of the vba stuff i can do there :P
average excel user knows there is an =average formula, but is not sure if he ever used it
and you know there's so much more, like ARIMA and STDEV
totally
my biggest coding achievement is that i had an excel sheet that used riots rest api to download games history to make nice stats from it. cos i found league of legends stats tracking insufficient
GGG should definitely go get inspired by how Riot did their APIs
hahah
totally inspired by trading in lol ?
the poe trading experience - inspired by riot's API structure (sarcasm)
or sure, what you said @ebon oasis, equally true ๐
anyway, i should get back to being a productive member of society and do my job :D
I worked too much already this week. My brain's completely burnt out for the week
I'm just going to sit here and make terrible jokes rest of the week, I think
we got some hot deadlines atm..
@chrome topaz rip
hah what a rip-off
@chrome topaz May I ask, were you involved/informed about the development of the new trade site?
didn't they already clone it for the tencent version?
@polar island were you involved? ๐
I'm not a fan of it
I can see logic behind either
It is like a stunted form of .... neither existing ones
I like the one or other aspect about it
I like the "AFK" part
Disabling mods, without removing it is nice
That's great indeed
though price fixers will just adapt and use scripts and auto-reply now
at least the ones who actively play will get spammed to oblivion
doesn't have url though so your saved searches might get lost
the live search seems pretty instant
https://www.pathofexile.com/trade/search/Harbinger/znvzsk <- I thought this was the url
That's kind of spooky, so they didn't involve the community who build these tools in the process of theirs, kind of makes me hesistant to build stuff
Just personal thoughts
I know of some people involved
did you search for fire res in that query?
but until they say I can name them I can't say who
Well, until I know all I have is what I don't know ๐
their livesearch is super slow https://youtu.be/6OcXrRzBKAQ?t=15
@gritty olive Well, there's ofc. lways the risk that they'll adapt or even take ideas, 3rd party development was never a profitable hobby
ah
but it is kinda strange that poeapp wasn't asked, then again - background, privacy, strategy etc.
there may be a lot of aspects to this
[โ]VaalOrbThatShit [score hidden] 32 minutes ago
I assume this will scan forum posts as well (for new players who don't have premium tabs)?
[โ]Novynn Web Dev [score hidden] 15 minutes ago
Yup!
ok I didn't expect this
Never done it for profit, but, the idea that they would somewhat stealthily build their own without informing which could save us personal time :/
Kind of puts a bad taste in the mouth
our very own viperesque was part of testing this. he says I can tell you ๐
That's just initial thoughts, certainly there is a lot of stuff I don't know, that can change those thoughts but thats the initial thought
That said, few issues with the new trade site, never-ending scroll with a small amount of items kind of sucks, I like how poe.trade has a larger list at first
I'm pretty confident they don't want to show you the tiers
oh I know one neither site has I'd like to search by
I want to search by listed in the last N days
oh yeah the sort by on the official site is super fast
click stuf to sort by it
It looks like poe.trade but with a different ui
ha I ran into an error
yeah click on the the affixes to sort up/down
I have a complain: when you click search the creepy masked leather hooded which doctor nazi thing face is flashing
o.o
On a UW screen, it's right in the middle of the screen
for just a split second
that's a feature, not a bug
Is it just me or should they change the font used in the search to something similar to the logo or http://prntscr.com/h5imnt
I just find the font they used to be crap
yeah I don't mind the item names and type being in-game font
but I prefer sanserif for affixes
I think i'll stay with poeapp's โค
<!--[if lt IE 7]><script type="text/javascript" src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js"></script><![endif]-->
๐ค
Now, I'm somewhat scared they'll copy filterblast/filterblade, but I think the community demand is much lower here
besides, as long as it's just the site nad not a ingame UI, I think poe.trade/poeapp will still dominate
I'm somewhat scared that currency cop will be copied
Cause I can see it being integrated with trade
how did they go about consulting you for adding the filter on xbox?
they emailed me and asked my permission
That's fine but when you have limited time it's nice to know if you're just wasting your time or not
I allowed them, as long as they don't change the file content and will update it periodically as long as they want it to be part of the package
It was pretty straightforward, I guess I could've tried negotiating some payment in return, but shrugs
not my goal/motivation (+german tax system, no thanks)
kinda disgusting and unfair towards other filter makers
Yeah, I am worried less about money, than time because it's more important than money
True, then again humblebundle tried to do that with JWT tokens and logins but I got around that <_<
{"query":{"status":{"option":"online"},"name":"Atziri's Disfavour","type":"Vaal Axe","stats":[{"type":"and","filters":[]}]},"sort":{"price":"asc"}}
Then you make a secondary request for the IDs returned
https://www.pathofexile.com/api/trade/fetch/f6187ed9795954eab76bb8d99edd37dbbc405bbfdbfb26e5ab2852d004612ae7,93d849f8af0c2848568d72780bc284930d1c4c7a06d8f840671c40b3596ddce9,dd00892be7837cf95b10128b756b5a8405f9df196a3ef96df043999df3440215,6f2a1e89913e1fc7bb30935dba3dcd78b854a59f67a1b7e840cb4e2e2c6bcf01,0d004cadca8af069993bb8ef6f6a489b9ee476b1b6bd92fd8bf93f3ae44ffbc1,b8e87a5a42176c7d3723e49e7f10d41c114b3b1f60a0af2c808bcacc654bad20,f25e0ce0442226d332fde6ed4f87b73d9c21a7a846eddf0c607691dd67e75fca,34be4c6f337ed4054e838db4ccef006689f2387dc1003fc35f3fe90b2a53d772,5b562262f98778851986c23f7b35710bcb460f3dcffa2f8a1bfd0fd5828a5632,973279e857bc8337f07c03b442b996eec7df38a5fd0d2ee7b29d396dde8c0d04?query=awmnfx
the ?query= is the trade_search.response.body.id
Yeah, Vue is nice
^
If someone wanted they could just copy the JS + the X-Templates and have their own Trade Site
Just saying
Hey Nov
The API is pretty straight forward
can you ytell someone to add a link to /trade somewhere
That'd be pretty ironic
after this announcement is old news there won't be a reference anywhere on the main site to /trade
I need something that explains the UI
yeah we'll be doing that once we're certain it can handle the load
kk cool
Why are some values colored and others not
DPS is white on one, Purple on another
q?
What does it mean ๐ค
20q maybe
blue = quality enhanced
the white one is qualitied
I think
if you hover over it it should say (at 20% quantity)
Ah, it's a long hover not a short hover
Uses the alt / title hover attr
Takes like 2-3 seconds to show up
that's how it works in-game
Hm?
@hushed relic nope didn't know until today
the search is pretty fast i wonder what they use
i mean normal search haven't checked live search
on a second check it seems about the same
theres a video out already that its slower, but idk obv latency issues today
yeah i think it's because it's not using websockets, it does a request every 5 seconds
ah makes sense
@chrome topaz thanks, good to know
Erm... Excuse me if I am in the wrong place, but I notice something strange with one of the specter. It is the one Shavronne's vision or the futuristic machine. The game doesn't allow to create corps of it with desecration... Is it normal or it is a bug? Cause I really like these specters...
you could say there's DISCORD... amongst them...
is there like json or similar of all uniques, where both the name and the item type are seperated?
you can query the wiki to get such a list
kinda new at this, so far got to getting All the idenfied and priced items in a certain league out of the public tabs api
@idle imp currencycop is pretty good code to look at for reference
heh, will look at it
my problem so far has been debugging why my filtering of the json is wrong cause i cant search the object in postman manually
so i kinda have to guess at whats wrong sometimes
tbh
see if you can pull it out
in dev tools
and just examine the json object manually
ye thats how i figured out that the "ghost" uniques i was pulling out where actually unid uniques
oooh currency cop is also in JS
this should be useful
anyway, my progress for today https://i.imgur.com/YVcvIHr.png
will probably post more tommorow since i dont plan to work too hard on this, just a thing to throw brain power at in the free time
@potent galleon I'm building a web version of it
I probably annoyed novynn on saturday debugging username / password login <_<
I have a working API for U/P and Session
my boss told me they reverted my last commit cuz of a bug, but i just rebased to tip of master and it works fine
Backend is in lua
so i'm confused as f
depending on your implementation, ventor's
not technically a variant but the mods will change between increased and reduced
volkuurs guidance is a variant too
Some unique maps too I suppose. Poorjoys, hallowed ground
hmm i suppose
@gritty olive can you value 6sockets at 7 jewelers?
it would be more convenient than having to vendor them all then placing them in some tab
like, for pricing at a glance
@compact isle Are the league ids (trade api) for Turmoil and Mayhem available yet? They're not on the league api yet.
The the ajax request from refreshing one of the ladders would suggest 10 Day Turmoil (ORE001) for Turmoil.
is there a way to id what type of vinktars it is besides parsing the properties?
ye figured out a easy way since JS has the includes method on strings
also progress https://i.imgur.com/BBlJ446.png
@delicate ore it would be nice to have a vendor value huh
whether it's higher or lower
@idle imp building your own currency cop?
oh nice
but ill see how usable i can make it by the time the next league comes around
i also had this stupid idea of making a website that just displays a stream of underpriced items put up for sale with a counter of how much currency you couldve gained from flipping all of it
but im bad at front end so idk
i think reality is a bit more complicated
a) you have price fixers who don't intend to sell,
b) you have people who make a mistake when pricing an item
when it comes to the underpriced items, i suspect a decent share of these items will be due to one of the two aforementioned.
well people that misprice are technically the target for sniping anyway
and fixers shouldnt relist items in theory so shouldnt be a problem that comes up too often
people who are new to the game, and by mistake sell the item, yes.
people who are just typoing are probably more likely
I might be wrong...
we'll see, for now i just need to get this to actually get me the mispriced items
the league ids for the trade site are the same as the ladder ids, I'll see if I can find out what they are
I've added them to the dropdown menu there now
@compact isle was thinking about using the new Trade Currency API, to do some Machine Learning โข
machine learning is always interesting ๐
In the sense that any algorithm is machine learning?
oh the hype
"We do sentiment analysis"... So basically you brute force the text against a rainbow table of happy words? Oh okay got it
could be a decision tree based on context too
Ah yes, depth first search trees right
"We do image analysis" Ah okay, so basically you have a machine turk task where humans label images and you have a huge sample size to compare against
Google ReCaptcha anyone
^ lol'd
turkish people should be upset
@compact isle I'm surprised the new site was done with Vue and not jQuery like the forum code, what inspired you?
jQuery being terrible? ๐
having the ability to use something new instead of what we already had ๐
well, jQuery is a library for dom manipulation and such, meanwhile Vue is a full-fledged mvvm framework
wouldn't you need the router to call it a mvvm framework?
eh I suppose just having one view still counts
popular frameworks include it though
View View Route Model Model
lol
we looked at Vue, and decided we're going with React
I used React for CC to see whether it was something I'd rather do instead of Vue
I regret every decision in that
New CC is done in Vue
Not really, they are very similar, Vue is just ahead of the curve
thats a bold statement
React focuses on programmatic and lower level bullshit that doesn't need to be focused on
It's still figuring out basic integration of languages
Or leaves that to you
Vue instead gives you a rigid guideline on how to do it
I'm talking less about the data modelling layer since that is effectively pointless to argue about
They all model Windows 3.1 so who gives a shit about it those are solved problems
The issue is the Display Layer
Integrating Style + Template + Code
In an easily developable fashion
heh...
Which is where React fails miserably when it comes to components
Polymer is about to leap ahead though
you do whatever makes you happy
Native components directly in the browser without including any libraries is Polymers bet
Google is backing it so they could add support to chrome and push onto other browsers by effect of user outrage
mobx or redux doesn't tell you how to model your data
It tells you how to manage passing, fetching, reacting to data and data changes
it tells you how state management across your application is being done
So effectively it models your data as a byproduct within the app the "state"
once you create something more complex, redux makes more sense
then that's because you've not gotten to that threshold yet
which is fine, everything has its use
I don't see why you would say that since I haven't said anything about my use of it
but you're essentially telling me I am wrong, and telling me what's true
so I'll leave you to it, bud
I'm not saying you are wrong, I am saying, that doesn't matter because that's not what I am talking about the major differences lie
Representation of the View and it's relation to styling and code, are where the major differences in Vue and React are
Vue is ahead of that curve
Polymer is betting on native browser support and might jump ahead on that curve
That's the real area for innovation
Data management
State management
Already a solved problem
It's just which solution to apply to the innovative view application
Most bugs in an application has to do with state, so I don't agree with you
That's not the ground that Vue / React argue on though, if they did, Redux / Vuex would be built in
You use an external tool
Redux works with Vue, and React, that's not their primary concern and shouldn't be the reason for choosing the library
If you want to argue about Vuex (Redux) vs Redux, we can do that
hehe
front end :rooBooli:
Front-end has become a back-end
React focuses on programmatic and lower level bullshit that doesn't need to be focused on
I lost interest in arguing this, when you stated that. No offense, it's just you've made up your mind that React is shit, and won't even admit that you might have used it wrong
Nobody does HTML + CSS anymore except for mom & pop shops
I came to a conclusion by using them both @simple ravine, using React, you get a subset of what you get when you use Vue
man JS has so many options its stupid
i dont know PHP, im relativley new to this
What Python server do you use?
Don't get me started on PHP... I could write a 400 page book about why I hate PHP and its community
What Go http request library or web framework, they all are like this
also never did servers with python
tbh this parser is my first project working with an api and stuff
The older I get, the less I care about hype or new, and more about "What does X offer that Y doesn't?"
For the past 15 years, I've stuck with .NET, and I'm happy dandy
Then, "Where will X be in Y years?" / "What audience does X attract?"
well, drifted off to other languages like Python, Erlang etc too - but
For a framework "Can I hire someone who can do X quickly?"
I don't hire people on that sentiment, do you?
Depends on what I am hiring for, we hire for a multitude of reasons
I like hiring smart people above someone who can do X
exactly
It is always great to know whether those who know Y can do X easily however
people who are smart, can figure things out easily
Which in the case of React / Vue, the answer is "Yes"
if 'Framework X' is too complicated for a smart person to figure out, you're either in a very specialized niche, or that framework needs to be ditched
Depends on the type of "smart person" too
Builder, Maintainer, Hacker type vs competency
checks whether build script finished
vs? those are different competency
Yes, but that flips the table around in my opinion
You can have someone who is very competent but the problem space isn't in their domain
such as?
Someone who maintains software versus someone who architects it
I don't expect them both to understand the exact same things, which is why they work together to solve the issue
well, an architect should be able to maintain software
I completely agree, but I wouldn't want them doing that (all the time at least)
you have your junior devs, your senior devs, system designer and architect
sure, but that's just the level of competency
if you're hiring an architect that never built serious software, you've got the wrong dude
I don't know if I follow the paradigm of "Junior / Senior" yet, mostly because I've seen Juniors be good at things that the Senior isn't and vice versa
that's the true 'problem space' you've mentioned
I would apply that more to someone who is familiar to the existing stack
you can have a sernior backend developer who knows nothing about Vue.js
I get that, we were just talking about throwing someone into a new problem space
That's my point, it's a different problem space, so I don't fully expect them to understand it yet
it can mean anything
Ah, you're looking for a more granular verbage, I don't think I have one when it comes to an idea like this
ok, so we hired a guy, smart backend developer
Taking someone who is a "very competent developer" in one thing, and giving them something different and expecting great results right off the bat
and it turned out he's very good with transaction and accounting systems
It can happen, but that is only if they are already good at that domain, and language already
which we found interesting, as the transaction system the company we acquired had, was less than ideal
so we wanted to investigate in developing a new transaction system
I'd also just like to point out, #ceoproblems
#ctoproblems, but sure
True, less about vision more about application
At some point I want to try this one https://markojs.com/
to be clear, I didn't shit on Vue.js, I just merely said we chose React over Vue.js
Vue.js is good in it's usecases too
Not taken like that in the slightest, I am shitting on React if anything
Just from personal experience building out applications using it
Using that experience compared to Vue
We've spend 1+ year with React, made a huge amount of mistakes with the backend, went back to "v1" of our system
which used Knockout
and now we re-evaluated Vue.js, Knockout, React, Angular etc
to where they all are at right now
I'd love to make the mistake of using GraphQL, but the update mechanism prevents me from doing so
what update mechanism?
Updating documents
documents is a wide term nowadays :trollface:
So I am assuming you're using a document datastore, such as Mongo, DocDB, OrientDB
stored procedures, @gritty olive
can be useful in these situations, if my assumption is right
GraphQL and event sourcing should work well together
I went to go get food, one second
Yeah but the more I use those kinds of systems the more I end up hating myself in the long run, document stores that is
I was so mad at Entity Framework (ORM for .NET), so I just ripped it out and moved everything to DocumentDB (or.. Cosmos DB as they renamed it to)
and i'm not super happy
but it's pretty damn cool in some cases
Yeah, it makes development easy and has some swift features, but you lose a bunch of things from a relational database that save time in the long run or during periods of change
Honestly, just get the job done has become a large thing to me rather than ^ that
Good case in point is this
yea, it depends
you creating an internal application for 10 people, or something that'll be used by millions?
and if so, how intricate is the application
It All Depends โข
@gritty olive I'm thinking about ML too actually
thinking about tracking the trend of either currency or top 20 highly valued items of each category (like poe.ninja)
so every day, simply take the top 20 that you pull; and check them against a hash
if they're in there, then skip, otherwise add them to it
then separately, every day, iterate over all the keys in your map and add price and date
some simple linear regression or ARIMA model can do that for you
and then do data analysis on that later
well you need to get the data out first
there's 3 parts.
yeah im talking about ML vs simpler methods
it's super easy to start using an ML library, but getting it right is a different thing
- continues monitoring trends and adds interesting ones to the ones you're tracking
- updates the ones your monitoring daily
- figure out the ML part with the data
I am just concerned about your step 3
because your ML library won't tell you if you're doing it right/sane
well yeah, that'll take time to figure out
but tbh at that point you have all the data
so even if you just plot it yourself it'll be pretty interesting
You only find out the sanity when it is applied to some scenario or real-world test
hmm, two small things, nijiko
I like the idea of that @potent galleon especially since the server approach will effectively be reducing API requests since its centralized
can you add a refresh-all reports button, and can you add an ignore currency-type feature?
also, can you add logging?
Logging in what manner?
you can add it yourself dude, the code's right there
History of changes?
logging the report to a text file after every refresh
@potent galleon it's going to change a lot soon I wouldn't focus too much on it
huge refactor?
I already know I'm going to move it to being a web app
im working on ChaosHelper right now, else i would add it
Especially since I learned about -app=
-app=?
It's a chrome binary feature
You can run chrome with a flag that specifies a url and it launches it standalone as an application
the native apps that they're deprecating?
Luckily it's not a part of that
It's a part of chromium, haven't heard about chromium removing it
they usually don't remove stuff
they're very hesitant to remove stuff
even when they refactor or reimplement, they first reimplement, and then remove the redundant stuff a week or two later with another commit
I actually used to work on that codebase at my old job
open source chrome ftw
the whole "Let's make HTML apps into desktop apps" is an interesting thing to watch
yeah its sweet
electron, react native
what other frameworks are there?
i just know those two mainly
in the html-as-desktop-app? no idea
to me, it's just a testiment of something missing, so you bend shit into something that's probably not a good idea.
and people make interesting things with it
well in practice the results often look better than the native desktop frameworks imo
which native desktop frameworks are you referring to?
qt, gtk, etc
those are terrible indeed
qt at least has the qml/js engine thing going for it for when you want to use web code to make apps too
that's the whole thing I cringe at
I jsut don't like how you're forced to do single threaded desktop applications
that's insane.
(to me)
javascript
oh
uh, doesn't it have coroutines now?
and technically couldn't you do some hacks with an external library?
it's like saying "php can do asynchronous stuff, just fork(...)"
no offense, but that's so far from ideal
the worker threads that you can do nowadays, require you to serialize and deserialize when communicating between the "threads"
so essentially, it's pretty limited to what you can do with it
gpu.js and asm.js is pretty interesting though
still, moving things between gpu over the PCIe lane and back, is far from ideal in most cases
i knew about asm.js, but not gpu.js
people port desktop apps to web and mobile using asm.js and emscripten
people build mission critical applications in PHP using anti-patterns like ActiveRecord too
:trollface:
You can spawn processes in Node
yeah. i addressed that too
what I mean, is.. try attempt something nearly as efficient in javascript:
public class Foo
{
public event EventHandler<NewItemFoundArguments> NewItemFound;
private readonly IStashFetcher _stashFetcher;
private readonly IItemFilter _itemFilter;
public Foo(IStashFetcher stashFetcher, IItemFilter filter)
{
_stashFetcher = stashFetcher;
_itemFilter = filter;
}
public void Monitor(CancellationToken cancellationToken) =>
Task.Run(async () => { await MonitorImpl(cancellationToken); });
private async Task MonitorImpl(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
var newItems = await _stashFetcher.FetchNextAsync();
newItems
.AsParallel()
.Where(c => _itemFilter.Match(c))
.ToList()
.ForEach(c => NewItemFound?.Invoke(this, new NewItemFoundArguments(c)));
}
}
}
(just a non-thought-out crude example)
Depends on your problem space ๐
@compact isle did you see my skype msg?
yep
woah, people still use skype?
very few apps that is for sure, but skype is an ad ridden mess right now
secret skype messages 
i see no ads in my skype
how weird would it be if people paid for more ads
isn't ggg notorious for that?
eh
huh?
my skype (no ads):
Too many pixels for me
perfect for inter-organizational communication
I thought that's what Slack is for
that's intra-organizational communication
I hate new skype
sure enough they have shared channels now
I generally just use email...
it constantly stops sending messages and I have to restart it
sometimes randomly it doesn't receive messages if the window is minimized
also mobile skype is aweful
and the new design on mobile is just gross
u try it recently? it was terrible sometime ago, but became better and more stabile
it will say you have message unread from years ago
i made the switch a few week back
yeah I'm using it right now and had to restart it 5 minutes ago for it to send my message
it just displays "sending..." forever
oh yeah, mobile new is most likely made by some designer on too much LSD
I don't know anybody that actually likes skype on phones
what a perfect targeting
yeah 10/10 need fab eye makeup
I haven't used Skype since I played FFXIV
Skype for Business is its own thing, but I do have some premum thing now that I think of it
ใค โโ เผฝใค EMMITT TAKE OUR fab eye makeup เผผ ใค โโ เผฝใค
eye makeup... o_O
Skype for Business is also a nightmare for the phone industry
Skype is more for business rather than for gamers tho, indeed
they make analog to voip a shit show
so this audience will likely hate it more than other groups
the skype for windows 10 doesn't have ads
plenty of alternatives to skype for voip
edited to say analog to voip
the windows store version?
sure, but it depends on who you're talking with
yeah
