(Truly) Procedural Planet Generator

Hello!1345974--66510--$NRbanner.jpg
Web-player Demo : http://slipspace.co.uk/ppgdemo/
Asset store : https://www.assetstore.unity3d.com/#/content/10716

Update: Added a C# script version and some editor gradients to create custom coloured planets.

Update: Added night-lights. As usual, the web-player demo is constantly up to date.

Update: Integrated the cloud shader into the main planet shader. Updated the web-player demo.

1345974--66508--$u27dfAR.jpg

Update: Added gas giant to default planet types and improved atmospheric lighting.

This is my first asset for the store and I would really appreciate some feedback towards it, including the price…too little, too much? All the code is open source, shaders and all, so I currently feel like $25 is a reasonable target.

I’m committed to upgrading this package slowly over the coming weeks/months.

You can see recent updates to the package above, planned updates are listed below:

- Improved land generation algorithm
- Improved cloud generation algorithm
- Color ramp support (gradients)
- Equatorial color variation
- Craters
- Improved surface resolution / detail
- C# script variant
- Unity 3.5 support

The package works by adding a single script to any consistent gameObject on the scene. You can always dynamically add the script as well if you wish.

Anyway, thanks for reading/viewing/becoming interested, and please, please provide me with some feedback, any features you’d like to see are more than welcome, please check the listed upcoming features list first.

Thanks a lot,
Jared

PS: I’ll be adding better images and logos to the asset store soon. :smile:

Forgot to mention that the lighting system is an update. It’s in the hands of the Unity review team so it could take anything from a couple hours to a couple days, usually the former.

Edit: To anyone reading this, the update still hasn’t gone through! Should really be in the next couple of days though, if you’d like to grab the asset at $15 before it goes up to $25…now’s your chance! :stuck_out_tongue:

I was just looking for something like this, there are far too few examples of proceduraly generated content in the asset store. This certainly looks great and if you implement half of what you plan, it will no doubt become awesome and certainly worth of a price bump by the way. I will be watching this one closely for updates.

It’s neat that you have this working procedurally with realtime adjustment… but in terms of quality if someone wants to use this in a game, it seems (based on the webplayer) that the quality isn’t quite there… do you have maybe a high-res version?

I’m including this asset within my own game development so the quality is definitely set to increase over the coming weeks. Better lighting, atmospheric scattering and much higher resolution planet surfaces. As well as a greater variety of planet types and color variations.

My target is something very similar to this (Limit Theory) : http://www.youtube.com/watch?v=t6vVziWb00U

Thanks for the interest and stay tuned!

Jared

Yeah, until the quality ramps up quite a bit, I can’t see using that even in my hobby game at any price. It’s going to be a challenge, since you’re going up against some tools that have been out for a while. One of the worst kept secrets in this area is the LunarCell Photoshop plug-in from I think six years ago. I’ve done some tests with generating textures from that and using the Space Graphics Toolkit planet shaders, and until you can at least get to that level of quality (which still isn’t exactly AAA quality, especially as you get close to the planets), I would have to wait and see. That plug-in can generate bump maps for terrain, specular maps for oceans vs land, and even city lights for populated planets (visible on the dark half).

If you can get to that higher quality level, I’d say you could charge quite a bit more for it!

Here are my planets so far. In the real game, I wouldn’t use the exact same clouds like that for every planet of course!
http://www.stevetack.com/misc/planets.png

I suppose for an apples-to-apples comparison, I could turn off the clouds, but you get the idea.

Of course there are many tools available to ‘pre-generate’ planetary textures and normal maps and these will have a headstart in terms of resolution and graphical quality. I will work really hard to push my tool as far as it will go but the primary benefit of my tech is that it’s all generated in code and therefore allows for limitless combinations and variations of planets. To get the same level of variety with ‘pre-generated’ textures would take up a vast quantity of space and time.

Even so, as I’ve said the quality is set to increase, hopefully dramatically. Night lights are fairly simple for me to implement and are on their way soon, all the planets are going to get bump mapping in the next update and I’ll be continuously be upgrading the surface texturing tech and lighting.

I don’t expect anyone to purchase until they feel comfortable with the asset itself, no need to believe my promises, but please stay subscribed to this thread if you’re interested in the tool and it’s potential.

Thanks a lot!

Right, I guess it’s unfair to compare pre-rendered with on-the-fly textures. I can definitely see how dynamically-generated planet textures could be useful for certain types of games.

really? so why purchase your package? does it require the user to make his project also open source?
i think what you mean is source is included in the purchased package. right?
language c#?
Edit: i have seen in the package contents that it uses js. that is a dealbreaker for me. otherwise i would have been quite interested.

do i have control over this to make my own types? maybe provide a colorramp?

do the planets allow craters?
what noise is used. how many octaves?
can gas giants be created?

i’m in need to display a rectangular map of the planet so can i get the texture to achieve this?

Hello!

The code can easily be converted to c#, would you like me to include a c# PlanetGenerationScript in the next update?

What I mean by open source code, is that all my source code, is open. :stuck_out_tongue:

You do have control over lots of variables. Currently the colours are set using 5 different levels, Peak, 3, 2, 1, Shore and Ocean. I will be updating very soon to allow colour ramps for the land however. Oceans will have a separate ramp as well.

I haven’t thought about craters but that’s a pretty good idea! I’ll look into adding them soon.

Perlin noise is used, currently at 4 octaves.

Gas giants can easily be created with this tech, and are on the list for a future default planet type, this currently also includes moons and ‘metal’.

Hmm, the way the tech currently works wouldn’t allow you to grab a ‘texture’ from it and successfully display the planet how you’d want. But if this is a top requested feature I could look into adding easy functionality for generating ‘maps’.

Thanks for the interest!

Interesting. It is possible to change the color of surfaces?

I second the motion for a c# version, it will certainly save us c# programmers the time to convert it and that can only be good. It would be cool to have a flat map of the surface as well, it would surely be great for having ground battles in there as well.

Hi!

Yeap, dynamically if you wish. Currently you have to script in color changes but I’ll be adding values to the inspector in the next update.

Also coming in the next update will be color ramps, at the moment there are 5 colours to set, Peak, 3, 2, 1, Shore and Ocean. This will change into two gradients or ‘color ramps’, one for the ground and one for the ocean. On planets types like rock and moon, only the ground ramp will be used. Of course these are just the defaults, you’ll be able to create your own planets as you wish.

This is my first asset so everything isn’t as user friendly as it could be, as time goes by however, each update will make it easier and easier for you to accomplish whatever configuration and planet setup you desire.

Thanks for your interest.

Hey again Nandus,

Yeah, a c# script will definitely be included in the next update. (I’m still waiting for Unity to accept my lighting update! They take so long.)

I still don’t know too much about the flat map representation, I will look into it though.

Thanks!

Just updated the original post with a image showing the new specularity and bump mapping.

It looks pretty good. For me the main thing that puts me off a bit is the perlin noise… it doesn’t really look like a natural, organic planet. I think possibly it might be to do with your color palette partly? Like maybe the blue and green have too much saturation or something? The other issue I have with it is that it doesn’t give me an impression of there being lots of subtle colors, it seems like one blue, one green and one brown, and all the clouds look thin and not cloud-like - no swirls or evidence of wind movement, etc. For me it still needs more polishing.

if you want me to buy it yes ;). if you leave it to every customer in need this is not very userfriendly. and if you have an official version supplied with your package support will be easier for you i guess.

assuming that 90+% of (non-gasgiant)planets and moons have no ocean the handling of oceans interests me and if it can easily be disabled if not required. you wrote something like this for moons.

i’m interested in the setup of your planet so what is generated and produced by which “component”. so what does the script and the shader, how is your sphere generated, how are your noise coordinates calculated?

have a look at what i mean. this example shows that the resolution of noise is coarse at the poles as the pixels are much closer together there. so you need to take into account the positions of the pixels for the sampling of your noise. thats why i ask about the setup.

what about the seed of a planet to reproduce it? do you seed the perlin noise itself or only the positions where the noise is grabbed?

Hello again,

Yes still lots more polishing to do, and don’t worry, planets will become a lot more ‘realistic’ over time, colours and surface generation algorithms and cloud generation algorithms.

The way I do oceans is by choosing an ocean colour, take away the bump mapping and ramp up the specularity. :stuck_out_tongue:

This all works as my shader colours based on ‘heights’, or fake heights. I use the nosie generated to determine a height, then I colour the planet based on height. For instance, anything below 0.2 is ocean color. :stuck_out_tongue:

I know what you mean by flat map :P, I just don’t know too much about how I would personally implement it using my tool. As I said though, I’ll eventually look into it.

And yes I think I have a seed for each planet, in fact I’m almost positive but I’ll make double sure it’s there in the next update. :stuck_out_tongue:

Thanks!

1349292--66309--$sfRIG6s.jpg

Just a quick fix, used a little more sensible colouring. :stuck_out_tongue: