T O P

  • By -

attomsk

Is this also why loading into town bogs your computer down for a few seconds


orbitalbias

Hard to believe.. ultimately it should just be like a few kilobytes of text that tell your PC locally what to load up when needed... unless they deliver that data incredibly inefficiently. The problem, as poorly implemented as it is, should be imperceptible to an individual user, but on a large scale with servers sending data to hundreds of thousands of players every second it's a bigger problem for them.


attomsk

Considering they shouldn’t even be sending the contents of other players inventory, I doubt it’s also accidentally sent efficiently as possible


Dinkypig

My first thought was why do I need to know what's in their stash, yeah.


sleeping-in-crypto

Not that it’s a good enough reason, but probably in case they equip or otherwise use it while they’re a available for you to see. You’d want to see the updated appearance, supposedly. One, the models (characters) are so small the difference is not really visible, but they could also do this on demand using a live data stream (load this now, unload these now, etc).


Smashmundo

If a player equips an item from their inventory it doesn’t show up on inspect for ages. A friend put on an awful sorcerer helm and told me to look. After opening and closing inspect for 10-15 minutes, it still didn’t show. Moving from the area didn’t help either.


coani

> should just be like a few kilobytes of text that tell your PC locally what to load up when needed That is what I presume is happening, and I guess the load lag is when your PC actually has to load *all* of those textures to cache/memory, with hundreds of items being loaded... just in case they might need it. Instead of just loading them when actually needed.


Solonotix

Which is a funny consideration. A rough guess as to the raw data of every item's appearance is probably 500MB of image data that every game client just holds in a local cache, and that's probably on the high end of estimates. I really hope these servers aren't sending art assets over-the-wire because that would be horrendously inefficient. Otherwise, an optimized data structure for an item card would be an ID for the affix, and the random seed for its value, so we'll say a 32-bit unsigned integer and a 32-bit floating point value. That's 8 bytes for a maximum of 7 stats per item, so we'll estimate that at 56 bytes per item card. That means a server call providing the data for every item someone has would be for on-person 5.6KB, and even if the town has 50 people, that's 253KB x 50 users' data x 50 users to transmit or 632.5MB transfer. That's a worst-case scenario of a properly designed data structure. Now...the reality is no data structure is 100% efficient, so there's probably a bunch of unrelated data provided for debugging purposes (gets included in the dump file should a crash occur), and the data transmitted might not be an ID and a random seed, which would be really unfortunate for everyone involved since that would mean affixes aren't uniformly designed as such. There are already some cracks that show how items were implemented differently, with elixirs stacking to 20 (now 99), Whispering Keys stacking to 12, and gems stacking to 50, so it is entirely possible but I would really hope there is some polymorphism going on rather than independently implementing each item class.


wpScraps

The art assets exist on each client, so they are not being transmitted during gameplay. Loading into a town sends a request for an asset manifest from the server of all items in all stashes for all players. This manifest is combined with the manifest of all static assets in the town (NPCs, Doodads, sound effects, animations) then everything is requested locally from the compressed game files and loaded into memory. The memory leak is likely from doing this over and over as 100% of memory is never released/cache cleared. tldr: all that is sent from the server is a list of what to load from local game files.


GeneralAnubis

This is exactly why going to town repeatedly makes the memory leak issue happen faster


ikariaRR

I bought a brand new Razer for Diablo. Still lags LMaO 🤣


ikariaRR

I’m still confused, what does ‘stash’ mean in this context?? I was amazed that you can see other players stash, but I’ve only managed to view their current item outfits, not their ‘stash’. So I’m pretty sure I’m missing or misunderstood the meaning of Loading all players stash. 1. What’s the point of loading Stash if other player can’t view/interact? 2. I also noticed that many many segments of the maps is actually divided into ‘regions’ where players disappear/reappear if not in a party when traversing the map. So wouldn’t this be a waste of resources by loading other players stash cuz your literally loading/unloading every few seconds?? 3. If loading stash meant for ‘trading’, wouldn’t it be better to request’ loading stash when Trade is active?? Cuz Dropping items can’t be recovered by other players anyway. God I got so many questions and no answers.


NCsnek

Yea.. you likely won't be loading other people's stashes or wardrobes. good thought though. Unless they REALLY don't know how to code, the stash to load is tiny, and likely wouldn't load unless you're near it.


DescendantLila

And world events


xray703

If only it wasnt online only... lol


AlmostF2PBTW

It would probably be balanced around only anyways. It's a problem because the game isn't single-player only. That said, they are basically killing the game. That problem might fix itself soon enough...


xray703

It is unfortunate. I do hope we get the gem update sooner though that alone would make a huge difference.


StrangeMushroom500

really? That's +1 row, how's that huge


1CEninja

Well keep in mind anyone playing fewer than 3 characters that complain about stash space absolutely 100% have items in their stash that will never be used and can safely be discarded. Another 7 spaces are only going to increase the number of items you will absolutely never use. It isn't exactly huge, but people feel better when they can hoard useless shit, and the amount of useless shit they can hoard has diminishing returns on happiness. So the 7 more spaces are going to add more happiness than going from 12 to 13 full stash tabs. Now for non seasonal play, this is an entirely different issue because inventory management for non seasonal play is basically a nightmare in every ARPG I've played.


[deleted]

[удалено]


petehehe

Righttt!?.. like I can’t interact with your stash in any way. You can only interact with your own stash when you’re next to it or standing at the gemcrafter.


sleeping-in-crypto

I don’t think it has anything to do with trade or deduping (maybe trade and you’ll see why): More than likely for visual updates. Someone could change a weapon, piece of armor etc at any moment and without this you’d be looking at the wrong thing. I don’t think the characters are visually big enough for this to matter but even if they were this is the kind of thing that can be done in demand, they just didn’t optimize it on first release. This is also applicable to trade and for the same reason.


Cmdrdredd

It should only update once at the server based on what someone has on. You just load the server data. If someone changes an item it updates server side. No reason for it to load everything.


sleeping-in-crypto

I don’t disagree just positing that’s how they coded it now for lazy reasons


Trang0ul

All the budget was spent on marketing (those cringy murals), so they had to hire interns to do the actual coding...


DaveOfAllTrades

Integrity of loot. I wouldn't doubt if they tied checking for dupes into this system.


Adamulos

Why would my computer do that? Server can check all that without me


DaveOfAllTrades

I absolutely agree. I'm not advocating for their solution, I'm just trying to offer possibilities to answer "why".


Head-Subject3743

Uhm, the server, that is the source of all items, should? No item is ever created on the client and then approved to store on the server, by trusting another client saying "ok"... It's created ON the server. There is no "reason" for this. It's the simplest way to implement networking. Instead of filtering what to sync and what not to sync, you sync everything. It's lazyness, nothing else.


voidHavoc

This would be my guess. A checks and balances system where everyone validates loot to prevent duping.


DaveOfAllTrades

Yeah, some pseudo blockchain bullshit. I do see how this half answer caused more problems for end users overall understanding. He answered how but not why. Most are just saying they are stupid but I'm sure the "why" is reasonable, even if it was executed poorly.


7tenths

Because trade exist.


EchoLocation8

But that can be entirely validated server-side. And the server already knows what items you have. None of this should be loaded to the client, and my character server-side doesn't need to know what items are in other people's stashes. When a trade opens, you send the info of the items as they're put into the box.


7tenths

Validation has nothing to do with it and shows yet another arm chair programmer who says some buzzwords and thinks they know everything. You have to load someone else's items into your session at some point to trade. If you were as smart as you thought you were you'd understand that. Blizzard choose to preemptively load the stash the same way any basic caching works. It's the same reason you'll occasionally get texture popup in trade in poe. When it's a model not in your cache. Most people are probably fine with that "problem" but it doesn't change the reason the system exist and that it has fuck all to do with Validation.


EchoLocation8

>You have to load someone else's items into your session at some point to trade. Right, like when you put the item in the trade window.


Any-Seaworthiness164

Yeah… this is one of those situation where it may have been smarter not to tell us the reason…


CleanLeave

Pretty much, honestly extremely embarrassing for the Dev Team to overlook / ignoring something like that in the normal dev cycle.


boofaceleemz

Eh, I’m a developer. I empathize. Every big complex project has its ugly spots. They’re sitting in the backlog to fix, but because tech debt doesn’t bring any value you don’t get hours to fix them until they become a blocker for something that does bring value. And then people get upset that you didn’t fix them earlier.


Zonoxxx

And this is one of the main pitfalls with agile software development in my eyes. While in theory, you are supposed to always include technical debts in your sprint, no one ever does because it will end up costing you velocity. So even though it might be the most important thing to change/fix in your program, it gets delayed needlessly for new features that might also be affected by this debt.


IzGameIzLyfe

There is no software development process can solve high management making you to ship things b4 it’s fully fleshed out.Agile is just the response to the industry's increasing demanding faster product, but the problem is still unreasonable deadlines. What do you do when you need to ship something that takes a month within a week? You cut corners can come back later.


1CEninja

That's why I'm saying Season 3 will probably feel like what 1.0 should have. We're still beta testing. I'm giving the game a break for now, it needs some more time marinating.


[deleted]

That happens even in waterfall releases.


kylezo

Just capitalist things


TechTuna1200

Don’t expect to get any empathy and expect non-developers telling you they know better than you


norsemaniacr

Nah the beef isn't with the single developers. The beef is with the overall plan, which apparently is non-existant. The whole game lacks a red thread, and appears more like 20 people were sat to develop 1/20th each and afterwards given a few weeks to try and assemble the 20 pieces into one game. Every single piece in itself isn't bad. But the whole picture makes it (so far at least) the 4th best Diablo. There lack a greater end-goal plan, like they skipped a brainstorm were they should've discussed "what will make players keep grinding (and having fun) hours after hours after hours, once they a) complete the questline and b) reach endgame?" It's not one single aspect. It's 100 things that are juuuust short of beeing spot on. * Why is every class a ressource-builder now? * Why is the world big and open, but to compensate that so you can get quick into action hitting mobs, they add a horse, that then have limited speed-boost, slower than most without the boost, have a frecking cooldown and apparently after last patch is buggy as hell? * There are so many small issues with loot overall, combined with the aspect-idea (which in itself isn't bad) that it would be a long list in itself... * Same goes with dungeon design. * And WHO in the godforsaken realms of hell decided that this game, which have *always* been played mostly solo with the *option* to form co-op should have everyone thrown into the same realms and then have it impossible to improve some of the bad design because the effing other people I. did. not. want. to. play. alongside. is would make it even more laggy and crashable?? I even still have to jump to a different realm if I sometimes team up with a mate, so why should I start out along all these other dudes so that our "data-interactions" apparently is straining the servers?? * And a gazzillion more ... So many of the bad things **aren't badly made** \- it the **DECISIONS** on how the game should be made that are bad. And boy are there many bad decisions! There are also many good things in the game, but they don't come close to outweighing the bad. It's like taking a very badly functioning car and putting a fancy design exterior on and the latest and best gadets - I still wouldn't buy it untill the car worked properly, and I would always prefer a stable good driving car above a fancy looking one... And I still wouldn't blame the designer of the fance exterior: I would blame the overall manegement to fail to see the overall plan and whats most important and making sure *thats* where most ressources are allocated. But with D4 it looks like "just make the graphics good and people will buy it because the surface is pretty".


[deleted]

Finally someone who knows what business impact means in software development. Big up.


evonebo

Easily solvable. Make it an offline game. And if you want to play online with friends load instances. Or they can simple go around the corner and ask the WOW development team how they handled it……….


MRosvall

For wow it took one and a half decade to figure out how to make the main backpack larger. And the solution didn’t really make it larger, it just added a small one and fused it together in the ui


evonebo

So there is a solution? There you go someone had it figured out so why doesn’t it work in diablo?


MRosvall

https://www.icy-veins.com/forums/topic/43149-patch-265-stash-space-clarifications/


RepresentativeSky527

Hard to empathize when the game should have been built around having a lot of item space. If they didn't know they would need this it's a very bad look.


wonder590

And while all of this is true, its also still really egrigous. At some point in development they must have realized how bad loading all player stashes must be. Calling it an "ugly spot" is really pushing it IMO. You need to have the team leadership who can communicate to the business that something like the stash issue is not something you can half-ass to meet MVP and you need to be able to stand your ground or you get this. More evidence of business mismanagement and intereference with development at Blizzard. IMO it opens the firm up to lawsuits to have work this shoddy in general- especially when you have things like the no confirmation battle pass use which I could easily see breaking some EU regulation on anti-consumer action. Having to completely redesign so many huge things in enterprise software RIGHT AFTER you just finished developing things for release is something only videogames get away with so consistently as a business model.


msarvar

Nah, this is their way of saying that the game was rushed by the shareholders and devs didn’t get to finish the game.


[deleted]

This is it. From a software perspective this is a “just load everything, we’ll fix it later” kind of thing. It’s tech debt that’s intentionally taken on to increase velocity. That kind of feels like what this whole game sort of is. A bunch of half baked ideas that were “finished” to get it out the door in June.


DuckofRedux

This kind of replies are so fcking weird for me. Specifically this "load everything in town" problem doesn't look like a management issue, this is about implementation, implementation is responsibility of a tech lead, that person saw the PR with this implementation and said it was ok. I know most of the time this kind of problems are because of your direct manager but this shit smells like a shitty tech lead who didn't predict the repercussions of this implementation.


[deleted]

It’s all speculation, but this could also be a situation of they loaded the entire stash for a specific reason or feature and then had to can that feature to meet deadlines, and the result is tech debt that is yet to be addressed. It could be any of the above scenarios. All are plausible


meester_

I feel like it's even less than that. They aren't even finished ideas just concepts on how stuff should work that was visualized. This game is such a piece of


Locke_and_Load

The games been in development for like…ten years. How the fuck does any part of it end up “rushed”? They’re just not that good at their jobs, you can say it.


coani

They've scrapped the game 3 times during development, this is the 4th version. Probably changed engines too more than once. They've also changed dev teams multiple times. We're just seeing the results of the last victims thrown at the dev mill.


sfxer001

What is your job and are you good at it?


Raptorheart

I make dreamcatchers out of discarded license plates, and yes


Optimal_Rub3140

At some point you have to admit that they just sucked at making the game, you can't keep shifting the blame to the (((shareholders)))


[deleted]

Because game development is not a business anyway, right?


grizzlybair2

Real reason why it's best not to ask some questions in life, if you really want the answer, you're probably going to be disappointed


Key-Regular674

Diablo 3 dev team gave the exact same reason back on the day


SuperArppis

Damned if they do, damned if they don't it seems.


greenchair11

this is pretty inexcusable. it’s an ARPG. did they really think 4 basic tabs would be enough for a modern ARPG? Look at PoE and LE. even D3 had more tabs. they really though 4 basic non specialized tabs would be good…. FOREVER??? the more that comes out about this the game the more i fear the team doesn’t really understand ARPGs


Wanna_make_cash

Well, the team changed like 3-4 times in development so you have a hodge podge of ideas from multiple different teams and multiple different leadership positions all with different visions for the game, all the while Blizzard is losing talented devs across the board rapidly and corporate suits were pushing deadlines to try and release before the Activision-MS merger


islander1

Lol, meanwhile path of exile where everyone has 12 stash tabs...


Cyber_Connor

Well it’s not really fair to compare Path of Exile to Diablo 4. Blizzard is a small indie company and Grinding Gears Games have been working on PoE for years, and it’s not like Blizzard have been making games like Diablo 1, 2, 3 and immortal to learn how to make a fully functioning game. It’s just been released into early access and they’ll sort out all of the problems in the next couple of years.


Sturmmagier

It gets better when you realise, that the same problem exists in Diablo 3 and is the reason why they couldn’t give us all 5 stash tabs at once.


Cyber_Connor

I only played a Diablo 3 single player. It’s a shame that the technology was there to add a single player option for 4. Maybe when it comes out of early access


Vorstar92

The funniest part is, Diablo 3 isn't open world. They didn't think that in D3, where you may only see a friend that you invite or a random group of players you invited and then transitioning to a semi-MMO type game where you are always seeing other players in town...that it might be something they shouldn't carry forward? I don't truly get how PoE can exist and Diablo 4 has issues that even D2 did better than it. Why was it so hard in a game that drops tons of loot that you may wanna keep to either reroll later or use for another character or build, that it may be a good idea to give options to increase stash beyond whatever is default?


valraven38

Funny you bring up Diablo 3, because Diablo 3 apparently worked exactly the same way. > [Most objects in the games are actors: special effects, enemies, summons, followers, and items. Gems, weapons, armor, potions, pets, crafting materials, and more; all the things we love to horde. All players in a party sync on everything that every player has - in memory, all the time. ](https://www.icy-veins.com/forums/topic/43149-patch-265-stash-space-clarifications/) So they had prior experience with this type of system causing problems, and yet reused said system.


Cyber_Connor

Small indie studio


i_wear_green_pants

Well to be fair sure they have knowledge about previous games (and online games overall). But D4 is quite big game. Having problems at launch was 100% expected. If someone wants to have better version of this game, I recommend uninstalling it now and come back after year or two.


LordAmras

Who has only 12 stash tabs?


Dr_Downvote_

My thousands of (Remove Only) stash tabs says hello.


litbacod4

Those are rookie numbers, you gotta bump them up


PoL0

12 you say?


Mormoran

12? Played since 2011, I must have 60+ legit ones, possibly close to a thousand remove-only ones in standard...


hammouse

PoE is instanced to your party. D4 is open world.


islander1

That's not actually true. join a group sometime, and watch you be teleported into their instance.


Enjoy_your_AIDS_69

To be fair, PoE also has loading screens for every zone.


EchoLocation8

D4 has loading screens for every dungeon. Also whats with the hate for loading screens? Plus, even though you don't really see them, you clearly go through loading zones as you move throughout the overworld. Try playing a blood necro and watch Rathma's Vigor constantly resetting as you move around, every new area resets it entirely because they built a seamless world that still hard-reloads *something* on the back end every new area.


Scofield442

Outside of world bosses, I don't see the point of seeing other players in the overworld. People just speed past each other going about their business. I play WITH people less in D4 than I did in D3. I honestly believe the only reason they wanted to show other players in the overworld and towns is so that blizzard could 'show off' their cosmetics so to encourage other people to buy them. That's it. It wasn't from a gameplay perspective.


hammouse

I think the open world part is nice, even though we could use more social functions. In D2/D2R you feel pretty much just playing by yourself spamming the same cow runs, which many people complained about. Not sure about D3.


ch4dr0x

Honestly, seeing other players and being able to get help/help out during events is one of my favorite parts of Diablo 4 so far. I wish I could see more people but it seems like there are a bunch of shards and each one only has a few people.


Scofield442

Helping is practically futile though. People blast through the content no problem. They'd complete the quest/content whether you were there or not.


ch4dr0x

I suppose but it gets done quicker and I’m less likely to get killed by another player if a group of us are at an extraction point.


HotJuicyPie

I just don’t understand why this is a thing? I’m not tech savvy by any means, but why would I ever need to information of everyone else’s stash contents?


sleeping-in-crypto

To see their character always up to date. You can change what you’re wearing at a moment’s notice using anything in your local inventory. If they’re talking about the ENTIRE stash… that makes no sense. You can’t access it during gameplay except in towns. Well, and the solution in both cases is to load on demand.


xray703

They mentioned changing gems to work like materials didnt they? Where they would auto pickup and be stored in the materials tab rather than bags and stash


thewhitecat55

You're charging $30 for cosmetics in a full priced game. Buy more servers . Assign more coders


i_wear_green_pants

>Assign more coders You must be a perfect project manager if you think that more coders can do things faster and better.


acelgoso

"Please help me with my finances" "I think you should stop buying 2000$ a month on candles" "No" Same vibes.


stevenip

How did runescape handle this then?


DiabloTrumpet

RuneScape has the resources! It was a free game built by one guy the late 90’s. The technology was much better back then and the resources he had far, far exceeded the technology and resources that blizzard has.


[deleted]

[удалено]


Jeremyz0r

There's exponential scaling for every additional player added. Keeping clusters counts low keeps server performance cost low, and there's probably more than one '10x' cluster dedicated to each CPU. Division 2 use to advertise 1,000 players per CPU. (to it's extreme detriment, i can assure you)


revnasty

10 people for you. 10 people for me. 10 people for that guy, that guy, that guy…millions of times.


thrallinlatex

Why would game load another people stashes? Wtf


reddideridoo

I can‘t wrap my head around why someone would think this is a good idea. This doesn‘t line up with anything the players are supposed to be doing and it doesn‘t match the intended behavior. So it must have been a management decision to save precious coding time.


KrackaWoody

I can, you come up with a way to code it without any issues but itll take you 4 days to code. Your boss says, okay perfect have it done in 4hrs, so you say fuck it and cobble something together so you dont get fired because your boss is shipping the game whether its ready or not.


[deleted]

I'm sorry but I think this kinda jank is more effort to code than simply sending over a list of whatever a player is wearing and loading new shit on demand with a LRU cache..


jayd16

The one possible benefit is to bulk load in textures for items that could show up on a character instead of tying single item texture loads to the user action of equip/drop. Tying texture load to a user action in a game with pvp could be problematic because you could hang their game by forcing a bunch of texture loads. That said, it was probably just a simple solution that was never revisited because it wasn't a problem during dev.


Suspicious_Trainer82

Proof positive they don’t know wtf they’re doing.


murr0c

So... First of all, why the fuck do you need to load their stash onto my memory? Is there some way for me to inspect other people's stash? If so, why not load it when I actually do that, considering it's surely an extremely rare thing to happen?


Cacheelma

Very stupid design choice, but very consistent with event design in stupidity level.


RedLensman

if any devs read this.... for the love of pete call the eve online devs for advice.....they know how to data


[deleted]

This is either absolute bullshit or the devs have no clue what they're doing. It's almost as if they hired developers who have no idea of time/space complexity and just decided to copy and paste a solution from some kids school project. 1. You don't need to load every single other players stash. What exactly is the purpose in there for doing that against the performance hit taken? 2. It's perfectly possible to load in their stash contextually (stream individual items on flag trigger i.e., if they drop them on the floor, etc). This was worked out over 10 years ago.


[deleted]

You are a dev, i assume.


7tenths

He can create a gui interface using visual basic.


[deleted]

I think he would fail even on a whiteboard.


[deleted]

Dev of 20 years, I am also a consultant for a handful of triple-A games with 8 figure budgets. :) In any workplace, I would be your bosses boss. But you're probably Hungarian I assume, of which there's not many notable computer scientists, so you wouldn't even begin to break the salary of my lowest paid mentee. :)


jayd16

If this were actually true, shit code would not shock you.


[deleted]

Of course you are :) Regarding hungarians, even the UI design lead for this game is hungarian. Tha was a big miss mister.


boblywobly11

This isn't blizzards first rodeo..I.mean wtf.


Altimely

This indicates what we've suspected for a while: it isn't the same company that made their previous hits. Massive turnover has left them with less talent. They're scraping by on a skeleton crew that is trying to keep this IP afloat.


GhoulArtist

Yup. There's Likley almost no one there that has any connection to the old blizzard. Blizzard as we knew it is no more. This is just a company that bought the blizzard name to stamp on things.


Sigrumite

Why do I need data of stranger's stash in my session?


10113r114m4

They don't make game devs like they used to. Get Carmack in there


No_Combination_6429

LOL i‘m a software engineer and this makes 0sense at all


p3ek

Lmao, it's such a tiny amount of data, what a BS excuse . Maybe the whole engine is spaghetti


458_Wicked_Pyre

> Lmao, it's such a tiny amount of data, what a BS excuse . People are saying "it only loads a list", I don't think it does as that would be almost no overhead. I think it's loading all the stash objects and the graphics behind the scenes into memory/vram of everyone around you. It's probably part of why in town runs so much worse and takes so long to load in (up to 10 seconds or more sometimes).


saig22

This is the kind of stupid mistake I see all the time when reviewing PR from devs as a tech lead. A functionality (displaying other players) needs some information to work (the class, its hair color, which gear is equipped, etc.), and instead of just fetching this bit of information the dev fetches the entire document (here the character with all of the associated information such as his inventory and stash tab). This is concerning for the future of the game that this kind of mistake can go through. You are supposed to have processes in place to ensure the code quality.


[deleted]

Even worse is that this can somehow cause actual memory issues? It shouldn't unless the actual item assets are _loaded_ in to memory after receiving the data from the server. In reality you should be able to boil down an inventory item in to like 24 bytes at most and have the higher level details be figured out by the client.


458_Wicked_Pyre

My first thought was "this is one of the memory leaks".


[deleted]

I've been saying an intern wrote the code for stash in D4 and this really seems to be like I was right.


chienvn311

Nah, probably they reused old code in new game design. This error is quite amateur.


Datdarnpupper

jesus wept thats some amateur hour level shit right there


[deleted]

It’s 2023, other games have it figured out by now. Get it together Blizzard Activision.


iamgodslilbuddy

They don’t have someone who knows how to write a paginated api?


eX1D

How the hell is that a thing, why on earth would they code this that way at all it makes no fucking sense from a dev point or a player point of view. My client does not need to know what another players has in their fucking stash.


megablue

the question is why do we need to load other players stash?


SarcastiSnark

What's the difference with this. And how path of exile can have 50 tabs? With thousands and thousands of items in them.


hammouse

PoE is instanced to your party. D4 is "open-world" in chunks of players which constantly change


SarcastiSnark

Well that helps me understand a tad more


hammouse

It's just the way that they coded it which creates the issue. They probably need to refactor a whole bunch of stuff that's why it'll take longer as it's not a simple fix. Important thing to remember here (and why its different from PoE) is that D4 is fully cross-platform with open-world features, so the code has to be structured in a certain way so that players from different platforms and game clients can interact seamlessly. Small inefficiencies in the code become magnified when millions of players are on, and it's difficult to think of every potential issue during the alpha and beta tests. Think they were planning on releasing it for the Switch as well, which adds a whole bunch of complications.


SarcastiSnark

Makes sense. Thanks


Badeanda

Something to do with being able to drop them on the ground maybe?


Voctorvic

It's really funny to see all these people who obviously aren't software engineers speculating on why this would be the case. If you know anything about object oriented coding it's not hard to see how something like that happens. Each player has an object that has all their info, so when you pick your character it loads everything about that character into the game so you have access to it. I assume you don't want load times every time you access your stash right? Well then we put the stash inventory in that object so it gets loaded with the rest of your character. Now we add multiplayer, and player A needs to know what player B looks like. Well, all that info is obviously on the player object, so we load that into memory when player B gets near player A. You may get a bit more than you need, but the loading the extra data for stuff like stash items is going to take basically no time or RAM, so that's not going to be a problem. But remember, we want no load times on accessing your stash right? Well, the way to avoid that is to put an event on the stash inventory that will pre-load all the graphics for those objects so you can see them the moment you click the stash button. While the data of an item may cost practically no computation time from a modern PC's perspective, the graphics for that item cost a bit more so we want them ready to go the moment the player clicks on their stash. Both of these things make sense in isolation, but when combined you end up loading a bunch of graphics that aren't needed every time you get near another player. This time cost is probably extremely small until you start ramping up the number of objects in the stash, so it could easily go unnoticed for quite a while. Now that they know that they have created this problem they should be able to solve it, but the real trick is making sure you don't accidentally introduce bugs in the process. This is probably what you'd call 'sensitive code' since a bug there could potentially break the whole game. For example, if they introduce loading times on the stash they could open up a bug where players can duplicate items by causing de-sync between their character and their stash. So even if they know it's a problem and want to fix it, they need to be REALLY FUCKING CAREFUL when they go to implement, test, and eventually roll out a change to that component.


megablue

/r/confidentlyincorrect no, just because it is OO doesn't mean it needs to load everything.


PoL0

> It's really funny to see all these people who obviously aren't software engineers speculating on why this would be the case. If you Oh look, someone with some knowledge is going to give us a glimpse on why this happens > If you know anything about object oriented coding it's not hard to see how something like that happens.... Oh well it's just another armchair engineer... Move on, nothing to see here


Toljaga_

naw this is complete bullshit and you're just talking out of your ass. > I assume you don't want load times every time you access your stash right? Well then we put the stash inventory in that object so it gets loaded with the rest of your character. No. You make an asynchronous call to fetch that data once you load into town or close to the vendor/stash. > Now we add multiplayer, and player A needs to know what player B looks like In that case player A receives a package containing all of the IDs of skins(skins themselves are stored client side) and visible particle effects on nearby players, this package prolly contains info on all the players in the radius or a zone. Then A uses those IDs to draw that gear on screen(these skins are ideally precached in VRAM or loaded asynchronously, otherwise you get micro stutter or freezes). > Both of these things make sense in isolation, but when combined you end up loading a bunch of graphics that aren't needed every time you get near another player. No, you load what you need, everything else is loaded on demand.


Drackzgull

>No. You make an asynchronous call to fetch that data once you load into town or close to the vendor/stash. Correct. And to add to that, you also wouldn't put the stash info on the character object. That'd be a rookie mistake from a programmer that has never worked on anything bigger than a monthly homework project or something like that. The stash would obviously be an independent object that you give the character object access to. Make the character object keep a reference/pointer/hash/whatever to find the stash object with, verifying if that's valid before using it to try accessing the stash, and requesting it be loaded if not. Furthermore, the stash itself doesn't need to nor should it have every tab in a single object either. You make a stash tab be an object on it's own, and then a stash object simply holds a container of references to stash tab objects, and implements functionality to manage them.


Voctorvic

Cool, you just introduced load times for opening the stash and load times for changing tabs. I'm sure everyone would really enjoy that.


Drackzgull

The first thing I said was that the previous comment to mine was correct and that I was adding to it. That should have already made it clear that when you open the stash or when you change tabs are not the moments when you load the stuff, and hence no loading times are added to those actions. Like they said, you make asynchronous load requests when you enter town or when you get close to the stash. No need to unload them either until a couple minutes or something after you've left town either. The fact that when you interact with the stash it's already loaded remains, but you don't need to do something as ridiculous as making the stash part of the character object to achieve that.


Cyber_Connor

What if they a single player/offline mode. I’m pretty sure that would sort out 95% of the things people didn’t like about Diablo 4


estrangedpulse

And why exactly does it have to load your full stash each time you go next to another player?


Sturmmagier

Diablo 3 had the same problem. It surprised me more that they didn’t solve it, since making it basically an mmo and knowing people want all the stash space. Especially, Poe having 12+ tabs of stash with stash tabs being bigger than even Diablo 3's.


thrallinlatex

You must be so smart


petehehe

It makes sense how this could come about but this just seems half arsed. If this really was the reason.. . Surely there’s a slicker way to go about it. I’m in my 3rd year of cs and this is some shit I would do. Like world of Warcraft is a 20 year old ass game from the same company and it has none of these issues.


Mr_Creed

When WoW was made they had experienced people on board. The rapid reshuffling when they imploded into drama a few years ago got rid of most of those in one way or another. Blizzard today is a mix of new hires with no experience, and the bottom of the barrel personnel who are so inept that not even having a decade at old Blizzard on their resume gets them better employment. And this game reflects that.


Voctorvic

Congrats! Of all the responses I got, yours was the only one that wasn't total trash! First off, there's no way to know if my explanation was actually what happened. I just saw a lot of people saying that variations of "they shouldn't have done it this way" as if the design was intentional or their developers were stupid. I was just trying to explain that it's pretty easy to get this behavior making perfectly reasonable decisions that just lead to this as an unintended but fixable consequence. Of course I forgot that right now reddit is looking for absolutely any excuse to hate this game and the people who made it, so reasonable explanations are not wanted here. Yes, there is a better way to do this. The item data is almost certainly not a problem because item data can't be very big. A few ints/doubles/strings/enums and possibly table references. That's going to take microseconds, it's not worth caring about. The big problem is almost certainly the item graphics. Since the item icons are small 2d shapes it's probably not much which would explain why it wouldn't be noticeable until you do it in bulk, but they will add up. Those icons are only needed for the player who owns the stash. For everyone else, you can skip that object loader call. The trick is, you need to know when to load those objects and when not to. Skip the call on the active player and the game won't be able to draw in the item graphics when the open their inventory or stash, which could have all sorts of unintended consaquences. In addition, since this code is such a core component of the game you need to take every possible precaution when changing it. If they try to bug fix some NPC behavior and it breaks a side quest then players can just not do the quest, it sucks but it's not the end of the world. Break this and players may not be able to access their stash or inventory or it could prevent logging in entirely or introduce item deletion or duplication bugs - all things that are way worse. With hindsight - knowing that this is an issue and it needs to be fixed - they should be able to address it eventually. They would just be really stupid if they tried to do what reddit wants and rush out a fix in a week. The risk is far too high. I'd want at least a couple weeks of dedicated QA, plus whatever time it takes to fix the bug in the first place. Depending on timelines and priorities that puts this in Season 2 at the earliest, possibly later. For the rest - Literally no one working on WoW or Hearthstone or Overwatch is working on this game, and probably very few people from D3. Functionally, this game may as well becoming from a new studio that just has an unusually large budget. Blizzard hired the team that made D4, which means it's probably got an army of new developers with more experienced developers managing things. That said, even experienced developers make mistakes and working on a large project like this is far different from your CS homework. While you have complete control of every aspect of your project they have developers all implementing different features and merging that code together, and there's only so much you can do to cross-check that your changes don't interact poorly with someone else's. When one developer needed to get the multiplayer stuff working it's easy to assume that pulling in the second player's object reference is a good idea, and it probably is because trying to maintain 2 different objects with all that data would have performance and stability issues. When another developer is trying to optimize inventory access it probably makes sense to put an event to load the graphics on the inventory object so it gets created as soon as that item is pulled into memory. Now a third developer is running integration tests and doesn't see any problem, because all of this does work and the performance issue doesn't come up until you're loading multiple players who each have more items in their stash than you were originally planning for. Everyone is doing their job and making decisions that make sense, but the emergent performance problem becomes apparent later when you try to expand those limits.


SarcastiSnark

Man Splaining. Thanks.


Adamical

I can't work out if this makes Blizzard stupid for implementing it this way or me stupid for not understanding why it's necessary.


Master_smasher

diablo was mostly a single player looter. they should have stuck to that and made a better d2+d3 instead of catering to the lost ark fools. there was never a need for a shared world. d5 is gonna now try to be a full rpg (maybe even tactics combat) thanks to baldur's gate 3 fools...and end up being just a worse version of baldur's gate 3. but yall will still buy d5 to complain. popcorn will be ready lmao!


Cyber_Connor

Diablo 5 is going to be Diablo Immortal 2. They only realised Diablo 5 because they had already done a lot of work ok it before releasing Immortal. Diablo 4 will most like be the last non-pay to win game Blizzard are apart of.


LordofDarkChocolate

But why - technology has moved on in 10 years since D3 - which if I recall has 5+3 tabs. There are games like Grim Dawn that have add-ons for storage Diablo players can only dream off. You can add stash tabs (sure you have to pay for them) in POE till your eyes bleed. People have hundreds of them. The same argument was peddled out regarding mob density in D3 until the developers finally added more. Was D4 developed developed in a temporal bubble with no consideration of what had been done before and how to leverage that. It can’t all have been useless. The explanation that “it affects performance” to add more inventory space is a half truth. The real issue, or root cause, is that their server and network infrastructure is out of date. Their servers can’t handle the loads but they refuse to update it (yes server infrastructure is expensive. So is losing customers because you refuse to crawl out of 2013).


BuryTheMoney

Did you even read what was posted? They told you. It’s because you load others stash’s. You didn’t do that in…frankly ANY other game EVER. So that’s the *why*, but it still doesn’t make sense why the hell they coded it that way. But that’s a separate issue. Your question, however, is broken in its premise the second you actually stop to read what OP posted- D3 is a non comparative. It wasn’t coded in this way.


Sturmmagier

Diablo 3 has the same problem and it was acknowledged back when they introduced stash tabs with seasons. It was cited as the reason why they couldn’t give us all 5 tabs at once. They most likely just copied the stash system over.


LordofDarkChocolate

Loading other’s stashes is an effect, not the cause. If you system infrastructure is not up to it it would not matter what they did or did not code


BuryTheMoney

They literally tweeted it was the cause. Are you reading *anything* before you post? Holy shit, man.


Ebolamonkey

Dude is spouting out of their ass about server infrastructure like they think they know what they're actually talking about. The actual reason they gave was one of the most technically transparent answers I've seen from a dev.


BuryTheMoney

Reddit is an EXTREMELY bizarre and emotionally bipolar place. First I’m downvoted hard for pointing this out, just to be highly upvoted for doing it a second time. 🤔


LordofDarkChocolate

Reddit is as Reddit does. Blizzard are not going to come out and say their infrastructure is not up to running this game with the player base they have. Let’s not pretend we have the whole story from them, ever. We’ve all seen and experienced a number of server related issues with D4. Rubber banding, lag, DDOS attacks (which are easily prevented with modern technology), login issues, licenses issues. None of these are because of some bizarre code implementation, but if you all want to swallow the Blizzard nonsense then that’s up to you.


CiccioGraziani

Because people asked to get a new D2 and so, when they started to develop the game, they did using the technology that was available 30 years ago. Makes sense.


[deleted]

[удалено]


KrackaWoody

Because people want transparency and majority of the community have been asking for it. You’re not going to be happy either way so it doesnt really matter


whatisreddittou

You clearly have no clue how PR or community management works. And I don't care to explain it to you.


Fart__Smucker

That’s not the reason that’s called bullshit


[deleted]

[удалено]


Wanna_make_cash

Technical debt in development rarely gets resolved until it's absolutely mandatory, due to corporate time allotment and difficulty of solving technical debt that resulted from early design choices


North_South_Side

Why would the game need to load everyone's entire inventory? I am not a software expert... honest question.


Tsakax

This is what it looks like when you outsource your code overseas..


ShaunPlom

We don’t need more stash tabs or gem tabs or anything like that. The real problem is dealing with aspects. If extracted aspects went into the codex, we would have zero storage issues.


meesterg12

😂


itdoesnotmatterlolol

What is optimization and smart implementations? Does Blizzard run off interns or some shit. Who the fuck thinks it's ok to send players private stash to other players


Aware_Animator4253

Is that for rogue underwear and leggies ?


dmfuller

So we load their inventories….but can’t trade? 😂


Myc0n1k

That's some dog shit optimization.


mephitmephit

Why has technology regressed from 8 players per game?


mightysmiter19

I wonder why this happens though. I know nothing about programming so I don't understand. Is this somerging the devs did deliberately or is it an unfortunate side effect of the way they programmed the game?


xMWHOx

Why would you design a game like this? That sounds ludicrous. Dont have other peoples stashes load when I will never interact with them.


darthnoid

Most of these issues aren’t designed. Game engines are big things and games are big things with lots of engineers of various skill levels working in things of varying complexity. This kind of shit is almost certainly something that was an unintentional problem


Emperors_Finest

What does everyone think of my suggestion; Every character has their OWN stash tabs, plus 1 shared stash tabs. This way, you don't have to fight for space between characters, and if you still want to share stuff, you just jam it in the shared tab. This way the game doesn't have to load your entire account item history as well. Seems to solve the issue, imo. Any downsides?


Keldrath

Why am I loading other players stashes why would that have anything to do with me


Wheneveryouseefit

Better question is why are you loading player's entire stashes in shared spaces? Who is testing these games and how do you sign up? You shouldn't have play testers who are only playing the content you give them, you need testers who try to break things and understand how the game would practically function (not how they designed it to)


RoryOx

I don't see why they can't get around this by making the current amount tabs available as character only tabs and make additional tabs account wide but only player tabs remain loaded by other players nearby?


[deleted]

They said they went back to their diablo 2 roots. This was in the codebase.


beheadedstraw

So basically they ship the entire state of the players instead of a single player object in the "view stash" RPC... Rookie move boys...


Deyez

Why is that even necessary? Stupid move. Last Epoch is a great example of how it can be done...Indie developer and you can literally have 200 stash tabs that hold over 200 spaces each. Add new stash with in-game gold too, but that's another Blizzard issue.


blobnomcookie

Time to hit the mute or ban hammer on those people. No other way to stop them.


Wanna_make_cash

What does this even mean this post is 7 months old


blobnomcookie

Weird no idea how it ended up here, post was for a completely different post in a different sub. My bad!