The ZMan:
That's really cool, and a good sanity check for us to make sure we really did change what we meant to, and not anything we didn't!
How did you create these diffs? We use this tool, although I probably shouldn't recommend it to you since from a testing perspective it's more valuable if you check the diffs in some other way to how we do it :-) Also that tool has a few issues with parts of our Windows framework assembly, as it was only really tested with C# stuff and gets confused by some of our types that were implemented using C++/C++.
Some notes on your notes:
SpriteFontReader and GuideState are private types - these shouldn't affect anyone using the API.
SendDataOptions [enum] *changed*
Chat Does this mean text chat is now unencrypted and allowed?
That's the plan. You can expect some new EULA wording around this: in summary, you must not use the Chat flag for anything other than text chat data (sending game data unencrypted is not allowed), and must not send any text chat data without using this flag (because various governments get unhappy if you provide an encrypted communication channel).
FrameworkDispatcher *new* Something we can use?
Not really in this iteration. This is a first part of something we have a lot more plans for in the future - the basic thought is we have a lot of places in the framework that need regular pumping (AudioEngine.Update, NetworkSession.Update, GamerServicesDispatcher.Update) and wanted some place to hang these where they could be pumped from a standard location without tying all such components to our specific application model. In this version we didn't have time to refactor those existing things to use this dispatcher, but we use it for some of the media events, as it gives us a place to gather crazy asynchronous notifications from background threads and then raise the resulting event in the main thread at a safe point that isn't going to unexpectedly introduce data synchronisation issues. So today it doesn't do very much (mostly just implementation details) but it might grow to be more interesting in the future.
StorageContainer *changed*
StorageContainter(...., bool AlloweTransferBetweenPlayers...) Interesting - explicit file charing between profiles I think.
This is a private constructor - the info it returns is not surfaced up through any public API. We added that for the Arcade Extensions build (the bits people with devkits use to create XBLA games). These parameters control whether save games can be copied from one profile to another in the dash, and if an XBLA does allow that, lets the game detect whether such copying has taken place when they open the container. This is not very interesting for Community games (hence we didn't expose it in the public API) but is important for XBLA titles that support achievements, because there is a TCR that says you cannot let progress from a save game created by one profile count toward achievements if a different profile loads that save game.
FrameworkResources [internal] *changed* More stuff about leaderboards!
Again nothing public or interesting to Community developers in these changes - this stuff is an artifact of us adding the Arcade Extensions configuration for signed XBLA developers (which does support leaderboards). The kernel side functionality to enable that, and the public API that uses it, is only included in our special Arcade Extensions build, but when it came to internal supporting things like error messages and enum values, it was usually easier to just leave these in all the build flavors, since they don't hurt anyone and this minimizes the differences we have to maintain between configurations. Plus, who knows, I still hope I might someday be able to enable this stuff for Community developers as well!
Game *changed*
void SupressDraw()
This should be useful for Zune developers who care about battery life. It gives you a way for an Update call to check whether anything has changed or any input has occured, and if not, immediately put the device back to sleep without bothering to redraw the screen. Not useful if your game contains a lot of animation, but handy for things like card games that spend most of their time just waiting for input with a static image on the screen.
UnProject Looks like the subtle bug has been fixed - see if you can spot it!
Ok, now I'm impressed - how on earth did you notice that change? :-)
XNA Framework Developer -
blog -
homepage