First, thanks for the comments and good luck for you all too.

Today I'm happy because yesterday I find a solution for the collision problem. I always have problems with this issue and I have a lot of unfinished projects because I can't handle collisions correctly. I find the answer after read this article about how to write OOP games from the Library section of PGD. I'll explain it a bit.

I have two containers to store "logical objects". One contains the space-ships and manages all it's logic and the other contains the planets and the space-stations to manage market evolution, government, etc. I use two different containers because the space-ships' logic should be updated every frame but the planets' logic needs one update each second or less.

I have also a container for "physical objects". This one manages the physics of the universe, including collisions. The physical objects describes the physical values (as size, weight, speed vector...) for ships, planets, stations and also for objects without logic as laser beams, asteroids and such.

Finally I have a third container for "visual objects". It contains the visual description for all objects in the universe, including "non-physical objects" as the background skybox and other cosmetic objects.

For example, a space-ship is stored in the space-ship logic container and has a reference to its physical representation in the physical objects container to check (for example) its collision state and change its speed vector. The physical representation of the space-ship has a reference to its visual representation in the visual objects container to get and modify the position and orientation.

I was also thinking how to deal with the transition between interplanetary flight and atmospheric flight. I wanted to allow star-ships to land directly on the planets, but as you said this would be a lot of work, so I decided to put it in the future feature list. Now I'll use the same approaching as Elite does: dock to a space-station orbiting the planet.

About the 2D part, a scene will be a container of objects. There are a similar container with the objects owned by the player. These objects will use a script engine to handle actions. For example, a "key" would contain a script to handle the action "use", this script will check if there's a "lock" in the scene to activate it. For example:
Code:
SUB ActionUse
  DIM Lock
  Lock = Search_Object ("Lock")
  IF Lock <> 0 THEN
    CALL SendMessage &#40;Lock, "unlock"&#41;
  ELSE
    CALL MessageBox &#40;"Can't find a lock here..."&#41;
  END IF
END SUB
It's quite simple, isn't it?

I should use command console inside the game too to test configurations, scripts, etc.

I'm excited because I never used scripts or consoles in my games before. I wrote a script engine and a console few years ago, but never used them in a real live project.

That's all today. Again, thanks for the comments.