Noise 2.0 - Return of the Perlin

New releases and general discussions.

Post » Fri Apr 22, 2011 4:53 am

[size=200:2cvlkoln]This thread is outdated. The plugin is released. Go HERE![/size:2cvlkoln]



Greetings everybody. I was recently doing some work on Void Runner, when it came to my attention that I needed seamless Perlin Noise. Seeing as I'd written the Perlin Noise plugin, I figured this would be no trouble at all - and indeed it was not, but during the process I realized how convoluted the Perlin Noise plugin really was. Expressions? Really? Grayscale? So I thought about it for a while, and I decided to update it with ten times the power, and ten times the usability. Behold - Noise 2.0!

[size=150:2cvlkoln]Features:[/size:2cvlkoln]
[list:2cvlkoln]
[*:2cvlkoln]Perlin Noise - Duh.[/*:2cvlkoln]
[*:2cvlkoln]Ridged Multifractal Noise - For those mountain ranges.[/*:2cvlkoln]
[*:2cvlkoln]Voronoi Noise - For texturing, or manmade formations, such as cities.[/*:2cvlkoln]
[*:2cvlkoln]Planetary Noise - My personal favorite. Perlin Noise wrapped around a sphere.[/*:2cvlkoln]
[*:2cvlkoln]File Support - Output to bitmaps, or use good old fashioned convoluted expressions for mathematical purposes.[/*:2cvlkoln]
[*:2cvlkoln]Color Mapping - Forget those old grayscale heightmaps! I mean, they are still there as an option, but now you can have color baked right in to the output. You can set the colors yourself or use preset landscape colorings that are included with the plugin.[/*:2cvlkoln]
[*:2cvlkoln]Lighting - Set the direction, elevation, color, brightness, and contrast, of a directional light that will be baked into the final image for the noise.[/*:2cvlkoln]
[*:2cvlkoln]Integrated Camera Controls - Set it and forget it. Did your player just walk off screen? Move the camera east with one action - the noise will seamlessly line up for you. The best part? You can do that as much as you want - it never stops. The world keeps on going baby![/*:2cvlkoln]
[/list:u:2cvlkoln]

I had to change the name of the plugin to reflect that there is indeed more than one kind of noise out there. I have designed the plugin to be easy to use. You only need to use a few actions and you're off. However, for power users, every single detail is customizable. All the imagery up there in the header came out of Construct - powered by Noise 2.0!

This is the first in a series of plugins I have planned that should help people make [size=150:2cvlkoln]LARGE[/size:2cvlkoln] games. Go make infinite worlds. Make planets. GO FORTH AND PROCREATE. This one is almost done. The plugin should be ready in the next few days. All I need to do is wrap up the Planetary Noise generator, and upload a detailed tutorial describing how to use it on Youtube.

I will leave you with a movie of me screwing around with seamless, colored, perlin noise. As I click on each sprite, a heightmap is baked into the sprite at runtime. Notice how fast this process is, and notice that every single heightmap lines up perfectly with the ones around it. The best part? The event sheet had ten events in it - one for each sprite, and one to start the generator.

Enjoy: http://screencast.com/t/F8UtanJXsg01
B
5
S
2
G
5
Posts: 221
Reputation: 2,272

Post » Fri Apr 22, 2011 6:01 am

Yowza!

Voronoi noise reminds me of this:
http://simblob.blogspot.com/2010/09/pol ... art-3.html
B
62
S
21
G
12
Posts: 1,910
Reputation: 13,155

Post » Fri Apr 22, 2011 5:41 pm

Hi mate.

Since we last spoke about this, knowing that it might be a while before you release it, I decided to do a little study on procedural generation, and I am currently experimenting with fractal Brownian motion, or fBm for planet generation, but this is in Unity.

Really looking forward to seeing your plugin.
Can already think of a few uses for this in Construct.

Don't keep us waiting too long. :wink:

Krush
B
2
S
2
G
3
Posts: 406
Reputation: 2,062

Post » Fri Apr 22, 2011 11:59 pm

This new plugin sounds really exciting!
B
8
S
3
G
7
Posts: 835
Reputation: 5,313

Post » Sat Apr 23, 2011 3:53 am

The ACE tables are complete:
http://screencast.com/t/TX0BsrGfz8nf
http://screencast.com/t/O7EZaf1IET
http://screencast.com/t/7C7ACy8mF5B

Notice those actions are extremely condensed. Rather than have an action to modify each and every variable, I have an action for each generator that lets you pick and choose which variables you want to modify out of a list of variables relevant to that generator. You can use that action to modify one variable or all of them simultaneously, and again, only variables that are relevant. So "Adjust Voronoi Generator" isn't going to ask you what you want your octaves to be, as it doesn't matter with Voronoi noise.

Now all I have to do is add the planetary generator. Requires some complex math because coordinates for the camera swap from X/Y to Latitude/Longitude. The camera will behave exactly the same however. It will map the sphere, and you will move it in exactly the same ways as you do with normal noise. I actually have half of it written already, it's just a matter of integration. Tomorrow I'll probably throw up that tutorial video and host an alpha version, as I'm sure you guys will run into a few bugs and have feature requests. You probably want to hold off starting any major projects until the plugin is out of that alpha stage. It shouldn't have too many problems, so alpha won't be very long. I'll just need some feedback before I declare it "done".

Edit: Early version of planet zooming: http://screencast.com/t/oAKbPA4BK3

Planet controls differ in that the camera's zoom level is automatically tied with the quality of the noise, so you will notice that details pop out even when you are zoomed in. You could manually do this with events on perlin noise of course - all by yourself, however - planets have another benefit. While perlin noise can seamlessly extend forever, Planetary noise wraps around a sphere, so eventually you will be back where you started.
B
5
S
2
G
5
Posts: 221
Reputation: 2,272

Post » Sun Apr 24, 2011 6:34 am

I hit a snag with the planet generator. Turns out spheres don't map so well into two dimensional space regardless of how fancy your math is. I have however written a tiling algorithm that will allow you to tile your noise over a number of noise maps. Here I am moving across a world with size three: http://screencast.com/t/jM72VhWxScyh

It's about done. I just have to touch up this new planet generator. Unfortunately this version is very touchy, so you lose the ability to zoom and fine tune the camera's position, but it will go in circles forever for you - and this loss only affects the planetary noise, not the other generators. It's "spherical" (it's actually cubical). The upside of losing these features within the planet generator is that seamless tiling noise is now an option within perlin, ridged multifractal, and voronoi noise! That should more than make up for it, offering a whole new set of possibilities for people that are doing texture work rather than terrain work. The reason zooming and camera controls are unreliable with tiling/planetary noise is that making the noise tile is a post processing effect that breaks it's continuity with the noise surrounding it. So you can either have one tiling noise map OR seamless noise that goes out into infinity with zooming and camera controls. It's up to you.
B
5
S
2
G
5
Posts: 221
Reputation: 2,272

Post » Sun Apr 24, 2011 1:52 pm

Still looking forward to this.
One question though.

Does the plugin allow access to the noise data mathematically for use with calculations, or is it just for rendering?
Also, is it possible to use seeds to generate the same noise data every time?

Krush.
B
2
S
2
G
3
Posts: 406
Reputation: 2,062

Post » Sun Apr 24, 2011 2:06 pm

Within the "Generate" action there is an option for image saving. The options are "Color, Black and White, and No" if you choose "No", then your only access to the image will be through expressions. So yeah there are expressions to access the data.

If the seed doesn't change you will get the same noise every time, yep!
B
5
S
2
G
5
Posts: 221
Reputation: 2,272

Post » Sun Apr 24, 2011 2:43 pm

Excellent!

I was going to attempt to replicate what I've done with PRNGs in Unity, by using Python for use with Construct, but it sounds like this plugin will do everything I need it to do, so I'll put that on hold. :)

Nice work.

Krush.
B
2
S
2
G
3
Posts: 406
Reputation: 2,062

Post » Sun Apr 24, 2011 11:18 pm

The plugin was released in the correct forum. Mods if you could lock this thread that would rock. Enjoy guys. More is coming!
B
5
S
2
G
5
Posts: 221
Reputation: 2,272

Next

Return to Construct Classic Discussion

Who is online

Users browsing this forum: No registered users and 6 guests