Seamless Scenery

So – we’ve banged on about “no hyperspace, seamless this-that-and-the-other” – what do we mean?

Traditionally – games have to shift in huge amounts of data (levels, textures etc.) in order to provide a larger game experience than will necessarily fit in your machine. Dominion will be no exception. Modern games do lots of subtle streaming on the fly, to pre-cache data, load it behind the scenes, etc. Often, less subtle techniques are used – and you get some “jarring” – where something masks the data loading operations required when a level changes. We’ve all cussed our hard-disks in the past waiting for the next level as we just bitch-slapped some bad-guys and finally got to level 8-1! The goal of Dominion is to let you see the universe about you as you fly around it. So you can fly between stars and see their planetary systems dwindle away behind you, and then zoom into view before you. You really can just point your ship in a direction, and hit the drive button… no auto-pilot or navigation required. Stop in deep-space, point at any star, and fly at it to eventually reach the system.

How do we achieve this seamless-ness?(!)

Well – again –  quite simply, with multiple scene graphs. As you may or may not know – computers have precision problems with floating point numbers (ie. 1.52326145) They can only store a number to a certain accuracy. Depending on how accurate, or how small/large the numbers you need – you get various issues when moving things about or rendering them. Objects wobble, or jump about a bit – or render with horrid tears in them. On modern-day PC’s you can use double precision numbers, which dramatically improve the accuracy and range of these numbers – but still, squeezing an entire galaxy into them at 1cm scale is… “tricky”, and we want Dominion to run on anything capable of wielding a GPU – notably smart-phones and tablets running iOS and Android. So we have to play counter-tricks. And this is our chief counter-trick…

Galactic Scene

First, we render the galaxy itself in its own scene (so all the stars, the pretty backdrops/stellar gas, etc.)







Stellar SceneThen, we render the star system scene (if you are in one) – being the star itself, and the planets in the system (if any).







Planetary SceneNext, we render the planetary scene as needed, with it’s satellites, planetary rings, etc.








Local SceneFinally, we render the scene local to you the player – space stations, asteroids, other ships, missiles and laser effects, etc.







The cunning trick is to then manage your view and position in each of these scenes as if they were all one. Trust me, writing the scene object management code has taken me numerous attempts and passes!

Scene Graphs

Clock-wise from top-left, we have the Galactic scene, the stellar scene (the blue dots are planets), the planetary scene (here, blue dots are satellites) and finally in the bottom left, the local scene – you might just make out the green dot as your ship, and a blue dot as the space station.






Right now, you can literally point somewhere – press “Thrust” and fly out of your local space, speed through planetary, out into stellar and then into galactic space and watch everything flee behind you without any stalls or interruptions. The same applies flying back into a new system.

But – at the moment there’s a but – that’s a lot of empty space to fly through. Not very interesting! You can’t really see that you’re moving even though your position in the scene is changing in a credible way. So we need to slap some “stuff” in to show movement, things appropriate to the scale of the scene you’re moving in – so small debris particles, dust clouds, and then larger dust clouds/wisps, etc. Hopefully, video to follow soon 😉


  • Facebook
  • Twitter
  • Myspace
  • Google Buzz
  • Reddit
  • Stumnleupon
  • Delicious
  • Digg
  • Technorati
Author: Mak View all posts by

One Comment on "Seamless Scenery"

Subscribe to The Dominium Observer Newsletter!