These last couple days I’ve started work on the star map. The idea is that a random number of stars, their planets, and the planets moons are generated. The numbers of star systems is somewhere between 15 and 20, maybe more or less, I’ll tweak it later. These are then arranged into “steps” according to how many minimum jumps I want the player to take to get from the current system to the destination system.
So if there were 15 stars generated, and I wanted 5 steps, the process would go as follows:
Take the first star and put it on it’s own “step”, it’s the start
Take the last star, and put it on it’s own “step”, it’s the destination the player is trying to reach
Divide the remainder, in this case 13, by the number of steps I want, 3 stars per step.
These means the second “step”, after the first, has 3 stars. So initially the player has three choices to move to
The next step has 3, then another 3, then another 3
The final step before the end step has 1 star, so the player must pass through it
Then the stars are randomly “connected” so that the player can always reach every star from the step above, but every star may not lead to the next step, so you have to move horizontally to a neighbouring star.
In-game the reasoning is that the computer has calculated what it thinks are the most likely jumps to get home after the player has been blasted off into space. Then the player can make their moves to get home, each time coming across random events. Each system may give the player something beneficial, or something bad.
It may not look like much, but here’s the work in progress:
I’m really very happy with the pixel-perfect lines and circles.
The names of the stars is randomly generated. I based the name list off how I understand stars are named. Firstly, they can be named after a constellation or a catalog designator, these are just stored in a big list. I put the list together from wikipedia. Then it’s just a dash and a randomly generated number. I like the results, it seems really spacey.
I’ve now implemented the sound a lot better, events can play sound effects. There’s also a couple of different background music tracks depending on the status of the ship.
I’ve added a main menu and title screen.
Here’s a gif of a problem I’ve come across. In between events, there’s no transition, it’s just “BAM” you’re in the next one. Without having a map or anything for you to decide where to go, there’s no natural break that I can put in. I’ll need to think about this some.
When the player clicked on “End” above, a new Event started immediately.
Meanwhile, here’s a video showing off sound and music and menus etc.
These last couple of days I’ve spent positioning and timing the blurts a little better, there’s still some work that needs to be done though. I’ve completed all of the dynamic text except for the officer names, which I’ll do once they have names, for now they don’t even exist.
I’ve added the blinking lights that change based on the alert state of the ship as well. These makes things look a lot more interesting and dynamic.
There’s still a lot to do. Next up:
Add some graphics to the main viewer
Position the blurts when there are multiple at once
Add the officers names to the blurts
Add a button that will show a “chat history” with all the previous blurts and probably previous in-game text
Add some music
Add some sounds effects, like a klaxon for the red alert state and a sonar ping for the green state
I’ve got an extremely short episode written that contains what I think is most of the elements to the game. Right now I’ve got a sort of playable thing happening except for variable text. There are variable options and blurts said by your bridge crew as well as random ones, but the text displayed to the player isn’t variable yet.
Considering the amount of pain I had trying to work out how to do this; I thought I’d write up something lengthy to explain how it works. It also helps me find if there’s anything in it that I don’t fully understand, else I wouldn’t be able to explain it.
I’ve spent a few weeks working on engine enhancements to what I’m calling “spaceengine”. In addition, I’ve cleaned up a lot of the code and made some corrections here and there.
You can faintly see the planet, but what’s great is the successive levels of bloom.
And here you can see my very simplistic atmosphere being rendered. I had attempted to implement proper atmospheric scattering but the topic is very complex and I was having a lot of difficulty with it.
All of the samples for atmospheric scattering I’ve seen rely on earth-like parameters and coefficients, which is fine, but I know in advanced I’m going to need very non-earth like planets.
So for now I’ve opted for a simpler approach that essentially let’s the planet define the colour and density of it’s atmosphere, and the shader simply checks for eye ray length through the atmosphere and adjusts the colour accordingly. It works well enough for now.
Finally, I’ve implemented shadows for nearby objects.
Next, I’m working on object picking and then I’ll be revamping my noisemachine to work sort of like libnoise by using modules. This will help me get my planet and moon textures looking good.