Windows Phone MIX10 presentations


Videos of the Windows Phone 7 Series presentations from MIX10 are now available online.

For an introduction to the platform, start with Joe Belfiore, Charlie Kindel, and Istvan Cseri.

If you want to make games (or apps) using XNA, start with Michael Klucher, then check out my talk (not just demos, but demos which include cats!) plus Cullen Waters on tooling.

If you want to make apps (or games) using Silverlight, start with Shawn Oster, then Mike Harsh, Peter Torr, and Seema Ramchandani.

Last but not least, if you want to make money using either XNA or Silverlight, check out John Bruno and Todd Biggs discussing the Windows Phone Marketplace.


Comments (17)

  1. Awesome presentations! Specially yours, but everyone was really great.

  2. Pete says:

    Shawn, on minute 14:55 you said: "… if you declare a local variable of a value type, local variables go on the heap, so the value type is directly on the heap".

    This phrase really puzzled me, since afaik in C# (and other languages) unless the local value-typed variable gets captured by the CLR when it escapes from the local scope (ie: when you use iterators or annonymous delegates), that local variable will reside on the stack until the method ends.

    So, was it "a typo" in your speech? If not, where’s the catch? 🙂

  3. ShawnHargreaves says:

    > local variables go on the heap

    That was a speako, I meant to say stack 🙂

  4. Jamie says:

    I would love to hear more about how you used IEnumerable and yield to process a cool AI state machine!

  5. Steve Williams says:

    Great talks.  I really want my team to see these, but we have a block on streaming videos, and there is no way to download them that I can see.  I can see them because I have rights to bypass the block, but even if the videos weren’t blocked I don’t want to pay the download cost of every member of my team streaming the videos individually.  Is there a way to download these videos so we can serve them locally?

  6. ShawnHargreaves says:

    Hi Steve,

    The page for each talks includes download links for a couple of different video formats, plus the .ppt deck.

  7. Pete says:

    > That was a speako, I meant to say stack 🙂

    Lol.

    > I would love to hear more about how you used IEnumerable and yield to process a cool AI state machine!

    Ditto.

    > Is there a way to download these videos so we can serve them locally?

    Like Shawn says, you can download them. I did to later watch’em on my Zune.

  8. Tom says:

    Awesome talks, thank you for sharing them!

    You described the balance between pixel cost, number of pixels, and frame rate.  How about battery life?  I was wondering about this as I watched the closeup of the tank with the pixel lighting and, later, the huge # of cats.  If you optimize your game to run faster than 30Hz but cap it at 30Hz, will you see corresponding improvement in battery life?  I could imagine even giving the user controls to say, choose a lower resolution to prioritize battery life over visual quality.

  9. ShawnHargreaves says:

    > If you optimize your game to run faster than 30Hz but cap it at 30Hz, will you see corresponding improvement in battery life?

    Absolutely. The less work you do, the more time the hardware is idle, and the more it is idle, the longer the battery will last. You can carry this to extremes: an app that does nothing at all will have better battery life than one that draws complex animating graphics 🙂

  10. Jamie says:

    Are there publish performance vs battery life documents anywhere? Is it similar to the Zune?

  11. Steve Williams says:

    I see the download links now.  I’m sure I didn’t see them there yesterday.

  12. ShawnHargreaves says:

    > Are there publish performance vs battery life documents anywhere? Is it similar to the Zune?

    No documentation that I know of yet, but you can expect much more about such things (on my blog, and of course the official docs on MSDN, and probably other places I don’t know about yet too) as we head toward RTM.

    At a high level, yes, all mobile devices are similar in that the more time the chips are idle, the less power is used. The XNA Framework game loop (Update, Draw, SuppressDraw, etc) is basically the same on Windows Mobile as it was on Zune.

  13. ShawnHargreaves says:

    > I see the download links now.  I’m sure I didn’t see them there yesterday.

    Strange. I wonder if they temporarily took down those links while they were sorting out the bandwidth issues? Seems like the site got hit pretty hard right after MIX finished and the videos went up 🙂

  14. Alejandro says:

    Excellent talks! I’m impressed with the computing power available, at least the demos showed are top notch.

    It feels you can basically do everything with the predefined effects. I guess the custom effects when implemented would work mainly for post-processing, although as demonstrated by the basic effect, working at somewhat expensive per-pixel level operations eats up a lot of the available processing power.

    Skinned Sample: Up to 72 bones, seems a lot. I don’t remember quite well because haven’t really used it, but even the XBOX sample comes with less bones per vertex pass am I right?

    Really looking forward to get one of those phones and start fiddling around!.

    > I would love to hear more about how you used IEnumerable and yield to process a cool AI state machine!

    Interested in it too. After looking at your talk (awesome!! let me say) tried to look more info around the net and actually can’t get my head around it… even less people using it as microthreading, scheduler and all included.

    I would love to hear how this works. Maybe a nice post with an example of how an enemy would be running around, try to fire at another enemy/player, but it gets hit and sits there waiting for the animation to end? :p.

    I guess that for very complex state machines you should then write an state machine and not rely on compiler magic, but either way seems very very useful.

    Great blog! non-stop knowledge source. And it looks like it will never stop. Thanks a lot.

  15. ShawnHargreaves says:

    > Skinned Sample: Up to 72 bones, seems a lot. I don’t remember quite well because haven’t really used it, but even the XBOX sample comes with less bones per vertex pass am I right?

    The new SkinnedEffect supports 72 bones on all three platforms. Yeah, that’s more than you can fit if you just do a simplistic array of float4x4 matrices like in our existing skinning sample. We did more work to pack the bone transforms into 4×3 format.

    > Maybe a nice post with an example of how an enemy would be running around

    It’s on my list, thanks for the suggestion!

    This will probably come after I run out of GS 4.0 topics, though, so it’ll be a couple of months out.

  16. Alejandro says:

    > We did more work to pack the bone transforms into 4×3 format.

    As I said, something new everyday! :). Googled a little and it seems quite a good idea!. In your implementation what do you do? Expand to float4x4 in the vertex shader? work directly with the 4×3 matrix (or as I read, the transpose of it so it would compile as for dp4s  ???)? And also in your experience apart from gaining more free registers, does it comes with a performance gain?

    If that’s the case, why isn’t it used for everything? The view matrix also has a 0,0,0,1 homogenous column.

    I don’t know about the projection matrix though, it uses 5 floats of the 16 available, but aren’t arranged in the same way as world or view matrices.

    Excuse me if I seem to be oversimplifying the underlying consequences, still trying to grasp the tids and bits.

  17. ShawnHargreaves says:

    > In your implementation what do you do? Expand to float4x4 in the vertex shader?

    The vertex shader works directly with 4×3 bone matrices.

    > If that’s the case, why isn’t it used for everything? The view matrix also has a 0,0,0,1 homogenous column.

    The view matrix is never actually passed through to the GPU. This is precombined with other matrices on the CPU, so the GPU just sees a concatenated WorldViewProj matrix.