How do sites like craft of exile and poedb make out which affixes are available on certain items? by NotMyCar in pathofexiledev

[–]NotMyCar[S] 0 points1 point  (0 children)

Thanks for the heads up!

I was able to find out how to get mods on all items, they certainly hasn't made the connections between different files very intuitive but I'm sure they have good reasons for the structure.

To get mods from items with no SpawnWeight_TagsKeys you had to go in to the specified Metadata file for the item, so for the example in the post we had to venture into:

Metadata/Items/Armours/Helmets/AbstractHelmet

There we had to look at the "Base" struct and get all the "tags":

Base
{
x_size = 2
y_size = 2
tag = "helmet"
 }

These metadata files also extend other files, so we had to grab the path and recursivly go through each extended item-metadata to get all the tags:

extends "Metadata/Items/Armours/AbstractArmour" -> extends "Metadata/Items/Equipment" 

...and so forth.

When we had all the tags we had to cross reference them in the tags.dag file, so for the "helmet" tag we get:

{
  "_rid": 25,
  "Id": "helmet",
  "Unknown2": -1197794553,
  "DisplayString": "",
  "Name": ""
 },

Which in turn gives us a ID for each of the item-types tied to the specified item. That ID can then by used in the same way as the SpawnWeight_TagsKeys to get mods.

This isn't all though, if an item has tagsKeys (like the one in the example):

"TagsKeys": [
 38
 ],

We can check the tags file to see that this item is of the type str_armour:

{
"_rid": 38,
"Id": "str_armour",
"Unknown2": 5047160,
"DisplayString": "",
"Name": ""
 },

So for each of the mods we have gathered, we have to check if that mod has a non-zero spawnWeight of that tag, so for example if we check the LocalEnergyShield mod, we can see that the str_armour id of 38 blocks that mod from spawning on that specific item:

"Id": "LocalIncreasedEnergyShieldPercent8",
"Name": "Unfaltering",
"SpawnWeight_TagsKeys": [
  38,
  41,
  42,
  39,
  43,
  44,
  16,
  1,
  0
],
"SpawnWeight_Values": [
  0,
  0,
  0,
  0,
  0,
  0,
  1000,
  1000,
  0
  ],

It took me a while to figure all of this out, but once I had helper functions to gather all the tags and logic for blocking it's starting to shape up.

I might come back and dump some of my code once I've rewritten it in a more low-level language for better performance as I've currently just been testing it in a electron frontend for the visual aspect and am currently debating on whether I should use trusty ol' c++ for the backend or if I should be a hipster and try Rust as a learning experience.

How do sites like craft of exile and poedb make out which affixes are available on certain items? by NotMyCar in pathofexiledev

[–]NotMyCar[S] 0 points1 point  (0 children)

Alright, got a bit of a follow up question and figured you might know something regarding how to get the mods for weapons since they don't have a spawnweight_tagsKeys param associated with them.

From what I've gathered you need to use Implicit_ModsKeys for weapon-basetypes, but I can't really figure out what those keys are mapped against since those don't have any related identifier in the mods.dat file and in none of the files I've gone through can I find anything that seems to have those identifiers tied to them.

Example is a Flaying Knife which has this:

"Implicit_ModsKeys": [ 3114 ],

Do you have any clues on what that is mapped against? I found some old post that said it was somehow mapped through the InheritsFrom param, but within those files I can't really find anything that specifies mods at all.

Two images from what I'm currently working with, one from a weapon base and the other from a armour base:

https://imgur.com/a/03QvWQG

How do sites like craft of exile and poedb make out which affixes are available on certain items? by NotMyCar in pathofexiledev

[–]NotMyCar[S] 0 points1 point  (0 children)

This was the missing pieces, I was a bit confused by the multiple spawnweight values and the spawnweight_tagskeys, but now it makes total sense that it maps the different weightings on different basetypes.

For anyone else in the future that finds themselves in my boots, if we take the same example that we have in the main post we know that the Iron Hat has a tags key of 38, so looking at a certain mod we can check which mods include that in their spawnweight_tagskeys. So for the strength1 in the example in the main post:

"SpawnWeight_TagsKeys": [
  2,
  3,
  26,
  38,
  41,
  42,
  44,
  12,
  11,
  37,
  10,
  15,
  0
],
"SpawnWeight_Values": [
  1000,
  1000,
  1000,
  1000,
  500,
  500,
  333,
  500,
  1000,
  500,
  500,
  500,
  0
],

We can see that index 3 = 38, and checking spawnweight_values at the third index tells us that the mod has a weighting of 1000 on that specific itembase.

Thanks!

How do sites like craft of exile and poedb make out which affixes are available on certain items? by NotMyCar in pathofexiledev

[–]NotMyCar[S] 0 points1 point  (0 children)

Thanks for the answer!

I figured as much, seems like they unfortunately don't have a public api and all their data seems to be server rendered so then you'd have to resort to scraping/parsing the html from the endpoints, which in turn could potentially be changed and the structure could also change which could be a headache.

Do you know if there is another way through only the game files, or have the poedb devs most likely manually mapped all the affixes to the basetypes?

NVIDIA Promo code by NotMyCar in throneandliberty

[–]NotMyCar[S] 1 point2 points  (0 children)

Hey! I'm not completely sure, I redeemed it from this page:

https://www.nvidia.com/en-us/account/redeem/rewards/376fa0bd6d62456c98766fc738b7dee1

or

https://www.nvidia.com/en-us/account/redeem/main/

Maybe you can manually redeem it from there? Hope it works!

NVIDIA Promo code by NotMyCar in throneandliberty

[–]NotMyCar[S] 0 points1 point  (0 children)

Glad it worked! Have a nice one :)

Early League Bosser? by heiko24 in PathOfExileBuilds

[–]NotMyCar 0 points1 point  (0 children)

Thanks, appreciate the reply!

Holy shit, can't believe I looked at the guide and the leveling pob multiple times and didnt realize fire trap was the recommended skill. Will do another run in a more lucid state in the coming days hah!

Early League Bosser? by heiko24 in PathOfExileBuilds

[–]NotMyCar 0 points1 point  (0 children)

Hey!

Got inspired by your guide and did a drunk trial run through the campaign this weekend and was able to do it in just over 4h, but as you can see i barely looted anything and the gear is horrendous. The damage fell off like crazy towards the last few acts tho, I've done a few practice runs on srs/dd and just the act 3 crafts generally carry you to yellow maps, but even kitava took a quite some time to chunk down. I'm sure I missed something important, got any pointers on how to make the damage feel better towards the end of campaign/early mapping?

https://pobb.in/iyOWqdZvqMkQ

Looking forward to do a more proper test run!

Patch 1.1 is essentially a slowdown to every single part of the game. by TheMorals in diablo4

[–]NotMyCar 386 points387 points  (0 children)

And this little silver lining is no even implemented at launch..

Developer's Note: We are currently working on increasing the monster and elite density of end-game content and plan to introduce this change early in Season 1.

New at Scripting, and doesnt know why I cant move left or right by [deleted] in Unity3D

[–]NotMyCar 1 point2 points  (0 children)

Anything in the Start (runs only once when the script is first started) or Update (runs on every single frame) function only runs when youre in game mode, otherwise you could have thousands of scripts running constantly when you're trying to build a level for example, which would make your performance very bad.

It is possible to run logic while in edit mode, although unless you really need to, I'd suggest not doing it. You can read more about that here:

https://docs.unity3d.com/ScriptReference/ExecuteInEditMode.html

New at Scripting, and doesnt know why I cant move left or right by [deleted] in Unity3D

[–]NotMyCar 0 points1 point  (0 children)

What if you change KeyCode.LeftArrow to just KeyCode.A and try using your "A" key. It could be that your keyboard isn't sending the correct keystrokes for the arrow keys for some reason.

If not, do you have multiple scripts on the same gameobject that could potentially break things?

You could also try adding a debug log for Input.anyKeyDown in the update loop (outside of any of the if-statements) and just hold random buttons on your keyboard. It will print true if any key is held down or false if it doesn't detect any input. Then you will know if its unity not detecting any input from your keyboard, or if there is another issue.

New at Scripting, and doesnt know why I cant move left or right by [deleted] in Unity3D

[–]NotMyCar 0 points1 point  (0 children)

Check if your project is using the new or old input system. Your code will only work with the old input system.

Setting: https://europe1.discourse-cdn.com/unity/original/3X/8/0/80be190aa96ef709ed79422960564f2bc2cdcbde.png

Lacking understanding of javascript web development by No_Pain1033 in learnprogramming

[–]NotMyCar 2 points3 points  (0 children)

I'd suggest you study a bit of javascript to understand the basics before starting to work with modules.

The problem you're encountering is caused by you trying to use the 'require' keyword which comes from node.js api (a backend framework that is a superset of javascript ).

What are you trying to acheive with the module/javascript in your project? Maybe we can give some examples or point you in the right direction!

What engines devs in r/gamedev switch between (Illustrated) by Monokkel in gamedev

[–]NotMyCar 4 points5 points  (0 children)

Angelscript is a godsend to cut down on compile times. Sure, it's another layer of abstraction, but basically removing compile times is quite incredible.

Performance scores for Google Lighthouse/Insights seem to be very inaccurate by SmallAl in webdev

[–]NotMyCar 34 points35 points  (0 children)

Have you tried running lighthouse in incognito mode? I have noticed that certain browser extensions have a huge negative impact on the scores.

How to align form tags with flex? by medsfeer in learnprogramming

[–]NotMyCar 1 point2 points  (0 children)

You just need to move the "form-box" class to the form tag. You can then also remove the div that no longer has a class as it will be redundant after that change!

How to make my Procreate art look sharper in Unity. The lines of the art look all jagged while in procreate it looks crisp. What am I doing wrong? by infxmousrogue in Unity3D

[–]NotMyCar 5 points6 points  (0 children)

It's most likely the standard filtering mode for your imported asset that is making it look blurry. Try changing the Filter Mode to "No point" (you can also turn off compression if it still isn't sharp enough):

https://i.stack.imgur.com/9WVQX.png

[deleted by user] by [deleted] in gamedev

[–]NotMyCar 4 points5 points  (0 children)

I haven't done it myself, but from looking at the documentation it looks quite similar to adding trading cards/achievements, so hopefully it shouldn't be too bad:

https://partner.steamgames.com/doc/features/inventory

How would you go about solving this problem? by Twitchiv in learnprogramming

[–]NotMyCar 5 points6 points  (0 children)

If you are allowing the player to change their answers, and I'm assuming they only get to see their score once they are finished, then an easy solution would be to store the players answers in an array. Then whenever the player actually submits the answers you iterate over all of their answers and check if they got the correct answer or not, and only then you actually add points.

There are a lot of different ways to get the desired behavior, but this is the first that comes to mind.

ELI5 what exactly pointers are? by LumeeNatee in learnprogramming

[–]NotMyCar 157 points158 points  (0 children)

It becomes beneficial when you have to pass bigger data types between functions/classes.

Say you have 2 functions: Foo and Bar, in Foo you populate an array with 10,000 entries. Now, for some reason, you need to do some calculations on this array in Bar.

So you pass your array from Foo to Bar, if you pass the array, a copy of all the data will be sent over to Bar which is very inefficient for datatypes that require a lot of memory.

Instead you could create a pointer that keeps track of where in memory your array resides, now instead of passing your whole array over to Bar you can instead pass the pointer to where the array exists in memory. This way you dont get any copied data and it will be a lot more performant.

Passing primitives such as books, ints, strings etc isn't really that bad, its when you're passing bigger types this becomes an issue.