Modelling a planet and landing on it

Started by
17 comments, last by tolaris 18 years, 10 months ago
Hi I was wondering how one would go about creating an entire planet which you can land on with a space craft and explore. Without loading. Do you think it is feasible with todays technology? Are there any games where you can do this? Has anyone here done or attempted this? i would say most of the land would have to be procedural and some would be repeated height maps. With random placement of trees and rocks. you could use a quadtree as once your on the planet the land would appear flat and not spherical. (like irl). I also thought it would be cool to have a moon and then create tides. I think the hardest part would be making a pretty admosphere which you can pass through realistically. Thanks for listening.
--------------------------------Dr Cox: "People are ***tard coated ***tards with ***tard filling."
Advertisement
That's an idea I also had some years ago. I'm not sure if there are any games out there that implement it. Maybe you can do something like this:

First of all, planets are assumed to be almost spheres. Some you can start off with a simple tetrahedron, and then subdivide the surfaces depending on the distance (closer surfaces are subdivided more). There are two options for subdivision:
a) splitting one triangle face into three triangular faces, by connecting the three corner points with a point inside the triangle
b) splitting the triangle into four triangles by splitting its three edges and connecting the three split points
For me the second alternative seems reasonable.

The subdivision algorithm also creates a coordinate system on your sphere. Just give your initial four triangles numbers 0 to 3. If you subdivide face 1 for instance, you will get subdivision faces 10, 11, 12 and 13.
The positive thing about this coordinate system is, that you do not have any poles.

When your spaceships enters the athmosphere, you can use some kind of visual blending to change the world from a space simulation to a planet simulation. Then stars and other planets would become part of an environment map or similar. While coming closer to the planet, you can also transform the planets surface from a perfect sphere to a plane.

An important fact is, that all this data should be calculated 'on the fly'. You remember the old game Elite ? There were infinite posibilities just by using pseudo-random numbers. Here your planet would be described by some numbers, which are seeds for the random-number-generator.
Don't forget that your ship wants to take off later on. So if you use random numbers to generate the terrain/planet, you must always be able to reproduce the data. Real randomness would not be a great help in this case.
But not just the shape of your planet, also the texture should be generated procedurally. Perhaps three-dimensional textures (like those the raytracer povray uses) in combination with shaders allow to generate the textures in realtime.



So good luck with your project.
I would be interested in the results.
Just an ideea: why keep everything in memory ? especially if you have lots of planets (moons or something). You could implement a cool streaming module and load data without a loading time.
You want to generate only the amount of detail that the user will see into memory. Procedural generation helps keep data requirements in check. However, a fully procedural universe turns out to be pretty boring to explore (there have been some articles and examples over the years; including one series on gamasutra.com)

Games known to do this currently include Rocket Club (an indie game from synthetic-reality.com) and There (no rocket ships, but players figured out how to get into space and look down on the planet!).
enum Bool { True, False, FileNotFound };
Your ideas are good.
This is certainly feasible on today's hardware.
You might also find this of interest:
http://www.gamedev.net/reference/programming/features/procplanet1/
Quote:Original post by Riviera Kid
I was wondering how one would go about creating an entire planet which you can land on with a space craft and explore. Without loading.

Do you think it is feasible with todays technology?
Are there any games where you can do this?
Has anyone here done or attempted this?

Frontier ('sequel' to Elite) did that, some dozen years ago. It was about as pointless back then as it'd be now, but that's another story...
Quote:Original post by tolaris
Quote:Original post by Riviera Kid
I was wondering how one would go about creating an entire planet which you can land on with a space craft and explore. Without loading.

Do you think it is feasible with todays technology?
Are there any games where you can do this?
Has anyone here done or attempted this?

Frontier ('sequel' to Elite) did that, some dozen years ago. It was about as pointless back then as it'd be now, but that's another story...


I wouldn't call it pointless...

Anything which enhances the realism, immersion, and freedom of the game is surely worth looking at- and it is certainly possible on todays hardware given that David Braben could pull it off, even on the humble Amiga.

Also being able to land on a planet did actually serve a gameplay purpose in Frontier. You could set up mining machines on the surfaces of planets to extract minerals and precious metals. It was just another way of making money in the game..

There have been several highly interesting discussions on this subject before


Planet Rendering Part 1

Planet Rendering Part 2

These two are well worth reading, although i'm sure there are a few more, a search with google would help find them.
Quote:Original post by Darragh
I wouldn't call it pointless...

Anything which enhances the realism, immersion, and freedom of the game is surely worth looking at- and it is certainly possible on todays hardware given that David Braben could pull it off, even on the humble Amiga.

I found it pointless because it did nothing to 'enhance the realism etc' -- if anything it was a constant reminder how *artificial* the presented world is, when a whole friggin' planet had literaly 3-4 points of interest. And no, procedural generation of some mountains and lakes is going to change nothing about it. A planet remains the same sphere, devoid of game content immersion-breaker, just more tessellated.

A planet the size of Earth has ~500 mln square kilometres of surface. Even when you discard all oceans, it still leaves over 100 mln square kilometres of terrain ... while your typical MMO has trouble creating enough interactive content to fill anything between 20-50 square km of land. Strategy games hold their campaigns on similar areas, size-wise. Heck, even the widely recognized pinnacle of content creation that is Tolkien's Middle-earth wouldn't likely fill more than 1% of the real land we have at our disposal... and that's just on single planet.

Seriously; even if one used the procedurals to fill all these planets with random terrain, and water and flora... ultimately, is it really good judgement to spend the time, money and manpower on developing such system when the player will land on maybe 2-3 planets, check out the views from few spots (out of billions of possible places your system created) ... and never bothers again? Couldn't the resources spent on putting this feature in the game be spent better on something else that'd actually have *effect* on the gameplay..?

(sorry for the rant... it probably wouldn't irk me at all if it hadn't been posted in *game* programming section out of all places >.<;;;

Quote:Also being able to land on a planet did actually serve a gameplay purpose in Frontier. You could set up mining machines on the surfaces of planets to extract minerals and precious metals. It was just another way of making money in the game..

Indeed; And i think i tried that in Frontier exactly once, concluded i'd make more money on single trade run (without waiting for the machines to drill the stuff out) and that was the end of it. I think anyone who plays Eve-Online --or any game which includes resource harvesting-- can pipe in and provide their feedback on what great fun this kind of gameplay is... there's pretty good reason why this activity is typically left to scripted bots.
I also want to make planets that are more than a simple textured sphere. I'm planning an (non MMO) RPG with SIM and FPS elements. Much of the game will be in space, either as a trader or fighter pilot (Pirate, mercenary or military). However, I also want to be able to fly in the athmosphere, land on planets and walk or drive around. Possible scenarios include attack on military installations, enemy bases, or bank robberies and such.

I know that it will be impossible to fill the planets with points of interest, but automatic landing sequences on fixed landing points doesn't make much sense either. IE, I hate it when you autmatically land on the only possible landing site on the entire planet, at least in an open RPG game. If it's story based such as the SW:KOTOR games it makes more sense.

Scenarios:
Water planet with just a few scattered islands. This works since it doesn't need much detailed surface. Good source of hydrogen/deuterium and oxygen means it will probably have population.

Desert planets with breathable athmosphere (Tatooine from Star Wars or Dune in Herbertverse). Possibly rich in certain minerals. Will have settlements, but not much widespread setteling. You can land basically everywhere, which will make it hard to create detailed environment. But then again, it's a desert..

"Desert" planets without breathable athmosphere like Venus, Mercury and Mars might have domed or underground settlements and terraforming stations. Landing outside of sheltered sites can be discouraged by corrosive or othervise hazardous athmosphere. This will also discourage flying inside athmosphere except for quick descent to landing zones and to space.

Forest planets will probably have settlements, but due to the forest it will be hard to find landing spots except for landing pads.

Plains planets will be tough. It will be very easy to find landing sites, and would probably have a lot of settlements

Ice planets. Easy to find landing sites, but nothing much to see. Possibly underground settlements.

Temperature gradient planets (Earthlike) will be extremely difficult to get to look good. There are lots of landing sites and probably widespread settlement.


I think the best way to make it the way I'd like is to have a planet with flight-sim quality landscape over the entire thing, and have additional ground detail around the points of interest (for fps style walking or driving). After all, it doesn't make sense to park the ship on the other side of the planet and drive on the ground to the enemy base you're attacking. You'd want to land as close as possible and do the rest on the ground. This is of course if the base is havily defended against air attacks, but poorly against ground attacks, or if you're on a mission where stealth is paramount. Otherwise it'd make more sense to pound it from the air. Example of missions: Prison rescue, data "retrieval", theft, sabotage, espionage etc. Smuggling would probably also not be done from established landing zones.

If I could find a GOOD reason why it's impossible for any ships to fly in the athmosphere or at least in certain landing patterns, then I could dispense with ground detail away from POIs altogether, but I can't. Air defense systems can be protected against or bombed, and fighters would be just as easy to kill. The player could be fined for not following the planet's air controller's orders or something, but if he's there to do an attack then he won't care about a fine. The possible death sentence if he's caught during the attack is more worrisome. If the landing is for "legal" purposes such as trade or exploration then the automatic landing system would be employed, and the ship would follow a set trajectory to the landing zone.

In any case I want the landing to be in the engine, not cutscene or *poof* -you're landed as in Freelancer. IE, I want to have the entire landing without cuts all the way from space to ground. So some ground detail is necessary.

This topic is closed to new replies.

Advertisement