Programming Rarity is Harder Than You Think

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 พ.ค. 2024
  • My official Roblox Studio course:
    bit.ly/ByteBloxCourse
    To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/ByteBlox
    You’ll also get 20% off an annual premium subscription!
    discord: / discord
    wondered how to make a main menu in roblox studio? or how to create a shop which has working GUI? ive made lots of 2024 roblox scripting tutorials about all the different bits of roblox to give you some up-to-date information about all of its properties and events.
    my goal is to simply give some insight on how to use the various features and instances roblox studio, and show you some fun stuff you can do with them. thanks for checking out this roblox scripting tutorial :)
  • แนวปฏิบัติและการใช้ชีวิต

ความคิดเห็น • 494

  • @byteblox100
    @byteblox100  25 วันที่ผ่านมา +53

    Adding new course units soon, buy now to get them for FREE:
    linktr.ee/ByteBlox

    • @awesomesauce-kg9xn
      @awesomesauce-kg9xn 25 วันที่ผ่านมา +2

      Change your name to freakyblox now

    • @hqTheToaster
      @hqTheToaster 25 วันที่ผ่านมา

      Actually, I agree with you. I didn't make rarity before. The closest to rarity that I made is a 'fair' randomizer. (one in a row or two in a row randomizer for maps.)

    • @grindhub8340
      @grindhub8340 25 วันที่ผ่านมา

      FreakyBlox

    • @summonandthe8127
      @summonandthe8127 25 วันที่ผ่านมา

      e

    • @cozzy124
      @cozzy124 25 วันที่ผ่านมา

      day 6 of asking byteblox to release an onlyfans

  • @eclair1616
    @eclair1616 25 วันที่ผ่านมา +897

    No. You just don’t implement rarity. You only want to make it as if there is rarity but in reality you will only get common items, and then you make a button to get legendary with robux.

    • @maddestcattest
      @maddestcattest 25 วันที่ผ่านมา +23

      Against Roblox ToS + generally scummy behavior, it's just a better option overall to make it honest based on my experience.
      Instead, just inflate the perceived value of whatever you earn whenever robux is used.

    • @eclair1616
      @eclair1616 25 วันที่ผ่านมา +132

      @@maddestcattest it was a joke - but just so you know most games do that, and Roblox doesn’t care because they also get money off his, because they get 70% of the robux.

    • @Avysilvasan
      @Avysilvasan 25 วันที่ผ่านมา +4

      gimme oux

    • @ivoxii
      @ivoxii 24 วันที่ผ่านมา +6

      @@eclair1616they get 30% not 70%

    • @azurelava7796
      @azurelava7796 24 วันที่ผ่านมา

      @@ivoxiiWell Roblox takes 30% of the robux, and when you exchange robux for USD through the DevEx system, it’s at a rate way lower than when you buy robux. So overall they take about 75%.

  • @ZaeNonQ
    @ZaeNonQ 25 วันที่ผ่านมา +799

    me when i use "pick random from 1 to 100" in scratch:

    • @eclair1616
      @eclair1616 25 วันที่ผ่านมา +33

      Scratch isn’t a PRACTICAL programming language.
      (It is but it’s useless in actual scenarios, apart from learning. Did you even hear a company say “I’m gonna make my next multi billion AAA application in scratch”? No, because it’s useless for everything else apart teaching young people about who programming works. You cannot even make a windowed application with it. (I mean a native application, using the windows API, not some junky scratch way to fake a window)

    • @officialcbyt
      @officialcbyt 25 วันที่ผ่านมา +146

      @@eclair1616 Scratch is as much a programming language as Roblox Lua. They're both methods of executing code inside of another program.
      Just because Scratch is a visual language doesn't mean it isn't a programming language

    • @opa8012
      @opa8012 25 วันที่ผ่านมา +44

      @@eclair1616 also he never even said anything about a programming language

    • @keppelin1527
      @keppelin1527 25 วันที่ผ่านมา +11

      J

    • @neonstix1035
      @neonstix1035 25 วันที่ผ่านมา

      @@eclair1616it is, it’s block coding. Even unreal engine has block coding.

  • @hqTheToaster
    @hqTheToaster 25 วันที่ผ่านมา +188

    Actually, tbh, I agree with you. Rarity is harder than I think. Haven't had to program rarity before. The closest I got was programing a sort of 'fairness' system in randomizing maps. (1 in a row, and 2 in a row.)

    • @NaraSherko
      @NaraSherko 25 วันที่ผ่านมา

      I did for a iq rng game

    • @summonandthe8127
      @summonandthe8127 25 วันที่ผ่านมา +1

      ýes

    • @CrazyDoodEpicLeaves
      @CrazyDoodEpicLeaves 25 วันที่ผ่านมา

      @@NaraSherko The concept of a "IQ RNG" game is so ironic, because only dumbasses would play it

    • @SunnyNightsStudios
      @SunnyNightsStudios 25 วันที่ผ่านมา +2

      Making a map only pop up once is easy and rarity is not even that hard, I was able to script a pet rarity system and guess what im technically not wven an expert yet Im intermediate smth

    • @hqTheToaster
      @hqTheToaster 25 วันที่ผ่านมา

      @@SunnyNightsStudios I have no rebuke of notable difference. It took me a while just to 'repair' the Randomizer that LittleBigPlanet 2 eventually gave me. (I wanted a shuffler and got a 'turn on until full and reset' as the prefabricated option to work with.) My skill is... prefabrication-beginner, maximum. Though, I still know my way around the Roblox Wiki, and am willing to type out the long way around to making something work, even if it is a bunch of if-thens instead of clever 'typewriter exclusion'. But again, if it is a contest context, you have me beat.

  • @SuppressedMountain
    @SuppressedMountain 23 วันที่ผ่านมา +13

    Bro you arrived in a great time, I just got to roblox lua scripting and these videos are teaching me better than my courses lol

  • @LLukasVx
    @LLukasVx 25 วันที่ผ่านมา +83

    1:26 yes, replicatedstorage

  • @ZenkaiDragon400
    @ZenkaiDragon400 20 วันที่ผ่านมา +6

    I recently began my first game and just so happen to need this rn and u happen to upload this only 4 days ago wow how lucky am i to stumble upon this video thank u 🙏

  • @slooshified_
    @slooshified_ 25 วันที่ผ่านมา +8

    the way i made a rarity system is more focused on convenience of updating, so instead of making a table or list of rarities i just made a folder containing numberValues and effects of each rarities, so it picks a random number between the lowest and whatever the sum of all values are (all of which are handled by a "ipairs" sequence), which was NOT easy.. but saved me a lot more time adding more and more stuff on it

  • @audrete6071
    @audrete6071 23 วันที่ผ่านมา +6

    short answer: chatgpt, long answer: this video
    edit: thanks though, i understood the video

  • @alpha4194
    @alpha4194 22 วันที่ผ่านมา +71

    rarity while seeming initially hard isnt that bad when you get around to understanding tables, so i decided id program a simple lua weighted randomizer and send it here for people to reference if they manage to see this comment
    first we wanna start off with a table, which is essentially a list. However, each list is only really allowed to have one entry within each line, so to make things more optimized we are effectively putting a small list containing the NAME of the item, as well as its rarity.
    the rarity in question acts more as a 'frequency' meaning the higher the number, the more abundant the object would become.
    the template is essentially {(brick color),(frequency)}
    afterwards we are going to run code that makes a new table (list), that inserts each entry of the original table (list) the number of times of its frequency. Meaning the white brick in the situation (view below) would be written down on the list 100 times. We do this for every entry and effectively have a long imaginary list with 230 entries (in the situation im showing off below.)
    The final part of this is picking a random number from 1 to the number of entries we have, and just taking the object from the spot in the list!
    -------------------------
    local OurExampleList = {
    {"White Brick",100}; -- common
    {"Purple Brick",70}; -- Uncommon
    {"Green Brick",50}; -- rare
    {"Orange Brick",10}; -- legendary i guess
    }
    local ImaginaryList = {} --imaginary list that is used for later to decide which specific brick we want by inserting the (total of) 230 possibilities into
    for CurrentIndex, CurrentListEntry in OurExampleList do
    for count =1,CurrentListEntry[2] do --see the [2]? This is important here because we are sorting through the original example list, which has mini lists and we want the rarities from the mini lists. CurrentListEntry is also technically one of these, which can be found from the CurrentIndex (meaning the mini list {"White Brick",100} is found when CurrentIndex is at 1)
    table.insert(ImaginaryList,CurrentListEntry[1]) -- places the current entry into the imaginary list, this is run as many times as its frequency
    end
    end
    local Result = ImaginaryList[math.random(1,#ImaginaryList)] --This is another index similar to [2], but we are picking a random entry, from 1 (the first entry) to the TOTAL number of entries (which is essentially 230)
    print(Result)
    -------------------------
    sorry for lack of formatting or if I was to vague on any topics, but this is just some simple sample code that is a nice stepping stone to understanding absolute essentials to development

    • @alpha4194
      @alpha4194 22 วันที่ผ่านมา

      this system integrates rarities AND parts to be part of a simple 18 line piece of code. if you really wanted to instead of printing the result you could use the string (the parts that say "White Brick", "Purple Brick", and so on and so forth) to identify parts you already stored. if we wanna do essentially what is being done here, we could (in place of print(Result)) replace with
      -----------
      local PartClone = game.ServerStorage.Things:FindFirstChild(Result):Clone()
      Partclone.Parent = workspace.SpawnedParts
      -----------
      This essentially finds the part by the name of our table entries meaning if your common/grey brick is named "White Brick" the code would be able to identify it within the storage folder, clone it, and throw it in workspace's folder very simply

    • @Godsent_Prophet
      @Godsent_Prophet 22 วันที่ผ่านมา +10

      You eradicating the redundant roblox tutorials with the one

    • @Noob-ot8rf
      @Noob-ot8rf 21 วันที่ผ่านมา +1

      fr i put both together in a table inside the main table instead of making the index a string

    • @PeterMyler
      @PeterMyler 20 วันที่ผ่านมา

      Ok but the problem with is that if i change the frequency of one item, it affects the chances of the rest, since the total frequency number has changed. Idk how to fix this though, that's why rarity systems actually seem kinda hard to me

    • @alpha4194
      @alpha4194 20 วันที่ผ่านมา

      @@PeterMyler in an instance where this is an issue, you can instead of just contacting a single value, have the value represent something more. Lets say whitebrick had multiple variants but didnt wanna lower the odds of the other bricks by cluttering the pool, make whitebrick a folder in serverstorage, and run code that will pick a random object FROM that folder. Basically, check list, find desired category (common, uncommon, etc) and pick a random instance from your category. When picking the random instance, every instance should be equally weighted. If you want a code example lmk ill code one

  • @azurelava7796
    @azurelava7796 24 วันที่ผ่านมา +9

    When you’re using the counter variable while looping through the rarities, this is called prefix sums, and it’s pretty useful for cases like these. But I would say that it’s better to just construct the prefix sums table right after your rarities table is initialized so that you can have faster runtime (especially if there is a lot of rarities).

    • @Mycrow
      @Mycrow 10 วันที่ผ่านมา +2

      maybe its just me but could you just run a random function, like between 1 and 1000. then do a bunch of if statements and make then proportional to the rarity. So like common is 90 percent so if the number chosen from the random function was less than or equal to 900 then spawn the common brick? If you could'nt do that directly, you could store it in a variable then do another set of if statements to spawn the brick depending on what the variable is.

    • @icontrolthefuture
      @icontrolthefuture 2 วันที่ผ่านมา

      Confusing as heck🫠🤦🏾‍♂️

  • @Hermit_Wish
    @Hermit_Wish 25 วันที่ผ่านมา +10

    Thank you for this.
    And to all the viewers here, there's multiple variants of weighted RNG, I would highly recommend to try things out such as making an alternative to math.random(), or find another way to calculate the result.
    It's a complex system and there's no system that suits all, experiment with it.
    And with such, another method to this video is to add up all the weight values and multiplying it math.random() with nothing in the parentheses; from there, you go through each weight again and remove it from the accumulated weight that you got from multiplying till you reach 0 or less and return the item that triggered that check.
    However, by doing this method, you may see that high rarities will appear to be more common depending on the weight you assigned.
    Again, I highly recommend you to try things out and find new ways; step a little out of your comfort zone, but not by too much, learn from the behaviors and mistakes you come across.

    • @azurelava7796
      @azurelava7796 24 วันที่ผ่านมา +4

      If you’re using RNG, you use math.random(), because why would you want to create your own pseudo-random function? Unless it’s not random and you’re following a cycle of results.
      And you said that you could use math.random() * WEIGHT_TOTAL, but that’s literally the exact same thing. math.random(start, end) is equal to math.floor(math.random() * (start - end + 1)) + start.

    • @Hermit_Wish
      @Hermit_Wish 24 วันที่ผ่านมา

      @@azurelava7796
      1. Yes, but only if you want it to repeat, it's the old way of doing RNG and still holds true to this day, that being said, you can easily update the seed with something unpredictable each time you are required to do so or whenever a button is pressed.
      2. Right for the wrong reasons. try it first, you'll get different results as weird as that may sound.

    • @Hermit_Wish
      @Hermit_Wish 24 วันที่ผ่านมา

      something or someone removed my comment...
      1. pseudo-random can be repeating if you want it to, there's ways to make it non-repeating.
      2. while yes, math.random() * weight_total is the same as math.random(1, 100), it will yield slightly different results and I'll be honest, I don't know why, my best guess is the float point error, you'll also get slightly different results depending if you use a weight counter or remove weight from math.random(1, 100).

    • @apekz3592
      @apekz3592 17 วันที่ผ่านมา

      local x = random(1,round(1/(rarity/100))) if x == 1 then print(“u got:”, x) end. Ez

    • @apekz3592
      @apekz3592 17 วันที่ผ่านมา

      Let’s say we have a chance of 0.01%, my formula would equate to random(1,10000)

  • @DpJordi
    @DpJordi 16 วันที่ผ่านมา +7

    I had a system for my now abandoned game. The rarity system was so advanced. It had to take like 8 values in mind when generating.
    It was basically an armour generator. Where each piece had multiple stats. But certain stats where handled differently. Before i started it, i thought it was gonna be super easy.
    shit was harder than anything ive done. It also had to work with data saving. I had like 5d array for each stat. Crazy.
    It used like 5 scripts in total. the rarity script was like 300+ lines.
    And when i code, i code to make it as efficient as possible.
    Then i realised, its roblox. It doesnt need to be this complicated. So now i stick to simpler games.

  • @neverdaddy
    @neverdaddy 10 วันที่ผ่านมา

    Very educational,deserves a sub 🎉

  • @chaosincursion
    @chaosincursion 16 วันที่ผ่านมา +4

    funnily enough, i made a rarity system using this concept in obby creator like 3 years ago without even realizing this is how rarity systems work in roblox coding

  • @chereyhotallygetufromfrida952
    @chereyhotallygetufromfrida952 3 วันที่ผ่านมา

    been considering for the course

  • @Mcreedity
    @Mcreedity 25 วันที่ผ่านมา +3

    Oh my glorious king ByteBlox are you going to do the thug shaker i have been waiting for so long

  • @JakubYTchannel
    @JakubYTchannel 16 วันที่ผ่านมา +6

    me when math.random

  • @Pygim
    @Pygim 11 วันที่ผ่านมา +2

    I tried to make a rarity in a different project in a different language, and I gave up, decided to use a simple formula to decide the chance of each rarity. It's not perfect but it gets the job done.

  • @Platinum-Angel
    @Platinum-Angel 18 วันที่ผ่านมา +4

    As a RNG game developer, I can explain how games add new items with new rarities not adding up to 100% while still being accurate.
    A first idea I had was to make, for example, common (50%) be added 50x in a table, and all that for each of the rarities, then returning a random one, except that's way too slow for huge numbers like 1,000,000, Roblox risks to crash.
    But then the ultimate solution is quite quite hard to understand : developers just use a rarity table like in this video, except their random generator function computes each "part"'s rarity weight and return a random part on its weight compared to other ones.
    Yep, that's quite hard to understand and redo but that's how it works. I spent hours documenting that subject and I made a pretty accurate rng system.

    • @lonras
      @lonras 9 วันที่ผ่านมา

      so first you decide which rarity you get and then you roll what item you get out of the pool of that rarity. Right?

  • @FaeTheMf
    @FaeTheMf 7 วันที่ผ่านมา

    Yo just an idea but could you use multiple random number generators to find rarity so you don’t need to make it up to 100 percent? For example:find random int from 1 in 100. If you don’t get 1, roll 1 in 50. If that fails roll 1 in 10. If they get 1 on any of these rarities then they get the pet associated with that rarity. Then you can have things like 1 in 1 billion without having to worry about any of the math, and if they fail all rolls you can just give them the lowest rarity. This also makes it a lot easier to add 2x luck mechanics etc, even if it’s a bit slow computational wise with too many rarities

  • @world1583
    @world1583 9 วันที่ผ่านมา

    i would just give one part a variable that would be random every time the part is created, if the variable is 1 then it would look legendary (change its skin to legendary) and so on. it actually would make you a less messy workspace and you don't need to use a loop

  • @hugomazeo1479
    @hugomazeo1479 5 วันที่ผ่านมา

    I programmed rarity in a card game i made, i sorted differente rarities (common, rare, super rare) gave them values, then sorted a random integer between 1-100, depending on witch number it gave some rarity was sorted, then inside that rarity was an array of cards, it randomly choose one of them, that way i could have multiple rarities and many cards inside each rarity, worked perfectly

  • @kale1209
    @kale1209 12 วันที่ผ่านมา +2

    i never thought of this being difficult damn, whenever I've had to program it I've just kind of done it without thinking bc its not that hard

  • @D4NONYT
    @D4NONYT 25 วันที่ผ่านมา +38

    1:26 "ReplicatedStorage"

  • @vknu
    @vknu 6 วันที่ผ่านมา +1

    I always thought there were basic frameworks that most roblox game devs use to implement somewhat usable rarity systems, depending on the amount of effort the devs put into the game would directly correspond to how well and unique the rarity system would be (If they change the framework that is).

  • @qrzone8167
    @qrzone8167 14 วันที่ผ่านมา

    You can use your rarity "weight" as the maximum range for math.random and then a successful pull is when your random number is equal to 1. This makes it so you don't have to hand modify your weights every time you decide to add something rarer because adding something rarer just means the new entry will have a bigger weight number.

  • @Lipaanek
    @Lipaanek 10 วันที่ผ่านมา

    I can confirm that, it was brutal and at the end I must use tutorial!

  • @flameofthephoenix8395
    @flameofthephoenix8395 18 วันที่ผ่านมา +1

    1:25 I've never programmed anything on "Roblox" before, but here's probably what I'd do in this situation, create a bunch of pets, none of them are intentionally favored, they are all on equal footing, you'll store on the server a quantity of each of these pets, every day increase the number of every pet by a fixed amount, such as 100 though it depends on how many people are playing your game, each time someone buys it decrease the number of pets, the cost of each pet depends on the number of those pets left compared to the other pets, with it being impossible to buy a pet that is out of stock entirely. Any pet that has far fewer left than all the other pets will get categorized as rare or legendary until it no longer has less than the other pets, you can add sparkles or something to these special pets, you can probably also make it possible to sell pets back if you want to make things more interesting, though it may be best to have a time limit on how long you can have the pet before losing the ability to sell it.

    • @X5up0_
      @X5up0_ 11 วันที่ผ่านมา

      so give everyone the pets and then make a rarity system so they can gamble to get pets that they actually own ?

    • @flameofthephoenix8395
      @flameofthephoenix8395 11 วันที่ผ่านมา

      @@X5up0_ Nope, the only thing getting pets for free is the server itself, then the server makes the cost of the pets equivalent to how much of that pet is in stock relative to other pets, this naturally will make some pets become harder to get because they happen to be preferred over the other ones for whatever reason, and sometimes the pets will even run out entirely. However, this comment had been made before I finished the video, I misunderstood what he was wanting to do, turns out he just wants some pets to be less likely than others based on hard-coded values.

    • @X5up0_
      @X5up0_ 10 วันที่ผ่านมา

      ​@@flameofthephoenix8395 well what you are saying makes no sense, the way you are going to code the server getting free pets is actually a rarity system, the only difference between your idea and the video is that you want the legendry pet to be random as well not a hard coded yellow glowing part like in the video, and making the server choose it is also a rarity system which is bad because it could also pick a bad pet and make it "legendry", the only other logical way to do what you said is just making it as a market of pets in the game and the pets rarity is calculated based on revenue of each pet, which is as i said "giving free pets for everyone and then making them gamble using a rarity system to get the pets that they already own"
      and there is another problem , people won't have enough money to buy the high stats pets and they would for sure buy lower stats pets which kills the whole system
      there are ways to bypass stuff like this but the only ways i am currently thinking of makes the game not about pets instead about "STONKS"

  • @wldpnda
    @wldpnda วันที่ผ่านมา

    why not something along the lines of "for [generic item here] : generate number 1 through X, and if that number is 1, give [generic item here]"?

  • @valerium730
    @valerium730 19 วันที่ผ่านมา +1

    So would that mean that to have an increased chance, you'd just divide by the new luck? For example, before running the table, if you say, had a x2 luck modifier, you'd divide the random number by 2?

    • @n3o.l1
      @n3o.l1 14 วันที่ผ่านมา +1

      Yeah thats basically the idea of it, either dividing the random number by 2 or dividing the weight added to the counter by 2

  • @nord5183
    @nord5183 7 วันที่ผ่านมา

    i still see myself as a new dev and i expected to be flabbergasped by the complexity of this script for it to just be extremely easy

  • @ing32
    @ing32 17 วันที่ผ่านมา +1

    Is this actually 1% chance on legendary? I think it's even less? The way you retrieve the object makes me a little confused on the actual percentage. Also this method brings me a lot of memories about greedy programming problems, like the backpack greedy problem.

    • @byteblox100
      @byteblox100  16 วันที่ผ่านมา

      It’s 1% because every other rarity is retrieved the same way, so the ratio remains the same

  • @alussk
    @alussk 24 วันที่ผ่านมา +2

    You could make a rarity system like he did and make it work by just making it check the first number in the table and if a number is less than the Random number it will get the table index of the rarity and add one to that and check the rarity of the one above the current rarity if that one is equal to or less thAn aswell, if it is less than then it will go to that rarity and check the same until it ends on 1 rarity. If the rarity is not less than the number it will check the next rarity. Bassically just if one number is wrong then go up if one number is right then check the next one if it’s also right and if the next one is wrong it will select the current number. If the number above is right, it will go to that one and check agian.

    • @Happonyx
      @Happonyx 16 วันที่ผ่านมา +1

      Basically, this is how you would do it;
      1. Generate random number from 1-5
      2. If random number is not 5, make rarity common.
      3. Else, if random number is 5, generate a new random number from 1 to 10.
      4. If random number is not 10, make rarity uncommon.
      5. Else, if random number is 10, generate a new number from 1-30.
      6. If random number is not 30, make rarity rare.
      7. Else, if random number is 30, make rarity legendary.
      Or, you could do something like this;
      1. Generate a random number from 1-100
      2. If random number is greater than 50, set rarity to common.
      3. If random number is greater than 80, set rarity to uncommon.
      4. If random number is greater than 95, set rarity to rare.
      5. If random number is 100, set rarity to legendary.

    • @alussk
      @alussk 16 วันที่ผ่านมา

      @@Happonyx i see what you tried to do and this could work however this is pretty bad since you have to manually add in all the numbers yourself which isn't the greatest thing.

  • @batatafrita5455
    @batatafrita5455 4 วันที่ผ่านมา

    Idk in roblox studio, but in unity i would just make the machine chose a random int between 1 and a 100, and if its 1 &&

  • @Doopie2008
    @Doopie2008 16 วันที่ผ่านมา +1

    well guided ❤

  • @FrogsAreGods
    @FrogsAreGods 22 วันที่ผ่านมา

    instead store a value of numbers that it has to be greater than and generate a random number from 1-100 store it as randomValue or something then loop through from legendary to common (must be in that order to ensure your probobabilties are acurate) checking if the value of each is greater less than randomValue so you would start to check if it was 100 (only number it could generate greater than 99) and go on untill 0

  • @KanYT
    @KanYT 21 วันที่ผ่านมา +9

    Meanwhile python

  • @Noob-ot8rf
    @Noob-ot8rf 21 วันที่ผ่านมา

    ill be honest, i never considered this hard as i knew for a long time how weight/cost works for randomization

  • @weskertambemjoga8261
    @weskertambemjoga8261 5 วันที่ผ่านมา

    You just did a 100k players game congrats

  • @JedotiOffical
    @JedotiOffical 23 วันที่ผ่านมา +3

    i saw the text "programming rarity is harder than you think" no its not i made a system right after i saw it to show and it was easy . for all devs that struggle : if you struggle with a rarity system , dont give up (BTW : If something is 1% of 100 % in 1000 drops i got ONLY 9 of them)

  • @DragonBallDetroit
    @DragonBallDetroit 5 วันที่ผ่านมา

    As a game developer there's several ways around this. Well I use unreal engine so it might be different for Roblox.

  • @user-zs1hm1cy8u
    @user-zs1hm1cy8u 24 วันที่ผ่านมา

    if table order is not waranteed then dont return a value at that point. Instead, store the value and keep iterating

  • @adenrockss
    @adenrockss 14 วันที่ผ่านมา

    its easier to make common 100 - all of the other raritys. if you do that its seamless when implementing new raritys into the game

  • @donqui1701
    @donqui1701 7 วันที่ผ่านมา

    what if in the chooseRandomPart you just do if randomNum == 1 do..., elseif 2 =< randomNum =< 19 do ... elseif 20 =< randomNum =< 29 do... etc wouldn't it work too ? i never coded on roblox studio

  • @LisooYT
    @LisooYT 18 วันที่ผ่านมา

    i actually use
    set {_num} to random integer between 1 and 1000
    if {_num} is between 1 and 100:
    do something
    its about 10% cause 1/1000 is 0.001 which is 0.1% 10 is 1% 100 is 10% and 1000 is 100% so yeah

  • @theearthisphlat
    @theearthisphlat 4 วันที่ผ่านมา

    New to Programming in general, figured id give it a shot for fun. ive got my entire two scripts coded exactly like shown in the video yet it wont spawn any bricks of ANY rarity. Anybody know why? im assuming im missing something very obvious lol, ive paid heavy attention to case sensitivity and efficient naming

  • @Dr.Callaham
    @Dr.Callaham 25 วันที่ผ่านมา +23

    The only reason why i would make a rarity system is to make a rotation shop with cosmetic items. As pet sim, blade ball and sols rng is basically gambling glorified
    Edit:
    Well because it looks like some of sols rng players are going after me in the comment, i want to clarify that i dont think that sols rng is gambling, and that pet sim and blade ball is the roblox casino. But what makes me group the game up with the others are that sols rng enforces the gambling mentality that the next one could be the super good reward. This could create a habbit in children which could lead to them resorting to gambling later in life. This is also not something that i feel like sols rng is doing, but basically all popular roblox games nowadays.

    • @diablense
      @diablense 25 วันที่ผ่านมา +1

      Gambling🤤🤤🤤 Nah, in this case sole rng is kinda valid compared to others bc all you can get in this "game" is cosmetic auras that give literally 0 things

    • @Dr.Callaham
      @Dr.Callaham 25 วันที่ผ่านมา +2

      @@diablense you say that while in sols rng, you try and get lucky to get those super rare auras. While things like slot machines you hope that you get lucky and get a super rare combination of icons to win big. There quite alot of similarities belive it or not

    • @diablense
      @diablense 25 วันที่ผ่านมา

      @@Dr.Callaham compared to pet sim and blade ball, rng things here do not give any advantages, they are only visual, even tho this is literally the ONLY "gameplay" of "game" it's still not as bad as in pet sim.

    • @Dr.Callaham
      @Dr.Callaham 25 วันที่ผ่านมา +1

      @@diablense never said it wasnt, and i completely agree. However that does not mean that sols rng has no effects on peoples minds.

    • @glorioup
      @glorioup 25 วันที่ผ่านมา +2

      @@Dr.Callahamsols rng isn’t gambling. If you take the definition of gambling, it’s to “risk” something for a game of chance. But in sols rng you aren’t risking anything, there’s no punishment because quite frankly there’s no further gameplay or meaning over showing to others how much you’ve wasted your time with a colorful aura that gives enough dopamine to excite the developing baby brains of it’s playerbase.

  • @vyntax.mp3
    @vyntax.mp3 16 วันที่ผ่านมา

    theres a better way to do it to have it guarantee a certain rarity based on luck and it can support numbers up to 1e308. I have my own pseudo number generator that doesnt use roblox’s random library though. Personally this method is better than weights

  • @RealDB
    @RealDB 13 วันที่ผ่านมา +1

    sol's rng dev gonna call himself a developer after he realizes people will think coding rng is hard

  • @willtogs
    @willtogs 22 วันที่ผ่านมา

    wouldn't it be easier to do something like a random number event happen via player and then make a series of if elseif statements? like
    are there any downsides to doing it like so? Sorry if its a dumb question, just curious :))

    • @Godsent_Prophet
      @Godsent_Prophet 22 วันที่ผ่านมา +1

      having a huge chain of elseif statements is incredibly inefficient and its a really bad thing to develop as a habit, utilizing tables makes things *way* easier and it's not as annoying to manage in the longrun

    • @willtogs
      @willtogs 22 วันที่ผ่านมา

      @@Godsent_Prophet I see, thanks!! I didnt consider that adding more rarities would very much inflate the code lol, thanks again

  • @CarbonMonoxide911
    @CarbonMonoxide911 18 วันที่ผ่านมา +3

    I'm no expert but in python id use randint to generate and intiger from 1-100 then put those values to be a random item (For example, if the intiger is 1-80 its commonn, if I get 81-90, its rare, etc.)

    • @tbwentmia
      @tbwentmia 13 วันที่ผ่านมา +1

      Yeah I was think the same thing

    • @pickleilyc
      @pickleilyc 10 วันที่ผ่านมา

      yea thats basically weightage, not sure why people are so confused on how to do this

  • @Therian4Life1573
    @Therian4Life1573 16 วันที่ผ่านมา

    I thought it was going to be simple and it was somehow even simpler than I anticipated... this is like, babies first coding class

  • @user-ox7ir1lu4y
    @user-ox7ir1lu4y 13 วันที่ผ่านมา

    orrr ‘hey chat gpt. make me a rarity system.’ or even better ‘teach me how to make a rarity system’

  • @petitcoke
    @petitcoke 10 วันที่ผ่านมา

    What software are you using to code this in?

    • @edmon974
      @edmon974 9 วันที่ผ่านมา

      This is Roblox studio, kinda self-explanatory

  • @emolingo_real
    @emolingo_real 25 วันที่ผ่านมา +13

    Being this early is criminial.. also ur vids r really good.. keep up the good work!!

    • @solidnywonsz
      @solidnywonsz 25 วันที่ผ่านมา

      not really

    • @emolingo_real
      @emolingo_real 25 วันที่ผ่านมา +1

      @@solidnywonsz oh

  • @yuu1583
    @yuu1583 25 วันที่ผ่านมา

    hey byte, I was thinking to buy your course but idk what I can learn and what I can do with your course, I'll be able like, to make a... simple game of combat, or maybe an advanced?

    • @byteblox100
      @byteblox100  25 วันที่ผ่านมา

      The other commenter has some legit points, but the course is basically just a way for beginners to get fully accustomed to the necessary parts of Roblox scripting (remotes, datastore, gui, etc).
      It’s there if you want to save time and get everything in one package instead of having to scout for tutorials. People say I misunderstand things but that’s only because my top videos have been somewhat rage bait lmao. The course itself is fully accurate

    • @flamescope9554
      @flamescope9554 24 วันที่ผ่านมา

      @@byteblox100 kinda unprofessional for you to respond this way. chefs are not really comparable because you're trying to teach how to script, not write a better script for them.

    • @byteblox100
      @byteblox100  24 วันที่ผ่านมา

      @@flamescope9554 TH-cam tutorials also aren’t trying to write better scripts. My point is that with a chef, you’re paying for the time it took them to make something that could give you value

    • @flamescope9554
      @flamescope9554 24 วันที่ผ่านมา

      @@byteblox100 Yeah thats my point, the chef isn't trying to teach you how to cook but your tutorials are trying to teach you how to script. (I was a bit unclear and I do understand your point I just thought the analogy with the chef wasn't all that comparable)

  • @dradekon
    @dradekon 25 วันที่ผ่านมา +7

    you are an inspiration byteblox

    • @byteblox100
      @byteblox100  25 วันที่ผ่านมา

      Thanks pookie 😘

  • @soulbounddoll1826
    @soulbounddoll1826 10 วันที่ผ่านมา

    Screw it, low tier items are ultra rare like a bee in alaska and high tier items are like rocks in a quarry.

  • @lunaticnomad0
    @lunaticnomad0 25 วันที่ผ่านมา

    Now I get why you think coding this is hard, and I agree.

  • @Bol93E
    @Bol93E 14 วันที่ผ่านมา

    1:21 ah yes ,common,undead ,twilight and archangel

  • @waterymonkey
    @waterymonkey 16 วันที่ผ่านมา

    i feel so intelligent after i correctly predicted what you did

  • @ogrum8456
    @ogrum8456 6 วันที่ผ่านมา

    I did this same code in 6 minutes using only 40 lines without watching the tutorial using only one script, and made it also go between multiple items in each rarity. Programming rarity is easier than you think.

    • @ogrum8456
      @ogrum8456 6 วันที่ผ่านมา

      OH and also I was too lazy to do a couple things that would make the code even shorter and more versatile

  • @mrpingouin5397
    @mrpingouin5397 3 วันที่ผ่านมา

    I am pretty sure that sols rng devs don't try to loop through 1 billion

  • @SheekyDev
    @SheekyDev 15 วันที่ผ่านมา

    Wait what? Adding rarities is hard? Man… I guess it is hard then… felt simple for me, but idk, maybe because I read a rarity thing a few years ago, and it’s just engrained in my mind now.

  • @TacoEric
    @TacoEric 24 วันที่ผ่านมา +1

    all you need is knowing basic statistics and use random numbers

  • @oniksfoks
    @oniksfoks 4 วันที่ผ่านมา

    on box open
    generate number 1-10
    case 1-5 common
    pick from common list
    case 6-8 rare
    pick from rare list
    case 9-10 legendary
    pick random from legendary list
    thank you very cool

  • @Benary-1
    @Benary-1 10 วันที่ผ่านมา

    what about just taking a random number, between 1-100, then if it is greater or equal to 100, it is legendary, elif it is greater or equal to 85 it is epic and so on?

  • @f_st
    @f_st 11 วันที่ผ่านมา +1

    5:53 - What happens if they do not sum up to 100?

  • @rocketpadgamer
    @rocketpadgamer 22 วันที่ผ่านมา

    I had to make an item that gives you one of 7 items with equal odds, plus one that has a 2% chance of spawning
    I did it by putting all of them except the rare item in a table, then I made a random number generator that picks a number from 1 to 100, if the result is above 98 then it picks the rare item, else it picks one of the random common items

  • @tummy3950
    @tummy3950 23 วันที่ผ่านมา +1

    Please make a tutorial on how to level up your Scriptingan
    I have been stuck on third tomoe for a year now

  • @Simo-dm1zd
    @Simo-dm1zd 24 วันที่ผ่านมา +3

    scripting a rarity system is easy tbh, the real difficulty is scripting a LUCK system inside the rarity one

    • @vyntax.mp3
      @vyntax.mp3 16 วันที่ผ่านมา +1

      depends how u want luck to work. personally the luck system that would make the most sense is by factors like if u have a rarity thats 25 and ur luck is 25 then that rarity becomes guaranteed and whatever the previous rarity is, is pretty much voided.

  • @eGasCode
    @eGasCode 25 วันที่ผ่านมา

    if i heard you right then this rarity technique is not precise and could be unfair (not sure tho) is there a way to perfectly sort the rarities so its always very precise the same and fair?

    • @byteblox100
      @byteblox100  25 วันที่ผ่านมา

      Technically you could make the table sorted by doing a number loop and then making a rarity table and going through the table using those numbers and then implement a system where the number is checked whether it’s in range of the allowed numbers and blah blah blah blah blah
      It would just be extra work for a system that’s effectively the same rarity system, albeit with more random steps

  • @Garbaige
    @Garbaige 25 วันที่ผ่านมา +4

    4 mins this time lol
    still good luck tho
    i dont even have notifications on
    i just hoped on my home page lol

  • @imoctavs
    @imoctavs 20 วันที่ผ่านมา

    Video title: programming rairity is harder than you think
    Video: *T A B L E S .*

  • @mysterious5224
    @mysterious5224 9 วันที่ผ่านมา

    This is overly complicating such a trivial matter for no reason

  • @kilex3471
    @kilex3471 25 วันที่ผ่านมา +10

    Ah he used chatgpt for this

    • @byteblox100
      @byteblox100  25 วันที่ผ่านมา +3

      No lmao, it was part of my course

    • @depravedsouls9975
      @depravedsouls9975 14 วันที่ผ่านมา

      Shit, I made an entire game based solely off chatgpt

    • @kilex3471
      @kilex3471 14 วันที่ผ่านมา

      @@depravedsouls9975 By based off you mean only using it right? if so then thats a completely viable option. chatgpt is very useful for that sort of stuff as long as you know a little bit about scripting, if you cant code at all you wouldnt be able to identify any errors or tell chatgpt what its problem was and how to fix it, i even use both chatgpt and the assistant. I find the assistant is amazingly good at bug fixing and optimizing code or doing tasks that chatgpt seems unable to do correctly since it can be completely stupid sometimes.

  • @alsoaspect
    @alsoaspect 24 วันที่ผ่านมา

    pls make an RNG game where the better rarity you have, the better you are than everyone, for example if you have a better rarity you might be faster or get weapons or maybe even admin powers

  • @6tobi6hana6
    @6tobi6hana6 22 วันที่ผ่านมา +1

    Can you do it by picking a number 1 to 100 and then like if number is 1 then return legendary and if the number is 2-20 it will return epic and so on?

    • @byteblox100
      @byteblox100  22 วันที่ผ่านมา +2

      Yeah, another option would just be to continually check if the number is less than 100, then less than 50, then less than 30, and so on. I do this exact system in my “1 hour game” video I believe

  • @Crab21181
    @Crab21181 15 วันที่ผ่านมา

    First, make a folder inside of serverstorage then name it "Things".
    Second, add a block thats institutional white called "Common" inside of the folder
    Third, add a block thats camo green called "Uncommon" inside of the folder
    Fourth, add a block thats electric blue called "Rare"
    Fifth, add a script inside of serverscriptservice and copy this script:
    while wait(1) do
    local chance = math.random(1,2)
    if chance == 1 then
    local block = game.ServerStorage.Things.Common
    end
    local chance = math.random(1,4)
    if chance == 1 then
    local block = game.ServerStorage.Things.Uncommon
    block.Parent = game.Workspace
    end
    local chance = math.random(1,16)
    if chance == 1 then
    local block = game.ServerStorage.Things.Rare
    block.Parent = game.Workspace
    end
    end
    Finally, you can now playtest your new working rarity system.

  • @polyneptic
    @polyneptic 17 วันที่ผ่านมา

    you don't need to make your rarity weights total up to 100, but instead just do math.random(1, [sum of all your weights]) for your random number instead of 1 - 100.

  • @maggogieraffe3296
    @maggogieraffe3296 25 วันที่ผ่านมา +1

    I have coded a rarity system after 1 year of programming lol on my own

  • @topsnag
    @topsnag 3 วันที่ผ่านมา

    Don’t know anything about scripting but this video was entertaining

  • @byrey3
    @byrey3 14 วันที่ผ่านมา

    Why don't you just check for the rarity weight alone??
    for rarity,weight in module.rarities do
    if randomNum

  • @marty2035
    @marty2035 25 วันที่ผ่านมา

    Once I made a Priority System to spawn ores. It worked pretty well.

    • @ReaISepiroth
      @ReaISepiroth 25 วันที่ผ่านมา

      rex reincarnated

    • @marty2035
      @marty2035 25 วันที่ผ่านมา

      @@ReaISepiroth Nah, the game isn't public.

  • @emmettdja
    @emmettdja 14 วันที่ผ่านมา

    I missed the part where this was supposed to be difficult

  • @admiralwastaken
    @admiralwastaken 25 วันที่ผ่านมา

    i hate it when my pets have spikes and machine guns attached to them, it happens every time

  • @DarkzoneDiamond
    @DarkzoneDiamond 25 วันที่ผ่านมา +5

    The system I would use would be something like:
    Local rarities = {
    Common = {prob = 1/2}
    Uncommon = {prob = 1/4}
    Rare = {prob = 1/8}
    }
    Local function getranditem(table)
    number = math.random()
    for i in pairs(table) do
    cumalprob = cumalprob + i.prob
    if number

    • @GumbiOfficial
      @GumbiOfficial 25 วันที่ผ่านมา

      eh, i do something similar.

    • @primitivecereal
      @primitivecereal 25 วันที่ผ่านมา +1

      homie didn’t even try with the syntax

    • @Noob-ot8rf
      @Noob-ot8rf 21 วันที่ผ่านมา

      this is almost exactly what i use

  • @danielmain1885
    @danielmain1885 11 วันที่ผ่านมา

    or you can do this
    if math.Random(1, your chance) == 1 then
    --what to do
    end

  • @Wyrmver
    @Wyrmver 24 วันที่ผ่านมา

    that feels kinda icky
    even tho you got a 1 on the random number you only have a 1/4 chance of actually getting the legendary

  • @Yulian_gt
    @Yulian_gt 7 วันที่ผ่านมา

    Just get a random generated number from 1 to 100 pick 1 number and done u got a 1% rarity

  • @treepert4155
    @treepert4155 14 วันที่ผ่านมา

    Me at 8th grade " so basicallly you can give me kitusne fruit right :D"

  • @Duck-up5tb
    @Duck-up5tb 25 วันที่ผ่านมา +4

    @byteblox100 you NEED to make a video on the _G function, it literally saves so much time and is so much easier to understand than module scripts!! Everyone get his attention on this

    • @mageninjaballer1449
      @mageninjaballer1449 20 วันที่ผ่านมา

      it’s basically like, get everything. So _G.Part
      Op fr

  • @l2v498
    @l2v498 17 วันที่ผ่านมา

    bro summarized sols rng's code in one vid

  • @Breuhh
    @Breuhh 16 วันที่ผ่านมา

    But how do you make luck potions? What even does luck

  • @breadbeee
    @breadbeee 25 วันที่ผ่านมา +1

    i just use a wheel system with a table lol

  • @AtomicApple-lk9gm
    @AtomicApple-lk9gm 19 วันที่ผ่านมา

    Sols rng lore:

  • @EaZea
    @EaZea 17 วันที่ผ่านมา +1

    As someone who has made my yeah rng game I can tell you that you’re making it sound a lot harder than it actually is lol
    The only mistake I’d actually watch out for is floating point precision stuff when the rarities are low. That’s when I ran into issues myself.
    Anyway it’s literally just simple math but you yapped for views

    • @vyntax.mp3
      @vyntax.mp3 16 วันที่ผ่านมา

      have you tested it with numbers that go up to 1e308? How are you doing luck system for yours?

    • @EaZea
      @EaZea 12 วันที่ผ่านมา +1

      @@vyntax.mp3 i add up all the probabilities and then they roll a random number between 0 and the sum. the luck works by the sum minus the number they rolled by 1 minus the luck value and adding that onto their original roll

  • @user-cb2ne4si6x
    @user-cb2ne4si6x 21 วันที่ผ่านมา

    What does AAA game mean?
    Does it mean that when someone gets good stuff they say “AAAAAAAAAAAA!!!!!!!”?

  • @OrganicMilkGang
    @OrganicMilkGang 11 วันที่ผ่านมา

    for me rarity was kinda easy but everyone has their own problems