HUD: For now I added a line for each ship to indicate its current target. There is a lot to be done, like showing the estimated flight path (which should be curved rather than straight). Right now it is a wirefrime line, but I would want it to be a translucent and add a subtle glow effect.
Particles: Added a threaded particle system. This makes things come to life, I added basic explosions and engine trails, but they are really ugly because I can't draw ;). I am working on that "star dust" thing right now, which will be hard because I cannot reposition particles right now to implement an infinite scrolling cube, only spawn new particles.
You're definitely getting there.
The stars do look a smidge on the bright side, as mentioned elsewhere.
I myself like the busy screen, reminiscent of scenes from star wars. More action than the player can track can help with immersion. Although too much can lead to confusion and then frustration.
For the HUD, have you considered the horizontal and vertical onscreen compass displays used in early HUDs on fighter aircraft? With a big giant compass down the left side reading 10 degrees up pitch and another one across the top reading a heading of 270, its hard not to tell which way you're going.
I assume you mean you have yet to implement moving particles and only have stationary types.
if so, and you keep different types of particles in the same array (linked list etc) with a type field (rock, explosion, etc), then the moving cube is easy to implement using your current array. define a new type: moving_particle (or whatever). create 100 or so at random locations in a cube around the ship. each frame, call a routine that moves the moving_particles towards the back of the ship by an amount based on the speed of the ship by changing the x/y/z position. when they reach the back of the cube, generate a new random position at the front face of the cube. in a left hand coordinate system in object space this would be moving them in the -z direction, then regenerating them at the positive z face of the cube, at a random x,y location on that face. This is probably the best way to implement it, in object space. when it comes time to draw, you have a nice cubic particle field surrounding the ship already specified in object space coordinates. for each particle, simply apply the ship's world transform to move it out to the ship's position and orientation, then draw as usual.
for drifting space dust, you may want to consider alpha blended billboards or some other technique that lets you represent more than one chunk of dust with a single particle to keep the overhead of the particle system down. but try it first and see. Like Michael Abrash said at the '96 Gamedev conference lecture on the Quake engine, computers are really good at doing the same simple thing (like moving a particle) lots of times in a row really really fast. the problem is that graphics cards are not good at drawing large numbers of batches of just a few dynamic triangles per batch, which is exactly what games do and need. vidcards are good at the opposite, drawing a few batches of a vary large numbers of static triangles. So 10,000 particles may be doable, but not drawable. OTOH, I've gotten pretty good results on the infamous "10,000 blades of grass" challenge in my current project on a baseline PC with just an on-board graphics chip, so the horsepower may be out there to go stardust crazy. Note however that i'm definitely not using one triangle per blade of grass, something more like 2500 triangles to draw 500 meshes with grass blade textures, and yes, they do move!
stardust - grass blades. swaying - drifting. same idea - different texture.
can't wait to see the next round of screenshots!