XNA Essentials

Game Programming for Xbox 360, PC + Windows Phone

NAVIGATION - SEARCH

Dream Build Play 2009 Challenge

Registration opened today for DBP 2009. Team registrations will open later in April.

If you have a game on Xbox LIVE Marketplace and you can still enter it into the competition. One of the winners of the first DBP competition, James Silva, just recently had his game published on Xbox LIVE Arcade. The title of the game is The Dishwasher: Dead Samurai. Go download and a trial and give it a whirl.

Get working on your own entry to win a huge amount of cash. Not only that, you can sell your game on the Xbox LIVE Marketplace as soon as it is ready!

Happy Coding!

-Chad

Microsoft XNA Game Studio 3.0 Unleashed Book Has Arrived

My second book, Microsoft XNA Game Studio 3.0 Unleashed has just left the printers. I received a copy of the book yesterday. It is available for purchase from Amazon and other retailers. This book includes 9 new chapters in 3 new sections. These include chapters on creating games for the Zune, creating multiplayer games and best practices to sell games on the Xbox LIVE Marketplace.

More information about the book can be found in the Unleashed section of the site. The errata for the book has been started and can be found here.

I will be revamping this site and will include forums directly on this site so we do not have to use the Amazon forums. I realized recently that the Amazon forums were country dependant and there were posts I didn't see from the UK. Having the forums on my server should help with that. I'm working diligently to get them up soon.

Happy Coding!

-Chad

XNA Game Studio 3.0 Final is Released

XNA Game Studio 3.0 was released today. All the goodies can be found over at the Creators Club website: http://creators.xna.com/

There is a new starter kit. It is called 'Platformer' and it creates a project for all three platforms (Windows, Xbox 360 and the Zune). It is a great way to dig in and see some of the ways to use one code base to run a game on multiple platforms.

Don't delay, go download your very own copy of XNA Game Studio 3.0 today!

Happy Coding!

-Chad

XNA Game Studio 3.0 Beta

Hello XNA Game Studio 3.0 Beta! I'm excited that this is here.

Right on the heals of the Zune 3.0 software and firmware update today.

XNA GS 3.0 Beta allows us to develop games for our Zunes.  With the CTP that was released in the spring, the Zune device had to reboot anytime a game was closed.  Fortunately, they have made it so closing a game now doesn't require the device to reset itself.  I'm very happy about this, but I really wasn't expecting it.  I am sure it wasn't easy to make sure that no game was hogging up resources after it was closed. UPDATE: I was incorrect in the above praise. It seems the two games that were installed with the Zune 3.0 update (Texas Hold'em and Hexic) do not require a reboot, but normal XNA games do.

You can write code for the Xbox 360, but you can't deploy to it in the beta. We can compile our code for the Xbox 360 and that is helpful, but we can't deploy.

That reminds me ... the Dream Build Play contest is winding up.  Submissions have to be in by September 23rd.  As a reward for just submitting an entry, Microsoft is giving away a 4 month premium creators club membership.  That is $49 value - just for submitting an entry.

Again, to submit a game for DBP it needs to be an Xbox 360 project which means it needs to be compiled with XNA Game Studio 2.0.

So get a game submitted!

GameFest 2008

I enjoyed GameFest this year, but there seemed to be a lot more excitement last year.  It may have just been that there were so many announcements last year and the entire DBP finalist and winners.

The big news announced was the fact that Microsoft is 'allowing' game creators to sell their games on Xbox LIVE Marketplace.  I used quotes because if you want your game on Marketplace - it has to be sold.  You will not be able to give your game away.

So at this point you can sell your game for either 200 points (about $2.50), 400 points (about $5.00) or 800 points (about $10.00).  Microsoft takes at least 30% of the sales.  Making 70% on a product in this type of distribution model is excellent.  Additional fees (yet to be determined) will be deducted for transactions and similar things.  If Microsoft puts your game on the 'Featured' page in the Marketplace then they will take an additional 10-30%.  There is no details at this point regarding how games will be picked for this list.  It will be based on some heuristics, but they are still flushing that out.

It is up to the developer as to which tier they want to sell their game in.  There is one exception to this.  If the game is over 50MB (compressed) then it cannot be sold for the lowest tier (200 points).  It must be sold in the middle or high tiers.  It is no problem for a game that is under 50MB to sell for more than 200 points.  The maximum size a game can be (compressed) is 150MB.

Microsoft announced a new dashboard look and feel a couple of weeks ago during E3.  This new look is to try and help with the enormous amount of content in the marketplace.  Because of this new dashboard, when a game is created a new requirement is to also create 'Box Art', which is basically what it says.  If your game was shipping in a box, what would the front cover of the box look like?  There may be a requirement (will definitely be an option) to provide more information like 'Slideshows' which also fall in line with the dash's new look and feel.

I listened to a talk from Frank Savage, who has a new title of Architect.  Frank's talk discussed a few things, but he mentioned 'Frank's 3rd Law' which states:

Optimize because you must not because you can!

So this falls right in line with the whole premise of performance that I go by.  You have to measure.  By measuring you can determine if your game (or application) is performing well enough to meet the goals of the project.  So measure, measure, measure.  Make notes on some code that may be a problem area if frame rates start to suffer, but don't just dive in and really optimize that code until there is actually a problem.  Spend that time writing better game play, or AI or Physics or anything else that is needed for your game.

Shawn Hargreaves had two talks.  One was regarding the Content Pipeline (Eli Tayrien also had a talk on the Content Pipeline) and the other was on Networking.  As expected, both of Shawn's were very good.  In the Content Pipeline talk, I learned about Opaque data which is data you can set in the modeling program that your Content Pipeline can read in and do something with it.  For example, let's say you build out an entire 3D level in Maya or 3D Studio Max.  You can put place holders in the level for Triggers for example.  Those meshes can be assigned Opaque Data that the Content Pipeline can look for.  When it finds a mesh that has that Opaque Data custom processing can be done.  For the trigger, the code may remove the actual dummy mesh that was used and create a custom trigger that your game can understand.  I used this method about 10 years ago when I worked on a train simulator.  I didn't have a nice content pipeline to strip it out and had to do it at run time.

His networking talk was phenomenal.  Between this talk and a few from the XBOX LIVE track that I attended I learned that the goal for a game is to not send any more than 8kb of data per second.  It is extremely bad to send network data at the same rate as your frame rate.  Sending 60 packets a second is not a good thing.  In another talk they mentioned 15-20 packets per second was good.  Something that may not be immediately obvious is the fact that 8kb is not just game data.  It also includes the Xbox LIVE header information for the VDP packets (UDP with some encryption specific to Xbox LIVE).  It also includes all the voice data.  So if you have 16 players in a game and they all talk at the same time the 8kb is used up.  While this is acceptable in the Lobby, it isn't during the game play as no game play data will be sent.  So it is a good idea to limit who all hears each other.  Some ways to limit this is by proximity in the game world.  Only the players 'physically' close to each other can hear each other chat.  For some games, perhaps a way to accomplish this is by only allowing teammates to chat.  It was also mentioned that latency (the amount of time it takes for the player to actually receive the packet) is about 500 milliseconds (.5 seconds).  This is pretty significant.  So network prediction is really required.  This involves passing enough information to take an educated guess of where the object will be by the next time the next packet arrives.  A good example of this is on the creators club site in the Network Prediction sample.

Mitch Walker had a couple of talks as well.  I ended up writing the most with his talks as he had a lot of bullets in his power points.  He had a talk discussing what is new in 3.0.  The second talk was about creating great community games.  Both were very good.  I enjoyed going to all of the XNA Game Studio sessions.  The sessions were repeated the second day so I was able to hit a couple of other tracks.  Well, I went to one other track beside the Xbox LIVE track.  I attended two Casual Game sessions.  Both discussed Silverlight.  I enjoy working with Silverlight and was excited to see it being talked about.

Overall it was a very enjoyable conference.  I had a good time and learned some new things.  I met a couple of new people as well, so that is always good.

Good things are coming with XNA GS 3.0...

Happy Coding!

-Chad

Free 1 Year XNA Creators Club Subscription

Well technically it is a Trial subscription, but it allows you to deploy games to your Xbox 360.  This is not a premium subscription, so you won't be able to submit games to the current beta site (for XNA Game Studio 3.0 CTP) or review other's games and you won't be able to download premium content like the Ship starter kit.  But, being able to deploy a game to your Xbox 360 for free is definitely a good thing!

How do you get this free subscription?  Easy - just sign up to be a part of the Dream Build Play competition.  The competition is only for Xbox 360 games (this is why Microsoft is giving away the subscription trials).  The grand prize winner will get $40,000!  That is a nice chunk of change.  The winner may also get to sign a deal with Xbox LIVE Arcade much like some winners from last year's competition.

So don't just stand there ... get the free subscription while it is available and start working on your entry!

Happy Coding!

Chad

New Tutorial: Storing and Retreiving High Scores

A new tutorial was just added to the site.  It is a section from Chapter 21 in the book.  It shows how to create, load and save a high score list on disk.  It works on the Xbox 360 and on Windows.  It has also been added to the XNAWikiNick Gravelyn started up the site and hopefully it will contain a lot of good content in the coming months.

Happy Coding!

Chad

Microsoft XNA Game Studio 3.0 Unleashed

I am in talks with the publisher about the upcoming book Microsoft XNA Game Studio 3.0 Unleashed.  The original Microsoft XNA Unleashed book which covered XNA Game Studio Express has been successful and has received many good reviews and has been recommended on the XNA forums many times.  Of course, with a technical editor like Shawn Hargreaves, it is to be expected.

Since there is only a year between XNA Game Studio 2.0 and XNA Game Studio 3.0 we decided to not create a 2.0 specific book.  I was going to create 4 new chapters for networking, but those will just be added to the 3.0 book.  Since the decision was made to not update the book to 2.0, I upgraded the code included in the book to 2.0 and released it yesterday.

Besides networking chapters, the new 3.0 book will also include information on creating 2D games for the Zune.  It will include features that are specific to that hardware device as well.  The book will also include information on distributing games on the Xbox 360 through the Xbox LIVE Community Games service.

All of the items that made the first book a success will be included: Performance Considerations, Physics, AI, Game State Management, Particle Systems, 2D Demos, 2D Parallax Side Scroller Game, 3D Demos, Extending the Content Pipeline (including the new parameters introduced in 2.0), and a complete 3D game.

There is a lot of information coming, so if you have bought the original book and are looking to learn some of the topics mentioned above it may be worth getting it now.  Otherwise, just sit tight and the 3.0 book should be released shortly after Microsoft releases the product (around Holiday 2008).  So it could be as early as a couple weeks after the launch, but could be a long as two months after the launch.  We can all hope for the former.

As always, if there are any questions with the current Microsoft XNA Unleashed book, please ask a question in the book's forum on amazon.com.

Happy Coding!

-Chad

Updated 2.0 code for XNA Unleashed is now available for download!

I am pleased to announce that the code for the book has been updated and is now available for download.  The files can be located at http://xnaessentials.com/downloads.aspx

As always, questions about the book, or the updated code can be directed to this book's forum located at amazon.com.

Happy Coding!

-Chad

XNA Essentials |

XNA Essentials

Game Programming for Xbox 360, PC + Windows Phone

NAVIGATION - SEARCH

Missing Code - Page 77 - Errata Needed

Hi Chad,

On page 77 you are missing the following line of code from the new Draw method:


 



graphics.GraphicsDevice.VertexDeclaration = _vertexDeclaration;


Otherwise you get an exception


System.InvalidOperationException was unhandled
  Message="A valid vertex declaration must be set on the device before any draw operations can be performed."
  Source="Microsoft.Xna.Framework"
 


garfbradaz - Thursday, August 19, 2010 @ 3:55 PM

Re: Missing Code - Page 77 - Errata Needed

The code is in place at the top of page 74. 


----------------------------------------------------------


Finally, we can change the original statement inside of Draw to set graphics device vertex
declaration to the variable we just initialized:


graphics.GraphicsDevice.VertexDeclaration = vertexDeclaration;


Now we are only creating the vertex declaration once and setting it once instead of every
frame. This is encouraging because we are now at about 3,230 fps on the Xbox 360 and
the performance is still the same on Machine A at about 207 fps. So just with a little bit of
effort we optimized our code from running at a mere 114 fps on the Xbox 360 to a more
reasonable 3,230 fps.


--------------------------------------------


Hope this helps,


Chad

Chad Carter - Monday, August 23, 2010 @ 7:25 AM