Hi Darren
The initial tests I've been doing involve the use of basic tones in a pattern, rather than audio samples or effects like engines.
I want the player to feel like they are in a real environment, with ships and other objects passing by, chasing you or being chased by you.
The problem is providing a system to help the player identify the position of an object, or multiple objects.
It is in 2 dimensions only, like Treasure Islands, but you will be dogfighting at speed.
Using the stereo bias of left and right, provides information on objects to the left or right, but doesn't help when the object is behind you.
I'm aware of 3D sound, but I don't know its capabilities or how to do anything, even if its available.
The amplitude or loudness of an object can give an indication of distance.
I'm using a subtle change in pitch to mimic the doppler effect, which works okay.
At the moment, I have a system for prioritizing objects and assigning them to one of just a few sound channels. So you might hear a missile coming after you, as well as the ship that fired it, and perhaps a nearby asteroid.
On top of all this you will have throttle changes, weapons lock indicator, detection of sun and planet, weapons fire, shield and hull damage and warnings.
So it could get quite busy.
My current idea for hyperspace is that you can enter hyperspace anywhere, and you navigate through hyperspace like normal space.
You would hear beacons in front of you and to the side, much like your idea for ship engines.
If you've set a distant target system, then you would hear that too, possibly.
You would exit hyperspace on reaching a beacon. If you run out of fuel then you could become marooned in hyperspace.
I'm leaning towards being able to exit anywhere, but if you're not near a beacon then you would end up in a system with just a star.
This would also allow you to be diverted and ambushed by aliens, like in the original Elite.
The odd wormhole, in normal space, would spit you out directly into another, distant system.
Wormholes would be one way and bypass hyperspace.
Some of this is dependent on how the program develops when I add new functions. Sometimes a good idea can be difficult to implement, and a simpler but more effective solution appears unexpectedly.
Hope the above provides a flavour of what I'm aiming for.