so I'm working on a third person space shooter in XNA. The idea is to immerse the player in large scale battles with ships of different sizes and shapes, ranging from small interceptors to huge battle stations. So far i've primarily worked on the engine and i'm pretty happy with the results.
For the graphics, I have only a Sky box, (very) basic ship models with diffuse lighting and some basic fog.
My goal is to have a nice star background and to give the player a good perception of the other ship's 3D position/trajectory.
So my question is, what do I need for that?
Should I just add loads of fog? If so, what color should it have? white fog looks ugly when it's blended over my dark skybox. black fog works betters but all it does is smooth out my far clipping plane.
Many space games seem to have static "stardust" that doesnt move so the player has a sense of his motion. But I can't spawn millions of particles all over space, and generating them around the player seems costly too.
Also, games like Eve:Online don't look like they have skyboxes. distant stars seem to be light sources and have lense/flare effects, does that mean I need a full 3D galaxy model?
Right now I can't help but thinking straight black is a bad idea. Perhaps a very dark tone of blue/purple might be better? If you offset the tone from pure black, then it might be possible for fog to work in a lighter tone; eg Black-Purple with Purple-Orange haze (Random example; I don't suggest actually using that).
In relation to the ships position/trajectory, it would probably help to give them a good silhouette. If you can identify the class of ship from a distance you'll probably be able to tell what direction they're facing. Harder to sort out in the non-final stages, I suppose.
In terms of speed and distance, Perhaps some sort of "landmark" stars and planets might help somewhat?
That said, I'm working with a knowledge of 2D works, not effects, and it may not help at all. I'd like to help more, but I can't pretend to know what I don't, haha. I do hope someone can help you though!
Some guys a semester below me at my university just finished this for a little sideproject Starry Sky
The fog is basically just a continuous stream of circles, coloured according to a certain scheme, getting larger and more transparent with time until they disappear. If you're really interested in implementation, I could get you their email-adresses, but for now, maybe it's just good for a little inspiration.
bw,
Tobl
Think my post was helpful? Want to thank me? Nothing easier than that: I sure am are a sucker for reputation, so just give it a little keycode 38 if you like. ^^
Right now I can't help but thinking straight black is a bad idea. Perhaps a very dark tone of blue/purple might be better? If you offset the tone from pure black, then it might be possible for fog to work in a lighter tone; eg Black-Purple with Purple-Orange haze (Random example; I don't suggest actually using that).
Sounds good, I just tried making the skybox translucent and putting different colors underneath. blueish tones really look better than black.
In terms of speed and distance, Perhaps some sort of "landmark" stars and planets might help somewhat?
[/quote]
What I am wondering is wether you add those landmarks as 3D objects, or do I blend them into my skybox?
While I can't go for top-notch graphics (I'm doing this for fun), I wonder how game devs go about this.
Some guys a semester below me at my university just finished this for a little sideproject Starry Sky
The fog is basically just a continuous stream of circles, coloured according to a certain scheme, getting larger and more transparent with time until they disappear. If you're really interested in implementation, I could get you their email-adresses, but for now, maybe it's just good for a little inspiration.
Cool project, maybe one could do something similar in 3D with a particle engine. Maybe not for large-scale fog, but it could produce some nice engine trails, I imagine. Hope I can go about that later.
A few space stations or outposts would be cool and add depth perception, I feel. How about an asteroid belt for positional reference? Real outer space has some bright objects like red giant stars, nebulae, novas, and super novas. These could be made sprites or stationary textures and would look okay if the wall of the skybox is far enough from the viewer.
Clinton
Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.
Many space games seem to have static "stardust" that doesnt move so the player has a sense of his motion. But I can't spawn millions of particles all over space, and generating them around the player seems costly too.
I actually think this could be a good solution to create the illusion of movement as your travel through it. You certainly don't need millions - a few thousand should do, and be cheap performance-wise.
You can use an infinitely repeating cube of particles that "scrolls" with the camera like is commonly done for precipitation (see "Dynamic Weather Effects" in Shader X7 for an example of this).
You could also add some "virtual" information added by some ship computer which could approximate distances, directions and velocities with transparent lines/grids/whatever looks cool
Like if you are traveling fast it might make it look like you are going in a tube of sparsely placed virtual circles (the aster they come the higher speed)
Thanks guys, you have been really helpful. I'm getting a copy of ShaderX7 from amazon.
Also adding some Heads Up Display of ship information is a great idea and would be cool and helpful at once.
Edit: I added a particle engine now and I found engine trails to work really good for that "3D-feel". Trying to add star dust now.
lack of visual orientation cues (which way am i headed, and which way is up?) are your problem.
been there - done that.
i've done both faster-than-light and sub-light flight simulators. the best method will depend on the speed of the ships, but for both methods:
1. fog:
lose the fog. there's no fog in space, and fog is cheating. it should be possible to draw everything to scale all the way down to one pixel in size before you hit the far plane (except maybe the skybox). as i recall, the solution there is to do a first pass where you draw the skybox, then a second pass where you draw everything that's supposed to be inside it. that way the skybox is always in back, and the ships, planets, etc are in front of it. as i recall, a very large far clip plane was required for both games, perhaps something on the order of 10000 units, vs the more typical 1000 (assuming a near plane of 1). once you're done, you might toss in some fog or AA to soften it a bit. but higher rez sharper graphics with dramatic lighting are what you really want in a space sim. hi rez realtime raytracing is the holy grail of space sim graphics.
2. skybox:
put stars on the skybox. animated skybox textures can be used to make all the stars in the sky twinkle.
3. visual orientation cues:
to aid in orienting the player (very important in a space fighter sim), draw distant galaxies just inside the skybox in the 6 cardinal directions (up, dn, left, rt, fwd, back). you can also add additional distant galaxy graphics to "fill out" empty areas of the sky. (warning: distant galaxy graphics are cool and addictive, its easy to go overboard). you can also use animated textures to do distant sparkling stars etc, instead of distant galaxies. each of these unique stationary distant objects acts as a landmark to help the player get their bearings. if the battle occurs near a spaceport, planet, asteroid belt or other "terrain object" in space, draw that too.
4. lighting and shadows:
don't forget lighting. lighting is everything in a space scene. lots of diffuse, very little ambient. lots of well defined shadows. its should look sharp, and harsh, and stark, not soft, fuzzy, and foggy. although difficult to do, realistic shadows will do wonders to provide visual orientation cues.
5. if your ships are supposed to be travelling faster than light:
use a particle system of streaming stars around the ship. 100 particles in a box area in front of the camera should do it. this gives you the star trek streaming stars effect. i used this method to good effect in my star trek flight simulator (SIMTrek / SIMSpace). the particles are actually lines with a head and a tail, whose length is a function of the light speed (faster = longer tail). put stars on the skybox. the motion of the stars as you move and turn gives an excellent sensation of movement.
6. if your ships are travelling at sub-light speed:
throw in the odd streaming small asteroid (al la wing commander) to enhance the feel of forward motion. this again is a particle system, but maybe only 10 or 20 particles, drawn as asteroid billboards or models. i used this method (skybox, distant galaxies, starbases, planets, etc - but no animated textures) to good effect in my space fighter simulator (Gamma Wing).
once you have all that you can add nebulous clouds etc with translucency, either as an inner skybox layer (moves with the camera) or as objects that you fly past / though.
as mentioned in other replies, a HUD helps for those players comfortable flying on "Instrument Flight Reference".
as you've also noticed by now, those flames coming out the engine cones help a lot. don't forget to animate them! <g>
fog:
lose the fog. there's no fog in space, and fog is cheating.
[color=#800000]I agree totally.
2. skybox:
put stars on the skybox. animated skybox textures can be used to make all the stars in the sky twinkle.
[color=#800000]I disagree totally with the twinkling. Stars only twinkle if there is atmosphere or maybe a "space dust" cloud dense enough to cause it when the ship is moving.
Clinton
Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.