World in 7 days, Days 2, 3 and 4: Stars and planetary systems

Published February 27, 2014
Advertisement
I haven't updated in long time but this doesn't mean I haven't worked. In fact, I am splitting my work hours between this project and GAMIFICATOR(TM) ;) and I'm now on day 4 of making world.

Currently my galaxy can hold up to 5.4 * 10^13 stars (that's a lot). You can check out the most current version HERE (click me), the seed is set so no voice-created universes for you. The interface is clunky, sometimes it gets stuck (reload if that happens), and sometimes it generates gas giants next to the sun, with couple dozen earth sizes in diameter, and a fraction of its mass. But we're not here to nitpick, are we? We're here to generate UNIVERSES biggrin.png.

So, let's do a writeup of what has happened so far (with sprinkle of pretty pictures):

What I had previously was looking pretty, but ultimately doomed to fail, as it had no level of detail progression. Which means I was limited by the amount of stars in the galaxy. Bad thing. I've started working on it, and had some pretty funky results:

10.png

Finally I have created really nifty looking galaxy:

13.png

That's more like it, but still not good enough. I needed to walk away from prettyfying, and move back towards optimisation, to allow the amount of stars that I wanted (granted, this galaxy would be more than enough for what one person can experience). So I've started implementing octree. It took me majority of Day 2, and I was left with something that visualised to this:

12.png

Ooh, pretty colours. Still, it didn't feel right. On third day I sat with my good friend Theo, and implemented non-persistent node implementation, that created node ID based on its location and depth, and created seed out of that. This allowed for repeatable generation of data without the need to store the data structure. The seed code looks like this: void FillOutNode(int x, int y, int z, int depth) { ulong mask = 0xffffffffful << (nodeDepth - depth); float minX = (float)((ulong)x & mask); float minY = (float)((ulong)y & mask); float minZ = (float)((ulong)z & mask); float length = 1 << (nodeDepth - depth); ulong nodeID = FindNodeIDBin (x, y, z, depth); int currentSeed = nodeID.GetHashCode() + universeSeed.GetHashCode(); Random.seed = currentSeed; // STUFF HAPPENS HERE } ulong FindNodeIDBin(int x, int y, int z, int depth) { ulong mask = 0xffffffffful << (nodeDepth - depth); return ((ulong)depth << 36) | (((ulong)x & mask) << 24) | (((ulong)y & mask) << 12) | (((ulong)z & mask) << 0); }
Neat, eh? Well, this gave me neat spatial partitioning:

16.png

Rest of the day was spent on adding space navigation (ooh sexy starjump code) and starting to add proper star data generation, which continued into day four:

19.png

And on day four I've added planet generation:

20.png

Well, that's what I have so far, going into day 5, on which I'll focus on moving into planetary system mode. So far the problem is following: To allow for enough precision, I had to position the stars at pretty close locations. Going into planetary system will mean that the precision will need to be insanely higher (if we're to allow, say, visiting planets, which is the goal of this whole exercise). Smooth transitioning between different speeds will be interesting, but I think I can make it. That means also displaying of the planets and sun, which will also be fun ;).

I'll also want to do an update on GAMIFICATOR(C) some time before the end of the week, but don't know if I'll have time to do it. I reserved time on Sunday and Tuesday evenings for it, so that progression doesn't stop. So far so good smile.png. The GAMIFICATOR (patent pending) started as a tool to help me become productive, and I've spent more time polishing it and being productive on it than with any other recent projects. I guess it's serving its purpose even before it's finished ;).

So, again, I hope I'll find some time to develop some more.

See you then!

[color=rgb(40,40,40)][font=arial]===========================================================================================[/font][/color]
[color=rgb(40,40,40)][font=arial]Story so far:[/font][/color]

Days 2, 3 and 4: Stars and planetary systems
Day 1: Galaxies
Previous Entry GAMIFICATOR
5 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement