What is this noise called (or how do I approach the making of it)?

0 favourites
  • 15 posts
From the Asset Store
Make your own platformer for both the web and mobile easy with this Santas Platformer Template, FULLY DOCUMENTED
  • I've been working with noise recently, but I don't really get how to approach this idea. I would appreciate any insight or reference or even a name that I could research.

    Cheers.

    EDIT: I think it's essentially a distorted Voronoi, but I can't figure out how to distort its edges.

  • That would be Voronoi. Probably with some adjacent cells joined together to make it more irregular.

    There are algorithms to make the shapes more regular, but not so much irregular. Or of you just want larger cells, just zoom in/scale your input.

    Alternatively, you can try perlin noise with the outputs rounded to the nearest increment of your choice, but that would probably be worse.

  • Yeah, I thought it really looked like Voronoi, but Perlin will not work (at least based on my skills) because I need these different cells, just like Voronoi, except I need them distorted and I don't really know how to do or research that.

    As a point of reference, I'm looking at biomes in Minecraft, they behave just like the image above, but it's been hard finding any useful info on how to edit the noise as I don't really know how to blend noises together.

    My last idea was to try the billow effect on the voronoi cells... but hell if I know how to go about it.

  • It's not so simple... especially since there are many ways to go about it, depending on the requirements of the game you are generating the map for and your own preference of the end results.

    gamedev.stackexchange.com/questions/186194/how-to-randomly-generate-biome-with-perlin-noise

    But if I had to boil it all down, first I would use Perlin noise to generate a topographical map, then modify (multiply) the resulting values by a modifier determined by the Voronoi value at each position.

    Understand that all (2d) noise is, for any given given input (x/y coordinate set), a value is returned based on the noise algorithm used. So if you have apply Perlin noise in an area, every coordinate will have a value that corresponds to its elevation, or whatever else you desire. Those same coordinates will also have a different value according to Voronoi noise.

    So lets say if you decide all Voronoi cells with a value of less than .5 is an ocean, you would first get the elevation of x/y from the perlin noise, then check that if that x/y is less than .5 in Vornoi noise. If it is, multiply by .1, thus the final value will end up "lower" than the cells that are not oceans.

    Layering additional noise is similar. Lets say you don't want such a sharp cutoff between land and ocean. Notice cellular (Worley) noise has the same borders and cell shapes as the Voronoi noise, but lower values towards the center of the cell, and higher values at the edges. You could invert this, and multiply the biome modifier from the Voronoi noise by the value from the cellular noise. The result would be that there is less of an effect near the edge of the cells, and a greater effect towards the center.

    The returned values can be anything you want, not just elevation. For example, you could use Voronoi noise to determine "Are there trees at this coordinate or not?", or you could use classic (Perlin) noise to determine "How dense are the trees at any given coordinate?"

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I already have a map generated through Perlin in my game, so what I need now is being able to section this map in organic chunks, but Voronoi is too stiff.

    Another issue I encountered when mixing Perlin and Voronoi is that Perlin is usually good for layered sections that exist within one another, like height maps (mountains and beaches in my case), but they don't really work for "area-like" sections like Voronoi. I'm unable to see how they would interact to achieve the image above.

    Maybe you already gave me the answer, but I couldn't catch it, anyway, your link gave me a clear north though, where they talked about "domain warping". I'm 100% sure that it will solve my problems (when I understand it), so thanks a bunch for the reference.

  • If you're interested in further reading, the patron saint of procedural generation Amit Pai and Red Blob Games has you covered.

    redblobgames.com/maps/terrain-from-noise

    redblobgames.com/articles/noise/introduction.html

    www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation

    redblobgames.com/maps/mapgen4

    simblob.blogspot.com/2018/08/mapgen4-goals.html

    He's got a billion and one articles on procedural map generation and he fully documents and references every step.

  • oosyrag thank you so much! your help was invaluable. In the end I did exactly what you said, first I got a Perlin noise going and then I added it to the Noise requests for the Voronoi. Worked like a charm, thanks again. great articles by Amit also.

  • For future reference, if anyone uses this approach, imagine that when you don't use Perlin, you're giving a flat piece of paper to Voronoi draw onto, but when you ask for the Noise with Perlin distortion, then you're giving the Voronoi a crumpled piece of paper to write straight lines.

  • As a side note, I'm getting these very straight lines on diagonals, I imagine it's beacuse of the Perlin noise being used in the same manner for the X and Y values on the Voronoi. Any ideas on how to get rid of it?

  • I was able to fix it by using different noises for the X and Y values...

    But is there a way to use the same noise for both? I feel that using 1 less noise calculation could be very beneficial for performance in the long run.

  • I feel that using 1 less noise calculation could be very beneficial for performance in the long run.

    Not much to do with performance. Using the same set of inputs for different noises mostly just looks more readable on the event sheet for your own sanity.

    But you could try changing the seed using set seed instead of offsetting the input values.

    One of the few places it would matter is for cellular and Voronoi noise, since they correlate to each other at the same inputs.

  • oosyrag Now... furthering the subject, I've been reading this link and I got to the part where he tiles the noise. I tried it myself, but my knowledge is still very limited. Basically I tried replicating his numbers on my noise, but it didn't go as planned.

    This is what I intended.

    This is the code I used.

    This is what I got...

    I don't have a math background at all, but I imagine there is something I can plug into the Classic3d() function that would output exactly what I need, have you ever had any interest in it and/or can you give some insight on the matter?

    as always, I appreciate any feedback, thanks in advance.

    ps: this is totally non-critical or even necessary to my project, but I thought it was very interesting. I'm not getting it at all right now, but I believe I can with some minor guidance.

  • I'm not familiar with 3d noise at all, but it makes sense to me, since the noise distribution should be similar to x and y as it is on the z axis.

    If you map points on a sphere or cylinder in 3d space to correlate to points on a 2d plane (a monitor screen's pixels), then you'll have wrapping noise. A cylinder would wrap one way, while a sphere would wrap both ways.

    So the algorithms given should be answering "For each x/y pixel/position, where is the proper x/y/z position in 3d noise to get a value from?".

    Function part 1, mapping coordinates on a sphere or cylinder - input x/y, return x/y/z

    Function part 2, 3d noise - input x/y/z, return noise value

  • As for the math part, sin and cos in construct take degrees and not radians like in that example.

    So just multiply the values inside the sin and cos by 180/pi and it should be correct. No idea if it’s the same noise function though.

  • I've been working with noise recently, but I don't really get how to approach this idea. I would appreciate any insight or reference or even a name that I could research.

    Cheers.

    EDIT: I think it's essentially a distorted Voronoi, but I can't figure out how to distort its edges.

    On an interesting note, this highly reminds me of the way tectonic plates look, oceanic or continental, if you're interested, Artifexian on YouTube has a video titled Fantasy Maps & Plate Tectonics

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)