Welcome to Keen Software House Forums! Log in or Sign up to interact with the KSH community.
  1. You are currently browsing our forum as a guest. Create your own forum account to access all forum functionality.

Ore Rarity. One ore more rare than the next ore.

Discussion in 'Suggestions and Feedback' started by vasvadum, Feb 11, 2015.

Thread Status:
This last post in this thread was made more than 31 days old.
  1. vasvadum Apprentice Engineer

    Messages:
    380
    I want to be able to set an ore to be more rare than another. It seems that the game only uses a boolean for making an item rare. This is a relatively simple idea really. Just being able to specify how rare something is would be nice. It is rather annoying that I can't make one of my ores more rare than the other, so people think it's useless that my mod includes two types of blocks that use different ores, one supposedly harder to get when it actually appears more often than the other one for some reason.

    Anyway. Take out the Boolean, and replace it with a percentage. Maybe 0 to 1, or maybe 0 to 100. Decimals included.


    EDIT: 2/11/15 - More advanced idea. Better detail here.

    Code:
      <VoxelMaterial>
      <Id>
      <TypeId>VoxelMaterialDefinition</TypeId>
      <SubtypeId>Iron_01</SubtypeId>
      </Id> 
      <MinedOre>Iron</MinedOre>
      <MinedOreRatio>1</MinedOreRatio>
      <CanBeHarvested>true</CanBeHarvested>
      <Abundance>0.9</Abundance> <!-- 90% abundance, this means that it is 90% of the asteroid and all of the moons around it. -->
      <ChanceSkipAsteroid>0.05</ChanceSkipAsteroid> <!-- 5% chance to skip generating in the next main asteroid and all of it's moons. -->
      <MixedOres>True</MixedOres> <!-- This ore will mix with others, can be found within, beside, around, another ore. -->
      <SplitThisOre>True</SplitThisOre> <!-- Forces the game to split this ore apart into at least 5 chunks found throughout the asteroid. -->
      <IsIndestructible>false</IsIndestructible>
      <DamageRatio>0.4</DamageRatio>
      <DiffuseXZ>Textures\Voxels\Iron_01_ForAxisXZ_de.dds</DiffuseXZ>
      <NormalXZ>Textures\Voxels\Iron_01_ForAxisXZ_ns.dds</NormalXZ>
      <SpecularPower>24</SpecularPower>
      <SpecularShininess>0.498</SpecularShininess>
      </VoxelMaterial>
    
    Let me explain my 4 new functions.
    <Abundance>Integer</Abundance> (0 to 1) - This definces how rare an ore is in each asteroid. If you set it to 1% (0.01), then 1% of each asteroid will have this material. This counts the moons, all moons are part of the main asteroid when calculating.

    <ChanceSkipAsteroid>Integer</ChanceSkipAsteroid> (0 - 1) - This value defines the chances of the asteroid actually containing the resource. If you set this to 99% (0.99), then there is only a 1% chance that it will spawn in this asteroid. Moons are part of the calculation. If calculation skips, it will not put this resource in the main or the moons of that asteroid. I'm thinking we might rename this to "<ChancePerAsteroid>" to invert my calculation. Meaning if you put 1% (0.01), then you will have a 1% chance it will spawn.

    <MixedOres>Boolean</MixedOres> (True/False) - This specifies if the ore can be mixed in with others. This means two ores can essentially spawn together, mixed with each other. Perhaps this may even disrupt scans and you get a "Mixed Ores" scan instead of "Iron" "Gold" on your hud. Just speculation on an idea for it. Anyway. This adds a bit more realism with the chance of your ore being mixed with another. Not really required, but an optional suggestion I was hoping the devs might consider. At very least I want the above two.

    <SplitThisOre>Boolean</SplitThisOre> (True/False) - This specifies if the algorithm should split the ore up if. I've noticed that sometimes in an asteroid, you find one and only one chunk. One big massive chunk. This will tell the game to split this ore up into at minimum 5 pieces throughout the asteroid, so you'll have 5 randomly placed chunks, at minimum. Perhaps they can add other rules too, each chunk having only a specific amount of resource, so if say you had 200,000 iron, and the value is set to True, it would split it up 5 ways making it 40,000 per chunk. But what if the game has another limit, saying only 20,000 allowed per chunk, in the event that "SplitThisOre" is set to true? That would mean it needs to split this ore up more, making 10 chunks total. This is just an example, wasn't using actual values. :p Another sort of optional value I was hoping the devs might consider.

    <ScannerDifficulty>Integer</ScannerDifficulty> (0 to 1) - This is a percentage value, that determines how hard it is for your scanner to pick up this ore. The lower the value, the closer you have to be to pick it up on your scanners. 0.01 means that you have to be extremely close to see this ore on scanners. 1 means normal scan range. 0 means no scanner can pick it up.
     
    Last edited: Sep 20, 2016
  2. Malware Master Engineer

    Messages:
    9,625
    I agree, with one addition: The rareness should be adjusted in the vanilla game as well. It is simply too easy to find everything I need. I don't really need to travel much.

    Although we would need an improved ore detector for this as well, or even better, an easier way to create small-ship drones we can send out in various directions. The current small-ship antenna is simply not powerful enough and creating it in large-ship form is way too expensive. The sensor is too restricted as well, it's not easy to auto-break in time when detecting an obstruction.
     
  3. chemicalscum Apprentice Engineer

    Messages:
    318
    This would be nice. Some ores are far too common. Especially uranium. Once you find a spot, then the energy challenge is completely gone.
     
  4. dantirya Trainee Engineer

    Messages:
    3
    I agree, heavy metals should be harder to find.
     
  5. Wintersend Senior Engineer

    Messages:
    2,095
    I think you should be able to set the sparsity as well. All the way from having one or more very rare, once in a hundred asteroids, all the way up to where it originally was where you could find a bit of everything in most if not all roids. So you can set it to the former if you want a big server where you have big battles over the one or two discovered spots for say, uranium, and have vast swaths of territory claimed by various factions. Or you can set it to the later for a survival mode deathmatch type thing. So you can get to the battle fairly quickly but you still need to do things like take into account the time and resources needed to build and repair.
     
  6. WhiteWeasel Senior Engineer

    Messages:
    1,086
    While this is going a little out of scope for your suggestion, I wish there were asteroid types with different levels of rarity for the minerals in them based on their type. Such as M-types being rich in heavy/precious metals while S-types are rich in silicon and magnesium and etc...
     
  7. vasvadum Apprentice Engineer

    Messages:
    380
    I think rareness takes care of this. If an ore is only 5%, meaning it is 95% unavailable throughout the universe, there is already a chance you won't see it in many asteroids. I'm not exactly sure how the algorithm works though. So I'll refine my idea a bit. Interestingly, I found out that Iron is defined as a rare resource too.

    Original Game Code (Because this forum blows and couldn't use
    Code:
    
    
    Code:
        &lt;VoxelMaterial>
        &lt;Id>
            &lt;TypeId>VoxelMaterialDefinition&lt;/TypeId>
            &lt;SubtypeId>Iron_01&lt;/SubtypeId>
          &lt;/Id>    
          &lt;MinedOre>Iron&lt;/MinedOre>
          &lt;MinedOreRatio>1&lt;/MinedOreRatio>
          &lt;CanBeHarvested>true&lt;/CanBeHarvested>
          &lt;IsRare>true&lt;/IsRare> &lt;!-- Doesn't do anything whatsoever -->
          &lt;IsIndestructible>false&lt;/IsIndestructible>
          &lt;DamageRatio>0.4&lt;/DamageRatio>
          &lt;DiffuseXZ>Textures\Voxels\Iron_01_ForAxisXZ_de.dds&lt;/DiffuseXZ>
        &lt;NormalXZ>Textures\Voxels\Iron_01_ForAxisXZ_ns.dds&lt;/NormalXZ>
          &lt;SpecularPower>24&lt;/SpecularPower>
          &lt;SpecularShininess>0.498&lt;/SpecularShininess>
        &lt;/VoxelMaterial>
        &lt;VoxelMaterial>
        &lt;Id>
            &lt;TypeId>VoxelMaterialDefinition&lt;/TypeId>
            &lt;SubtypeId>Gold_01&lt;/SubtypeId>
          &lt;/Id>      
          &lt;MinedOre>Gold&lt;/MinedOre>
          &lt;MinedOreRatio>0.7&lt;/MinedOreRatio>
          &lt;CanBeHarvested>true&lt;/CanBeHarvested>
          &lt;IsRare>true&lt;/IsRare> &lt;!-- Doesn't do anything whatsoever -->
          &lt;IsIndestructible>false&lt;/IsIndestructible>
          &lt;DamageRatio>1&lt;/DamageRatio>
          &lt;DiffuseXZ>Textures\Voxels\Gold_01_ForAxisXZ_de.dds&lt;/DiffuseXZ>
        &lt;NormalXZ>Textures\Voxels\Gold_01_ForAxisXZ_ns.dds&lt;/NormalXZ>
          &lt;SpecularPower>9&lt;/SpecularPower>
          &lt;SpecularShininess>1.435&lt;/SpecularShininess>
        &lt;/VoxelMaterial>
    
    My version, realistic / correct.
    Code:
        &lt;VoxelMaterial>
        &lt;Id>
            &lt;TypeId>VoxelMaterialDefinition&lt;/TypeId>
            &lt;SubtypeId>Iron_01&lt;/SubtypeId>
          &lt;/Id>    
          &lt;MinedOre>Iron&lt;/MinedOre>
          &lt;MinedOreRatio>1&lt;/MinedOreRatio>
          &lt;CanBeHarvested>true&lt;/CanBeHarvested>
          &lt;Abundance>0.9&lt;/Abundance> &lt;!-- 90% abundance, this means that it is 90% of the asteroid and all of the moons around it. -->
          &lt;ChanceSkipAsteroid>0.05&lt;/ChanceSkipAsteroid> &lt;!-- 5% chance to skip generating in the next main asteroid and all of it's moons. -->
          &lt;MixedOres>True&lt;/MixedOres> &lt;!-- This ore will mix with others, can be found within, beside, around, another ore. -->
          &lt;SplitThisOre>True&lt;/SplitThisOre> &lt;!-- Forces the game to split this ore apart into at least 5 chunks found throughout the asteroid. -->
          &lt;IsIndestructible>false&lt;/IsIndestructible>
          &lt;DamageRatio>0.4&lt;/DamageRatio>
          &lt;DiffuseXZ>Textures\Voxels\Iron_01_ForAxisXZ_de.dds&lt;/DiffuseXZ>
        &lt;NormalXZ>Textures\Voxels\Iron_01_ForAxisXZ_ns.dds&lt;/NormalXZ>
          &lt;SpecularPower>24&lt;/SpecularPower>
          &lt;SpecularShininess>0.498&lt;/SpecularShininess>
        &lt;/VoxelMaterial>
        &lt;VoxelMaterial>
        &lt;Id>
            &lt;TypeId>VoxelMaterialDefinition&lt;/TypeId>
            &lt;SubtypeId>Gold_01&lt;/SubtypeId>
          &lt;/Id>      
          &lt;MinedOre>Gold&lt;/MinedOre>
          &lt;MinedOreRatio>0.7&lt;/MinedOreRatio>
          &lt;CanBeHarvested>true&lt;/CanBeHarvested>
          &lt;Abundance>0.1&lt;/Abundance> &lt;!-- 10% abundance, this means that it is 10% of the asteroid and all of the moons around it. -->
          &lt;ChanceSkipAsteroid>0.75&lt;/ChanceSkipAsteroid> &lt;!-- 75% chance to skip generating in the next main asteroid and all of it's moons. -->
          &lt;MixedOres>True&lt;/MixedOres> &lt;!-- This ore will mix with others, can be found within, beside, around, another ore. -->
          &lt;SplitThisOre>True&lt;/SplitThisOre> &lt;!-- Forces the game to split this ore apart into at least 5 chunks found throughout the asteroid. -->
          &lt;IsIndestructible>false&lt;/IsIndestructible>
          &lt;DamageRatio>1&lt;/DamageRatio>
          &lt;DiffuseXZ>Textures\Voxels\Gold_01_ForAxisXZ_de.dds&lt;/DiffuseXZ>
        &lt;NormalXZ>Textures\Voxels\Gold_01_ForAxisXZ_ns.dds&lt;/NormalXZ>
          &lt;SpecularPower>9&lt;/SpecularPower>
          &lt;SpecularShininess>1.435&lt;/SpecularShininess>
        &lt;/VoxelMaterial>
    
    Let me explain my 4 new functions.
    &lt;Abundance>Integer&lt;/Abundance> (0 to 1) - This definces how rare an ore is in each asteroid. If you set it to 1% (0.01), then 1% of each asteroid will have this material. This counts the moons, all moons are part of the main asteroid when calculating.

    &lt;ChanceSkipAsteroid>Integer&lt;/ChanceSkipAsteroid> (0 - 1) - This value defines the chances of the asteroid actually containing the resource. If you set this to 99% (0.99), then there is only a 1% chance that it will spawn in this asteroid. Moons are part of the calculation. If calculation skips, it will not put this resource in the main or the moons of that asteroid. I'm thinking we might rename this to "&lt;ChancePerAsteroid>" to invert my calculation. Meaning if you put 1% (0.01), then you will have a 1% chance it will spawn.


    &lt;MixedOres>Boolean&lt;/MixedOres> (True/False) - This specifies if the ore can be mixed in with others. This means two ores can essentially spawn together, mixed with each other. Perhaps this may even disrupt scans and you get a "Mixed Ores" scan instead of "Iron" "Gold" on your hud. Just speculation on an idea for it. Anyway. This adds a bit more realism with the chance of your ore being mixed with another. Not really required, but an optional suggestion I was hoping the devs might consider. At very least I want the above two.

    &lt;SplitThisOre>Boolean&lt;/SplitThisOre> (True/False) - This specifies if the algorithm should split the ore up if. I've noticed that sometimes in an asteroid, you find one and only one chunk. One big massive chunk. This will tell the game to split this ore up into at minimum 5 pieces throughout the asteroid, so you'll have 5 randomly placed chunks, at minimum. Perhaps they can add other rules too, each chunk having only a specific amount of resource, so if say you had 200,000 iron, and the value is set to True, it would split it up 5 ways making it 40,000 per chunk. But what if the game has another limit, saying only 20,000 allowed per chunk, in the event that "SplitThisOre" is set to true? That would mean it needs to split this ore up more, making 10 chunks total. This is just an example, wasn't using actual values. :p Another sort of optional value I was hoping the devs might consider.
     
    Last edited by a moderator: Feb 12, 2015
  8. vasvadum Apprentice Engineer

    Messages:
    380
    Just a note, I have added another new thing to the topic main post.

    &lt;ScannerDifficulty>Integer&lt;/ScannerDifficulty> (0 to 1) - This is a percentage value, that determines how hard it is for your scanner to pick up this ore. The lower the value, the closer you have to be to pick it up on your scanners. 0.01 means that you have to be extremely close to see this ore on scanners. 1 means normal scan range. 0 means no scanner can pick it up.

    Another thing that could be added to the ore for more configuration.
     
  9. dantirya Trainee Engineer

    Messages:
    3
    I think Abundance, ChanceSkipAsteroid, and ScannerDifficulty should be floats instead of integers.
     
  10. dantirya Trainee Engineer

    Messages:
    3
    I believe Abundance, ChanceSkipAsteroid, and ScannerDifficulty should be floats instead of integers to do probability percentages.
     
  11. Hatchie Apprentice Engineer

    Messages:
    194
    Agreed with one addition: &lt;AbundanceSigma> ... Because add some randomness if you wish so.
     
  12. vasvadum Apprentice Engineer

    Messages:
    380
    Sigma? What's the point of that?
     
  13. mikeloeven Senior Engineer

    Messages:
    1,162
    The rarity of elements is relative to the environment. In fact one of the reasons some asteroid mining has been proposed is because of the extreme abundance of rare elements not found in the earth's crust.

    I found this little blurb to be interesting
    http://web.mit.edu/12.000/www/m2016/finalwebsite/solutions/asteroids.html

    Things like gold silver and platinum are really not that rare in an asteroid field provided that you would have the equipment to detect the veins of ore you want.
     
    Last edited by a moderator: Feb 18, 2015
  14. vasvadum Apprentice Engineer

    Messages:
    380
    What is this even supposed to mean? This has nothing to do with my idea whatsoever. The idea, is to make it so we can change rareness, ourselves. I don't want a static value for every resource in the game. I don't want every asteroid in the game to have 20% this, 20% that, 40% that, 20% that too.

    Also, my values would be based on the periodic table of elements. Which goes by the abundance of the universe based on atomic weight if I remember right. Not just what's found on earth.
     
  15. KingdomBragg Junior Engineer

    Messages:
    544
  16. vasvadum Apprentice Engineer

    Messages:
    380
    Ah, that's pretty neat. Something Keen should have added by default. :p But then, there's a lot of things that people have done that should be in the game by default too so. :p
     
  17. Maegil Senior Engineer

    Messages:
    1,633
    This, most certainly. We should be throwing out refinery silicon-rich slag, not "stone".
     
  18. vasvadum Apprentice Engineer

    Messages:
    380
    Well, we can fix all this later. This suggestion is directly related to trying to get more options into the file to make ores more or less rare than others. The game certainly needs better asteroid generation.
     
  19. Maegil Senior Engineer

    Messages:
    1,633
    Fully agreed, opinion subscribed, supported and upheld. +8 lying down!
     
  20. Geneticus Senior Engineer

    Messages:
    1,618
    I did a little poking around and there has to be part of the equation missing. Since some Ores have a much lower spawn than others the boolean flag is not all there is(or isn't actually used).
    Considering the fact that there are several(4?) Stone materials(Plus the stone wrapper on all asteroids) and 2 Iron ones, it makes sense that you would see stone everywhere and Iron after that. What doesn't make sense is that gold would be more rare than another material which is also flagged as rare and has only one material definition.

    Of course that assumes that the Ore spawn rates on the Wiki are up to date with the procedural addition.

    If they did away with the missing rarity variable in the procedural update, then decreasing an ore like Gold would be accomplished by increasing the number of "rare" materials. they could be new materials, or copies of existing ones with new names (Silicon_02). The predicted result would be that Silicon would then have 2x chance of spawning in either variation, and the remaining materials would have a slightly lesser chance of spawning with less of an effect on non-rare materials.

    If we had a large enough sample size of Ore spawn rates in Procedural asteroids we(someone with better math skills than I) could extrapolate the algorithm and then be able to predict the resulting distribution when new or variant ores are added)

    My gut tells me the distribution is equal to all ores now (save stone wrappers) and the boolean is a hold over from the old static generation method(i.e. ignored). My reasoning on this is due to having added 12 new materials in the game and they all seem to spawn about the same rate regardless of the rare tag setting and there is no other setting on these to account for spawn rate.
    It has been suggested elsewhere that the rarity tag controls the detection rate, which is not correct. The detection rate as stated by Phand is dependant on the volume of material in an asteroid. Ores that don't show on the detector are under a certain percentage.

    For clarity sake we'll assume there are 10 ores in the game. If 4 are stone and 2 are Iron.
    The distribution would look like this:
    • 50% Stone
    • 20% Iron
    • 10% Gold
    • 10% Platinum
    • 10% Uranium
    Adding 5 more ores ore would change the distribution to:
    • 26% Stone
    • 13% Iron
    • 6% Gold
    • 6% Platinum
    • 6% Uranium
    • 6% Silicon
    • 6% Cobalt
    • 6% Nickel
    • 6% Silver
    • 6% Magnesium
    • 6% Fruits
    • 6% Vegetables
    • 6% Dairy
    Adding a second Silicon would produce:
    • 25% Stone
    • 12.5% Iron
    • 5% Gold
    • 5% Platinum
    • 6% Uranium
    • 12.5% Silicon
    • 5% Cobalt
    • 5% Nickel
    • 5% Silver
    • 5% Magnesium
    • 5% Meat
    • 5% Vegetables
    • 5% Dairy
    I do think scanner sensitivity should be a slider setting, but I don't see how setting the spawn rate at the asteroid level is useful when 99.999% of all asteroids are procedurally generated. The distributions are not per asteroid, they are per world. The most non-Stone or non-Iron I have seen in a roid is 4 rares.

    If you really need an asteroid with a particular mix of resources, you can always load an older version of SE (01.049) onto a second computer, then modify the roid with an equivalent version of SE Toolbox, then load it back into a current patch save to create a vx2 asteroid. Or use Voxel Hands.
     
    Last edited by a moderator: Feb 24, 2015
  21. vasvadum Apprentice Engineer

    Messages:
    380
    I don't need an asteroid with a particular mix of resources. I want procedurally generated asteroids to let you specify how much and how rare a substance is. Rather than this stupid static equation that's used now. The game will spawn an asteroid, and upon creating that asteroid, it will check the rare levels and all the other values.

    &lt;Abundance>0.7&lt;/Abundance> -- Well I'm not sure with this right now, because it doesn't make sense to say that an object is 70% of the universe. I need to find a way to justify how rare something is on a scale of 0 to 100. So say something has an abundance of 70 (0.7), that means it is a very common material. Found everywhere, like stone.
    &lt;ChanceSkipAsteroid>0.2&lt;/ChanceSkipAsteroid> = If I specify this to be 0.2, that means there is a 20% chance, the asteroid being spawned by the procedural system, will skip placing this ore inside that asteroid.
    &lt;MixedOres>True&lt;/MixedOres> = If I specify this, then two ores will spawn in the same location, mixing their textures together while giving the player either "mixed ore" or just outputs a random ore from both, or outputs an even amount of both ores when mining. This lets you combine two or more ores into the same pocket when mining.
    &lt;SplitThisOre>True&lt;/SplitThisOre> = If I specify this, then the asteroid generator will be required to place this ore in 5 or more chunks minimum. Not touching each other, or at least it will try it's best to do this. I want this, because currently the asteroid generator seems to generate asteroids in giant wads. I've had one massive chunk of gold, then after that, a huge huge layer of iron, then the rest of the entire asteroid was stone.
    &lt;ScannerDifficulty>0.3&lt;/ScannerDifficulty> = This makes it so that your scanners are only 30% effective at detecting this ore, and need to be 70% closer to see it. If I change this to 1.3, then it would make your scanners 30% more effective at seeing it, and can see it 30% further away.

    Anyway, the rareness thing definately needs to change. I'm not adding one new ore per ore just to make something even more rare. I want to be able to set it so that Zinc spawns more rarely and in smaller amounts than Lithium, or Gold spawns in more rare amounts than Uranium. That's the point of this topic. The first value of &lt;Abundance> may need to be renamed or changed to rareness scale or something. Not sure at this exact moment what to change it to.
     
  22. Geneticus Senior Engineer

    Messages:
    1,618
    Once you know the spawn ratio you can control the amount of ore by changing the amount harvested per stone generated or by the amount required to make an ingot. That's more realistic anyway because you rarely find gold in nuggets. Gold ore is 99% not gold, but massive quantities of ore processed yield useful amounts. The end result you want is already doable, whether or not you like it is a different matter entirely.
     
  23. Weak1ings Trainee Engineer

    Messages:
    34
    They should make the rudimentary basics common and plentiful and add more ores like Titanium in addition to existing ones.
    Perhaps a tiered system would be appropriate. The common materials are used for heavy and fairly weak components but can be upgraded with (like Titanium plate for armor block) to more powerful versions. Like a Gatling gun shoots 25% faster or a assembler builds 25% faster. Thrust provides more thrust etc.

    That way, in a PVP or PVE setting the players can, by exploring, make even their tiny ships better than just pirating vessels for components. You can only use so much steel but Titanium...

    How about gases, for say a Fusion reactor; the Ultimate type of reactor (3x3x2) or Helium so you can store stuff in oxygen filled environments without shelves.
    Carbon? Nano-tubes? Plant-life
    Not to mention planets someday...
    The possibilities are endless and would add so much more reason to get out there and explore!
     
Thread Status:
This last post in this thread was made more than 31 days old.