AppsusUK / NFT-Art-Generator

Easy to use NFT art generator app for windows/linux/mac
MIT License
434 stars 165 forks source link

Rarity not work properly in windows version #11

Closed Houssamix closed 2 years ago

Houssamix commented 2 years ago

first thank you for this great work , i wanna report a bug in current windows version , rarity not working , for example if you have 3 backgrounds (yellow(common 60%) , purple(legendary 30%) , red(rare10% ) and number of generated images 75 , you will get 25 in each color . i tested many times with different configs ( 4 folders , many images per folder ...) always same problem rarity not working.
thank you for your help .

AbdulDridi commented 2 years ago

Hey Houssamix, thanks for making the issue, it seems to work fine for me - quick question are you seeing this behaviour when you generate the max possible combinations for your inputs?

TL;DR: It's impossible to make the rarity accurate and only output unique images, do you want the option to allow duplicates to preserve the rarity?

The reason I ask is because we guarantee uniqueness of the output images, not the rarity of components in the output images, that's determined by how many images you decide to make!

There is an inherent conflict between guaranteeing the uniqueness of the output images and preserving the rarity of the image layers/layer items. The rarity % you enter on the application is the rarity per image generation roll, and this roll can be performed several times to generate one unique image if needed (making the rarity inaccurate). This re-rolling happens more and more as the number of un generated unique image combinations goes down.

As an example, say I have an image made of 1 layer (background) and 2 rarity folders (common - 99% and legendary - 1%) with one image in each folder. There are only 2 possible outcomes, being:

If we tell the program we want to generate 2 images, it will guarantee image uniqueness and generate the above two combinations, making the seeming rarity be 50/50 right? But what the program has probably done, is rolled the common background on the first try and output that image, but then on the following tries it keeps rolling the common background - so it ignores it until it gets lucky and rolls the legendary background, so it outputs the image, and is done. If we wanted the 99% and 1% to be preserved, we need to create duplicate images every time a non unique roll happens, that way you get 99 common images, and 1 legendary image.

Please let me know if that was helpful at all, and if allowing duplicates is something you intended/want 😄

Houssamix commented 2 years ago

thank you