Welcome to MSDN Blogs Sign in | Join | Help

You had me at "Hello World!"

XAML, WPF, Silverlight, .NET, Office 2007, Windows code samples and other interesting things

Syndication

Large Star Field in Silverlight - Taste of Game, Part 2

Edit2: After posting this, I made a significant improvement on the star field... will post it tonight. In the new version there's more sense of depth not just "dots" like the one below. The star speed and brightness now is calculated better (based on square of the distance and correct view angles). See the next update tonight...will look a lot better :)

A good space game can't go without stars :)

Source code: http://nokola.com/sources/StarFieldOld.zip (the new one is in newer post)

Check out the Silverlight star field below, its intentionally large-size so that I can finally appreciate the night sky :)

Edit: I'm stupid...Brightness should be in a range 0..1 (or 0..2 or something like that)...please add / 100.0 to the Brightness (star.Brightness = Globals.Random.Next(256) / 100.0;) when you download the source. I'll update the effect when I get back home tonight.

It looks 1000 times cooler with the correct opacity...

Notice the dimmer, slow moving stars in the background. Notice the CPU usage. It's 2-3% 1080P here , if it is higher on your side, please ping me!

Also, since I made the background, you are free to use it for your purposes (credit me or not - I don't care)!

Below the Star field read a few notes on how its built.

this is the Old version of the star field.

Stars are represented with Ellipses on a Canvas. Each star has a X, Y, and Z (distance) position.

The X and Y are just normal screen coords (e.g. 0..1024 for X), depending on the control/screen size. The Z is in the range 0...1.

1 means "farthest". Z determines how fast the star moves and the size of the Ellipse.

Each star has a Brightness as well - approx 0..2. You can probably see why I chose Z to be from 0..1 now - because Z * Brightness = Star control's Opacity. It just makes things easier...

 On every frame I move the ellipses - see the code.

Published Monday, August 10, 2009 8:54 AM by nikola

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Large Star Field in Silverlight - Taste of Game, Part 2 @ Monday, August 10, 2009 9:15 PM

Very cool!

However, instead of using DateTime.Now to track the speed, I think you should be using RenderingEventArgs.RenderingTime to get the exact time of the frame:

private void CompositionTarget_Rendering(object sender, EventArgs e)

{

   RenderingEventArgs args = (RenderingEventArgs)e;

   TimeSpan now = args.RenderingTime;

   if (!_lastUpdate.HasValue) //First assignment

   {

       _lastUpdate = now; return;

   }

   double msec = (now - _lastUpdate.Value).TotalMilliseconds;

   ...

}

http://msdn.microsoft.com/en-us/library/system.windows.media.renderingeventargs(VS.95).aspx

Morten

# re: Large Star Field in Silverlight - Taste of Game, Part 2 @ Tuesday, August 11, 2009 12:22 AM

Hi Morten!

Thank you...this is really interesting. The Silverlight IntelliSense gives me "do not use" for the property RenderingTime...although it seems to be working.

I'll check with the Silverlight team tomorrow to see if this is an issue with the documentation or they had a valid reason (speed improvement most likely) for this.

Until them I'm using DateTime.Now just in case :)

Thank you for your suggestion!

btw, the new version of the StarField is going out in ~15 minutes...please let me know which one you like better (the new or the old one..)

Thanks,

Nikola

nikola

# re: Large Star Field in Silverlight - Taste of Game, Part 2 @ Tuesday, August 11, 2009 12:51 PM

I already asked about this, and it's apparently a documention error. They are working on fixing it, but MSDN takes months to update : http://silverlight.net/forums/t/115994.aspx

Morten

# re: Large Star Field in Silverlight - Taste of Game, Part 2 @ Tuesday, August 11, 2009 1:27 PM

oh ic...interesting

I wonder if there's any perf implication by using it, anyway. Maybe there was in the beginning and there isn't one anymore (this is a speculation - I'll ask)

nikola

# re: Large Star Field in Silverlight - Taste of Game, Part 2 @ Wednesday, August 12, 2009 5:32 PM

OK please post what you find. I would be interested in knowing those details as well.

SharpGIS

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
Page view tracker