Very few games are geeky enough to give you an in-game console you can directly interact with your character with (we aren't talking about a development console here where you can become god and change game parameters on the fly, we're talking about an immersive, in-game command prompt that lets you interact with your ships).
As you can see (click for a larger image) the terminal is integrated seamlessly with the HUD of the game. Although it won't be as epic as a real terminal (my ship's computer simulation doesn't give you a file system and programmable yet) it still gives you a lot of well organized low level control over the ship you're flying (and eventually other ships you own).
Why? It's geeky, but...
- It provides a simple interface to configure lots of settings. I don't want my game to go the X3 route and have an endless supply of menus buried in even more menus. I want to capture more the Freelancer appearance of simplicity and hide all the configuration ugliness out of the GUI.
- It is a role playing tool. I intend it to be useful for modifying how your ship flies, navigation, troubleshooting damaged ship components, and even neat stuff like adjusting shield harmonics to increase shield effectiveness against certain weapons.
- You will eventually be able to hack into the computers of ships you have disabled to steal information or capture the ship. This mini game will be via the console.
Illusion of Depth.
The facts are, making a game with scales ranging from meters to kilometers is not an easy task. Now that I've gotten that out of my system, how do we solve the problem of creating a believably scaled universe with the constraints of the JME3 engine?
When you are at a distance of between 400,000 and 100,000km from an object, its distance and size are set to normal. There is no scaling of any kind, and it moves towards and away from you at the expected speed.
However, when you get within 100,000km, the object becomes 10x further away, 10x larger, and moves towards/away from you 10x faster! In effect, we made a seamless transition from our smaller, unrealistic object, to a realistic one. The target planet now appears as vast as in the real world.
The reverse is also true, to avoid weird geometry errors drawing big spheres at large distances. When you get beyond 400,000km the object becomes 10x closer, 10x smaller, and moves away from you 1/10th the normal speed.
It's convoluted, but it allows me to work around the game engine constraints of jme3's geometry rendering and provide realistic scales.
If you have any comments, leave them here or send them to email@example.com . Feedback is your friend, mine too.