October 27th - Caves

Discussion in 'Dev Blog' started by metadept, Oct 27, 2014.

  1. WorkHorse

    WorkHorse Subatomic Cosmonaut

    Awesome! It's cool to get a high level perspective on how you are implementing this.
     
  2. ODSTNICK

    ODSTNICK Big Damn Hero

    the bright colors makes me feel dizzy:rainbowbarf:
     
    The Squid likes this.
  3. The Squid

    The Squid Oxygen Tank

    Yay more caves! One time I was on a planet and I dug straight down for seemingly hours (2 minutes) before finding anything.
     
  4. Khalietal

    Khalietal Void-Bound Voyager

    I was thinking about my digging habits when I play and that is what came out of my tinkering:

    So is the generation of the solid layer all pre-made before the cave generation? If so, that means a lot more air space underground, so a lot of lost resources to dig out per square Cube-o-meter right?
    A lot more exploration for sure is cool.

    Resources could be sticking to the background too then to mitigate some of the miles to cover for lost solid ground?
    Like a nice copper vein cut in half by a cave and the rest of that veins carry on the background tiles, still there for the taking. It is a complex suggestion but with a pretty cool and functional result. After all, the world is played in 2d, but it sure would give the underground design some more depth too.

    I really like the new algorithm for the caves! Great job at applying Mathematics to games :)

    That would be great to know from you Metadept what you think of it.
    From everybody else too for that matter.
     
    Tamorr likes this.
  5. Aer_

    Aer_ Scruffy Nerf-Herder

    i think you should varied algorithm of underground between planets, because traversing similar algorithm shape can make people bored, and it is more interesting if some algorithm linked to type of biome, giving biome unique danger and traversing method
     
    Tamorr and Unclever title like this.
  6. GorunNova

    GorunNova Pangalactic Porcupine

    THIS would be a neat feature - the ability for it to place ores and such in the background layer too. ^^
     
    Tamorr and Seburo like this.
  7. Dende

    Dende Giant Laser Beams

    Have you also thought of having cave levels being different on planets. I.E. one planet may have a crazy amount of cave labryths similar to what would almost feel too much. And another might have a low quantity, while most have that sweet spot middle?
     
    Britefire likes this.
  8. selfademus

    selfademus Aquatic Astronaut

    This could be the best game of all time.
     
  9. ThaOneDon

    ThaOneDon Parsec Taste Tester

    This is why i love Starbound.
     
  10. Aegis J Hyena

    Aegis J Hyena Existential Complex

    From the images, I kinda think there's such a thing as too -many- caves. It might just be me though.

    I agree on the one poster above, stick some very valuable ore right up against the lava layer, or have to place blocks in the lava and "tunnel" deeper to get to it somehow.

    I also think there should be the potential for an uber-meteor remnant on the surface that opens into a bunch of caves. A giant depression/dino killer meteor impact...
     
  11. Golemonium

    Golemonium Void-Bound Voyager

    Great cavegeneration system, now FILL IT WITH INTERESTING STUFF >:3 Lots and lots of interesting stuff. Tons of it. So there's a reason to dig there! Terraria did it quite nice with the layers, there was always a point to get digging - loot, enemies, even hell. IT might be me, but building -smoking good- hellevators was always a huge delight for me and my servermates. But! Since Starbound isn't all about digging and more about exploring, could we, possibly, get ourselves more ways to dig? Dig massively and speedily, like a good bunch of space explorers. Please, don't let Starbound become another game about digging! It will make occasional rants (like mine) appear!
     
  12. ShockMonkey

    ShockMonkey Void-Bound Voyager

    Lower the rate of enemy encounters, mob encounter to be more precise, it ruins immersion. Between that second picture with regular shaped caves is best.
     
  13. DaPhoenyx

    DaPhoenyx Void-Bound Voyager

    Thanks for that, very interesting !
     
  14. Silver200x

    Silver200x Subatomic Cosmonaut

    Looks Great , Nice work Guys!! i have no idea how to create content, I would love a boat and surfboard!! and beach house materials! , for ocean biome !!
     
  15. Titanium

    Titanium Existential Complex

    have you accepted metadept as your lord and savior
     
  16. Shoehead

    Shoehead Turbonerd of Scaremonies

    Holy crap Met!
     
  17. Kawa

    Kawa Tiy's Beard

    Today's diffs (HI NEURO):
    Code:
    FILES
    -----
    biomes\distributions.config
    [NEW] damage\sawblade.damage
    dungeons\human\humanprison\humanprison.dungeon
    dungeons\microdungeons\platforming\iceplatforming\iceplatforming.dungeon
    interface\statuses\cold.png
    interface\statuses\glow.png
    interface\statuses\heal.png
    interface\statuses\invisible.png
    interface\statuses\irradiated.png
    interface\statuses\jumpboost.png
    interface\statuses\runboost.png
    [NEW] items\armors\biome\eyepatch\eyeball\bsleeve.png
    [NEW] items\armors\biome\eyepatch\eyeball\chest.png
    [NEW] items\armors\biome\eyepatch\eyeball\eyeball.chest
    [NEW] items\armors\biome\eyepatch\eyeball\eyeball.head
    [NEW] items\armors\biome\eyepatch\eyeball\eyeball.legs
    [NEW] items\armors\biome\eyepatch\eyeball\fsleeve.png
    [NEW] items\armors\biome\eyepatch\eyeball\head.png
    [NEW] items\armors\biome\eyepatch\eyeball\headicon.png
    [NEW] items\armors\biome\eyepatch\eyeball\icons.png
    [NEW] items\armors\biome\eyepatch\eyeball\mask.png
    [NEW] items\armors\biome\eyepatch\eyeball\pants.png
    [NEW] items\generic\crafting\ancientbones.item
    [NEW] items\guns\biome\eyestalk\eyeblaster\eyeblaster.frames
    [NEW] items\guns\biome\eyestalk\eyeblaster\eyeblaster.gun
    [NEW] items\guns\biome\eyestalk\eyeblaster\eyeblaster.png
    [NEW] items\guns\biome\eyestalk\eyeblaster\icon.png
    objects\avian\propeller\propeller.object
    [NEW] objects\avian\propeller\propellerleft.frames
    [NEW] objects\avian\propeller\propellerleft.png
    [NEW] objects\avian\propeller\propellerright.frames
    [NEW] objects\avian\propeller\propellerright.png
    [NEW] objects\avian\propeller\propellertop.frames
    [NEW] objects\avian\propeller\propellertop.png
    objects\avian\sawblade\sawblade.object
    [NEW] objects\obstacles\ice\icespike\icespike.object
    [NEW] objects\obstacles\ice\icespike\icespikebottom.frames
    [NEW] objects\obstacles\ice\icespike\icespikebottom.png
    [NEW] objects\obstacles\ice\icespike\icespikeicon.png
    [NEW] objects\obstacles\ice\icespike\icespikeleft.frames
    [NEW] objects\obstacles\ice\icespike\icespikeleft.png
    [NEW] objects\obstacles\ice\icespike\icespikeright.frames
    [NEW] objects\obstacles\ice\icespike\icespikeright.png
    [NEW] objects\obstacles\ice\icespike\icespiketop.frames
    [NEW] objects\obstacles\ice\icespike\icespiketop.png
    [NEW] objects\obstacles\ice\icestalactite1\ceilingicon.png
    [NEW] objects\obstacles\ice\icestalactite1\icestalactite1.frames
    [NEW] objects\obstacles\ice\icestalactite1\icestalactite1.object
    [NEW] objects\obstacles\ice\icestalactite1\icestalactite1.png
    [NEW] objects\obstacles\ice\icestalactite2\ceilingicon.png
    [NEW] objects\obstacles\ice\icestalactite2\icestalactite2.frames
    [NEW] objects\obstacles\ice\icestalactite2\icestalactite2.object
    [NEW] objects\obstacles\ice\icestalactite2\icestalactite2.png
    [NEW] objects\obstacles\ice\icestalactite3\ceilingicon.png
    [NEW] objects\obstacles\ice\icestalactite3\icestalactite3.frames
    [NEW] objects\obstacles\ice\icestalactite3\icestalactite3.object
    [NEW] objects\obstacles\ice\icestalactite3\icestalactite3.png
    [NEW] objects\obstacles\ice\icestalactite4\ceilingicon.png
    [NEW] objects\obstacles\ice\icestalactite4\icestalactite4.frames
    [NEW] objects\obstacles\ice\icestalactite4\icestalactite4.object
    [NEW] objects\obstacles\ice\icestalactite4\icestalactite4.png
    objects\wired\shieldgenerator\shieldgenerator.lua
    [NEW] plants\bushes\groundocean\seabush\cone1.png
    [NEW] plants\bushes\groundocean\seabush\cone2.png
    [NEW] plants\bushes\groundocean\seabush\cone3.png
    [NEW] plants\bushes\groundocean\seabush\cone4.png
    [NEW] plants\bushes\groundocean\seabush\cone5.png
    [NEW] plants\bushes\groundocean\seabush\coral1.png
    [NEW] plants\bushes\groundocean\seabush\coral2.png
    [NEW] plants\bushes\groundocean\seabush\coral3.png
    [NEW] plants\bushes\groundocean\seabush\coral4.png
    [NEW] plants\bushes\groundocean\seabush\coral5.png
    [NEW] plants\bushes\groundocean\seabush\oshroom1.png
    [NEW] plants\bushes\groundocean\seabush\oshroom2.png
    [NEW] plants\bushes\groundocean\seabush\oshroom3.png
    [NEW] plants\bushes\groundocean\seabush\oshroom4.png
    [NEW] plants\bushes\groundocean\seabush\oshroom5.png
    [NEW] plants\bushes\groundocean\seabush\seagrass1.png
    [NEW] plants\bushes\groundocean\seabush\seagrass2.png
    [NEW] plants\bushes\groundocean\seabush\seagrass3.png
    [NEW] plants\bushes\groundocean\seabush\seagrass4.png
    [NEW] plants\bushes\groundocean\seabush\seagrass5.png
    [NEW] plants\bushes\groundocean\seabush\seaweed1.png
    [NEW] plants\bushes\groundocean\seabush\seaweed2.png
    [NEW] plants\bushes\groundocean\seabush\seaweed3.png
    [NEW] plants\bushes\groundocean\seabush\seaweed4.png
    [NEW] plants\bushes\groundocean\seabush\seaweed5.png
    [NEW] plants\trees\seatrees\foliage\bubbles\basefoliage1.png
    [NEW] plants\trees\seatrees\foliage\bubbles\basefoliage2.png
    [NEW] plants\trees\seatrees\foliage\bubbles\basefoliage3.png
    [NEW] plants\trees\seatrees\foliage\bubbles\basefoliage4.png
    [NEW] plants\trees\seatrees\foliage\bubbles\crownfoliage1.png
    [NEW] plants\trees\seatrees\foliage\bubbles\crownfoliage2.png
    [NEW] plants\trees\seatrees\foliage\bubbles\crownfoliage3.png
    [NEW] plants\trees\seatrees\foliage\bubbles\crownfoliage4.png
    [NEW] plants\trees\seatrees\foliage\bubbles\foliage1.png
    [NEW] plants\trees\seatrees\foliage\bubbles\foliage2.png
    [NEW] plants\trees\seatrees\foliage\bubbles\foliage3.png
    [NEW] plants\trees\seatrees\foliage\bubbles\foliage4.png
    [NEW] plants\trees\seatrees\foliage\flowy\basefoliage1.png
    [NEW] plants\trees\seatrees\foliage\flowy\basefoliage2.png
    [NEW] plants\trees\seatrees\foliage\flowy\basefoliage3.png
    [NEW] plants\trees\seatrees\foliage\flowy\basefoliage4.png
    [NEW] plants\trees\seatrees\foliage\flowy\crownfoliage1.png
    [NEW] plants\trees\seatrees\foliage\flowy\crownfoliage2.png
    [NEW] plants\trees\seatrees\foliage\flowy\crownfoliage3.png
    [NEW] plants\trees\seatrees\foliage\flowy\crownfoliage4.png
    [NEW] plants\trees\seatrees\foliage\flowy\foliage1.png
    [NEW] plants\trees\seatrees\foliage\flowy\foliage2.png
    [NEW] plants\trees\seatrees\foliage\flowy\foliage3.png
    [NEW] plants\trees\seatrees\foliage\flowy\foliage4.png
    [NEW] plants\trees\seatrees\foliage\leafy\basefoliage1.png
    [NEW] plants\trees\seatrees\foliage\leafy\basefoliage2.png
    [NEW] plants\trees\seatrees\foliage\leafy\basefoliage3.png
    [NEW] plants\trees\seatrees\foliage\leafy\basefoliage4.png
    [NEW] plants\trees\seatrees\foliage\leafy\crownfoliage1.png
    [NEW] plants\trees\seatrees\foliage\leafy\crownfoliage2.png
    [NEW] plants\trees\seatrees\foliage\leafy\crownfoliage3.png
    [NEW] plants\trees\seatrees\foliage\leafy\crownfoliage4.png
    [NEW] plants\trees\seatrees\foliage\leafy\foliage1.png
    [NEW] plants\trees\seatrees\foliage\leafy\foliage2.png
    [NEW] plants\trees\seatrees\foliage\leafy\foliage3.png
    [NEW] plants\trees\seatrees\foliage\leafy\foliage4.png
    [NEW] plants\trees\seatrees\foliage\wavy\basefoliage1.png
    [NEW] plants\trees\seatrees\foliage\wavy\basefoliage2.png
    [NEW] plants\trees\seatrees\foliage\wavy\basefoliage3.png
    [NEW] plants\trees\seatrees\foliage\wavy\basefoliage4.png
    [NEW] plants\trees\seatrees\foliage\wavy\crownfoliage1.png
    [NEW] plants\trees\seatrees\foliage\wavy\crownfoliage2.png
    [NEW] plants\trees\seatrees\foliage\wavy\crownfoliage3.png
    [NEW] plants\trees\seatrees\foliage\wavy\crownfoliage4.png
    [NEW] plants\trees\seatrees\foliage\wavy\foliage1.png
    [NEW] plants\trees\seatrees\foliage\wavy\foliage2.png
    [NEW] plants\trees\seatrees\foliage\wavy\foliage3.png
    [NEW] plants\trees\seatrees\foliage\wavy\foliage4.png
    [NEW] plants\trees\seatrees\stem\seaweed\base1.png
    [NEW] plants\trees\seatrees\stem\seaweed\base2.png
    [NEW] plants\trees\seatrees\stem\seaweed\base3.png
    [NEW] plants\trees\seatrees\stem\seaweed\base4.png
    [NEW] plants\trees\seatrees\stem\seaweed\crown1.png
    [NEW] plants\trees\seatrees\stem\seaweed\crown2.png
    [NEW] plants\trees\seatrees\stem\seaweed\crown3.png
    [NEW] plants\trees\seatrees\stem\seaweed\crown4.png
    [NEW] plants\trees\seatrees\stem\seaweed\mid1.png
    [NEW] plants\trees\seatrees\stem\seaweed\mid2.png
    [NEW] plants\trees\seatrees\stem\seaweed\mid3.png
    [NEW] plants\trees\seatrees\stem\seaweed\mid4.png
    [NEW] recipes\weapons\tier3\giganticsnowball.recipe
    [NEW] recipes\weapons\tier3\largesnowball.recipe
    [NEW] recipes\weapons\tier3\mediumsnowball.recipe
    [NEW] recipes\weapons\tier3\snowball.recipe
    [NEW] recipes\weapons\tier3\throwingbones.recipe
    [NEW] sfx\melee\sawblade_hit_organic.wav
    [NEW] sfx\melee\sawblade_hit_robotic.wav
    [NEW] sfx\melee\sawblade_kill_organic.wav
    stats\effects\melting\melting.lua
    terrain\cave\normalcaves.terrain
    
    DIFFS
    -----
    biomes\distributions.config
    127,128c127,128
    <    "modulus" : 2,
    <    "modulusVariance" : 2,
    ---
    >    "modulus" : 3.5,
    >    "modulusVariance" : 2.5,
    
    dungeons\human\humanprison\humanprison.dungeon
    5,6c5
    <    "rules" : [
    <    ],
    ---
    >    "rules" : [ ],
    10c9,10
    <    "maxParts" : 100
    ---
    >    "maxParts" : 100,
    >    "protected" : true
    167c167
    <      "brush" : [ [ "clear" ], [ "object", "humangenerator", { "direction" : "left", "parameters" : { "defaultSwitchState" : true } } ] ]
    ---
    >      "brush" : [ [ "clear" ], [ "object", "humangenerator", { "direction" : "left", "parameters" : { "defaultState" : true } } ] ]
    173c173
    <      "brush" : [ [ "clear" ], [ "object", "humangenerator", { "direction" : "right", "parameters" : { "defaultSwitchState" : true } } ] ]
    ---
    >      "brush" : [ [ "clear" ], [ "object", "humangenerator", { "direction" : "right", "parameters" : { "defaultState" : true } } ] ]
    
    dungeons\microdungeons\platforming\iceplatforming\iceplatforming.dungeon
    439,440c439,440
    <      "comment" : "icestalagtite",
    <      "brush" : [ [ "random", [ [ "object", "icestalagtite1" ], [ "object", "icestalagtite2" ], [ "object", "icestalagtite3" ], [ "object", "icestalagtite4" ] ] ] ]
    ---
    >      "comment" : "icestalactite",
    >      "brush" : [ [ "random", [ [ "object", "icestalactite1" ], [ "object", "icestalactite2" ], [ "object", "icestalactite3" ], [ "object", "icestalactite4" ] ] ] ]
    
    objects\avian\propeller\propeller.object
    21a22,23
    >      "direction" : "left",
    >      "flipImages" : true,
    25,26c27,127
    <      "spaceScan" : 0.1,
    <      "anchors" : [ "bottom" ]
    ---
    >      "spaces" : [ [-1, 0], [0, 0], [1, 0], [0, 1], [0, 2], [-4, 3], [-3, 3], [-2, 3], [-1, 3], [0, 3], [1, 3], [2, 3], [3, 3], [4, 3], [-4, 4], [-3, 4], [-2, 4], [-1, 4], [0, 4], [1, 4], [2, 4], [3, 4], [4, 4], [-1, 5], [0, 5], [1, 5] ],
    >      "anchors" : [ "bottom" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-3.5, 3.9], [-3.5, 4.8], [4.5, 4.8], [4.5, 3.9] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    >    },
    >    {
    >      "image" : "propeller.png:<color>.<frame>",
    >      "imagePosition" : [-28, 0],
    >      "direction" : "right",
    >      "frames" : 4,
    >      "animationCycle" : 0.1,
    >
    >      "spaces" : [ [-1, 0], [0, 0], [1, 0], [0, 1], [0, 2], [-4, 3], [-3, 3], [-2, 3], [-1, 3], [0, 3], [1, 3], [2, 3], [3, 3], [4, 3], [-4, 4], [-3, 4], [-2, 4], [-1, 4], [0, 4], [1, 4], [2, 4], [3, 4], [4, 4], [-1, 5], [0, 5], [1, 5] ],
    >      "anchors" : [ "bottom" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-3.5, 3.9], [-3.5, 4.8], [4.5, 4.8], [4.5, 3.9] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    >    },
    >    {
    >      "image" : "propellertop.png:<color>.<frame>",
    >      "imagePosition" : [-28, -40],
    >      "direction" : "left",
    >      "flipImages" : true,
    >      "frames" : 4,
    >      "animationCycle" : 0.1,
    >
    >      "spaces" : [ [-1, 0], [0, 0], [1, 0], [0, -1], [0, -2], [-4, -3], [-3, -3], [-2, -3], [-1, -3], [0, -3], [1, -3], [2, -3], [3, -3], [4, -3], [-4, -4], [-3, -4], [-2, -4], [-1, -4], [0, -4], [1, -4], [2, -4], [3, -4], [4, -4], [-1, -5], [0, -5], [1, -5] ],
    >      "anchors" : [ "top" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-3.5, -2.8], [-3.5, -3.7], [4.5, -3.7], [4.5, -2.8] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    >    },
    >    {
    >      "image" : "propellertop.png:<color>.<frame>",
    >      "imagePosition" : [-28, -40],
    >      "direction" : "right",
    >      "frames" : 4,
    >      "animationCycle" : 0.1,
    >
    >      "spaces" : [ [-1, 0], [0, 0], [1, 0], [0, -1], [0, -2], [-4, -3], [-3, -3], [-2, -3], [-1, -3], [0, -3], [1, -3], [2, -3], [3, -3], [4, -3], [-4, -4], [-3, -4], [-2, -4], [-1, -4], [0, -4], [1, -4], [2, -4], [3, -4], [4, -4], [-1, -5], [0, -5], [1, -5] ],
    >      "anchors" : [ "top" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-3.5, -2.8], [-3.5, -3.7], [4.5, -3.7], [4.5, -2.8] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    >    },
    >    {
    >      "image" : "propellerleft.png:<color>.<frame>",
    >      "imagePosition" : [0, -28],
    >      "direction" : "right",
    >      "frames" : 4,
    >      "animationCycle" : 0.1,
    >
    >      "spaces" : [ [0, 1], [0, 0], [0, -1], [1, 0], [2, 0], [3, 4], [3, 3], [3, 2], [3, 1], [3, 0], [3, -1], [3, -2], [3, -3], [3, -4], [4, 4], [4, 3], [4, 2], [4, 1], [4, 0], [4, -1], [4, -2], [4, -3], [4, -4], [5, 1], [5, 0], [5, -1] ],
    >      "anchors" : [ "left" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [3.9, 4.5], [4.8, 4.5], [4.8, -3.5], [3.9, -3.5] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    >    },
    >    {
    >      "image" : "propellerright.png:<color>.<frame>",
    >      "imagePosition" : [-40, -28],
    >      "direction" : "right",
    >      "frames" : 4,
    >      "animationCycle" : 0.1,
    >
    >      "spaces" : [ [0, 1], [0, 0], [0, -1], [-1, 0], [-2, 0], [-3, 4], [-3, 3], [-3, 2], [-3, 1], [-3, 0], [-3, -1], [-3, -2], [-3, -3], [-3, -4], [-4, 4], [-4, 3], [-4, 2], [-4, 1], [-4, 0], [-4, -1], [-4, -2], [-4, -3], [-4, -4], [-5, 1], [-5, 0], [-5, -1] ],
    >      "anchors" : [ "right" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-2.8, 4.5], [-3.7, 4.5], [-3.7, -3.5], [-2.8, -3.5] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "2hsword"
    >          }
    
    objects\avian\sawblade\sawblade.object
    17,38d16
    <  "particleEmitter" : {
    <    "emissionRate" : 0.1,
    <    "emissionVariance" : 0.05,
    <    "pixelOrigin" : [0, 0],
    <
    <    "particle" : {
    <      "type" : "textured",
    <      "image" : "/particles/hazard/hazardstat.png",
    <      "size" : 1.0,
    <      "color" : [73, 179, 253, 255],
    <      "fade" : 0,
    <      "destructionAction" : "shrink",
    <      "destructionTime" : 7,
    <      "initialVelocity" : [3, 4],
    <      "finalVelocity" : [-3, 2],
    <      "approach" : [4, 1],
    <      "timeToLive" : 1,
    <      "layer" : "middle"
    <    }
    <
    <  },
    <
    46c24,27
    <      "animationCycle" : 0.3,
    ---
    >      "animationCycle" : 0.2,
    >
    >      "spaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, 1], [-1, 1], [0, 1], [1, 1] ],
    >      "anchors" : [ "bottom" ],
    48,49c29,35
    <      "spaceScan" : 0.1,
    <      "anchors" : [ "bottom" ]
    ---
    >          "touchDamage" : {
    >            "poly" : [ [-1.8, 0.3], [-0.8, 2.0], [0.8, 2.0], [1.8, 0.3] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "sawblade"
    >          }
    57c43
    <      "animationCycle" : 0.3,
    ---
    >      "animationCycle" : 0.2,
    59,60c45,54
    <      "spaceScan" : 0.1,
    <      "anchors" : [ "top" ]
    ---
    >      "spaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0], [-2, -1], [-1, -1], [0, -1], [1, -1] ],
    >      "anchors" : [ "top" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [-1.8, 0.7], [-0.8, -1.0], [0.8, -1.0], [1.8, 0.7] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "sawblade"
    >          }
    68c62,65
    <      "animationCycle" : 0.3,
    ---
    >      "animationCycle" : 0.2,
    >
    >      "spaces" : [ [1, 1], [0, 1], [1, 0], [0, 0], [1, -1], [0, -1], [1, -2], [0, -2] ],
    >      "anchors" : [ "left" ],
    70,71c67,73
    <      "spaceScan" : 0.1,
    <      "anchors" : [ "left" ]
    ---
    >          "touchDamage" : {
    >            "poly" : [ [0.3, 2.0], [2, 0.8], [2, -0.8], [0.3, -2.0] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "sawblade"
    >          }
    79c81
    <      "animationCycle" : 0.3,
    ---
    >      "animationCycle" : 0.2,
    81,82c83,92
    <      "spaceScan" : 0.1,
    <      "anchors" : [ "right" ]
    ---
    >      "spaces" : [ [-1, 1], [0, 1], [-1, 0], [0, 0], [-1, -1], [0, -1], [-1, -2], [0, -2] ],
    >      "anchors" : [ "right" ],
    >
    >          "touchDamage" : {
    >            "poly" : [ [0.7, 2.0], [-1, 0.8], [-1, -0.8], [0.7, -2.0] ],
    >            "damage" : 80,
    >
    >            "damageType" : "IgnoresDef",
    >            "damageSourceKind" : "sawblade"
    >          }
    89,90d98
    <
    <  //TODO: touch damage
    
    objects\wired\shieldgenerator\shieldgenerator.lua
    6c6,7
    <  entity.setInteractive(entity.configParameter("interactive", true))
    ---
    >  entity.setInteractive(entity.configParameter("interactive", true) and not (entity.inboundNodeCount() > 0 and entity.isInboundNodeConnected(0)))
    >
    8,10c9
    <    output(entity.configParameter("defaultSwitchState", false))
    <  else
    <    output(storage.state)
    ---
    >    storage.state = entity.configParameter("defaultState", true);
    13,14c12,15
    <  if storage.triggered == nil then
    <    storage.triggered = false
    ---
    >  updateAnimationState(storage.state)
    >
    >  if entity.outboundNodeCount() > 0 then
    >    entity.setOutboundNodeLevel(0, storage.state)
    15a17,18
    >
    >  script.setUpdateDelta(0);
    21a25,32
    > function onNodeConnectionChange(args)
    >  entity.setInteractive(entity.configParameter("interactive", true) and not entity.isInboundNodeConnected(0))
    > end
    >
    > function onInboundNodeChange(args)
    >  output(entity.getInboundNodeLevel(0))
    > end
    >
    23c34,44
    <  storage.state = state
    ---
    >  if state ~= storage.state then
    >    storage.state = state
    >    updateAnimationState(storage.state)
    >    world.setTileProtection(self.dungeonId, storage.state)
    >    if entity.outboundNodeCount() > 0 then
    >      entity.setOutboundNodeLevel(0, storage.state)
    >    end
    >  end
    > end
    >
    > function updateAnimationState(state)
    32,41d52
    <  end
    <  world.setTileProtection(self.dungeonId, storage.state)
    < end
    <
    < function update(args)
    <  if entity.getInboundNodeLevel(0) and not storage.triggered then
    <    storage.triggered = true
    <    output(not storage.state)
    <  elseif storage.triggered and not entity.getInboundNodeLevel(0) then
    <    storage.triggered = false
    
    stats\effects\melting\melting.lua
    10c10
    <  self.damage = 20
    ---
    >  self.damage = 30
    14c14
    <      damage = 20,
    ---
    >      damage = 30,
    23c23
    <    self.damage = self.damage + 20
    ---
    >    self.damage = self.damage * 2
    
    terrain\cave\normalcaves.terrain
    11c11
    <      "layerDensity" : 0.1,
    ---
    >      "layerDensity" : 0.05,
    13c13
    <      "surfaceDensity" : 0.015,
    ---
    >      "surfaceDensity" : 0.02,
    19c19
    <        "frequency" : 0.008,
    ---
    >        "frequency" : 0.009,
    27c27
    <        "frequency" : 0.011,
    ---
    >        "frequency" : 0.01,
    29c29
    <        "bias" : 0
    ---
    >        "bias" : -0.05
    38c38
    <        "bias" : 9
    ---
    >        "bias" : 10
    73c73
    <        "bias" : -0.7
    ---
    >        "bias" : -0.9
    81,82c81,82
    <        "amplitude" : 20,
    <        "bias" : 30
    ---
    >        "amplitude" : 24,
    >        "bias" : 38
    89,90c89,90
    <        "amplitude" : 6,
    <        "bias" : -8
    ---
    >        "amplitude" : 8,
    >        "bias" : -14
    112c112
    <        "numberOfWormsPerSectorRange" : [0.2, 0.3],
    ---
    >        "numberOfWormsPerSectorRange" : [0.2, 0.2],
    115,116c115,116
    <        "wormSizeRange" : [2, 5],
    <        "wormLengthRange" : [50, 120],
    ---
    >        "wormSizeRange" : [2.5, 4],
    >        "wormLengthRange" : [60, 120],
    119c119
    <        "wormTurnChance" : 0.25,
    ---
    >        "wormTurnChance" : 0.2,
     
    Supergeek likes this.
  18. Unclever title

    Unclever title Cosmic Narwhal

    I agree, a varied algorithm between different kinds of planets would be representative of differences in the geological processes or parameters between different planets.

    On Earth caves formed by lava and volcanic activity look different from caves formed by water and erosion. Naturally though, Starbound has could have more kinds of caves, caves formed from massive root systems that have long since decayed, or formed by giant rockworms that may or may not be extinct, or formed (or simply widened) through giant tentacle activity of a currently infested planet.

    I'd almost suggesting making cave algorithms biome specific but trying to get the ends at biome borders to match up sounds like utter insanity.

    Ultimately gameplay trumps realism, so some variations in the algorithm's parameters on different base planet\ types would be awesome enough.
     
    Aer_ and Hatsya Souji like this.
  19. Witness

    Witness Giant Laser Beams

    I agree with the idea of randomizaiton of frequency and sizes of caves generated for the planet. Such variation would actually be quite nice, I'd say, making planets more different from each other. Plus, I'd like to be able to explore vast cave systems on some planets and on some I'd rather have areas of solid rock for the sake of mining and underground facility construction.
     
    Dragomok and Tamorr like this.
  20. Tamorr

    Tamorr Supernova

    Well that was an interesting read. Nice to see the cave gen is being tweaked and modified a bit. Like quite a few that have mentioned above, I hope or it would be nice if there was a way to make the cave algorithm variable in density, as well some for each type. Shape size. Well at least the density part would be fine by me; the other extra things beyond like size, shape, height, etc.. would be a bonus.

    With that said, having each planet have those variables added to create quite a bit of randomness. Could be even influenced by biome to a degree, if not some other factors like hazards. So in a way I actually like what @Witness had said above me; so I don't see the same generation per biome or even per planet. The more varied, the better; especially if biomes themself had similarities within their biome, but quite varied enough to say it is a different planet to an extent. (Of what I have mentioned doesn't take into account of mini-dungeons and the like that is more or less placed after the cave gen.)

    Of course that might be pretty complex to get it done, but would be nice in the long run, even if it is only just the primary density variable that get messed with.:)
     

Share This Page