On diluted messages and inert platforms
Tycho, one of the co-authors of the venerable gaming comic strip Penny Arcade, made some comments about Microsoft and Microsoft bloggers that “Let’s Kill” Dave from Microsoft’s XNA team found objectionable.
To sum up, Dave doesn’t like the accusation that Microsoft bloggers are a “phalanx which encircles the web, [with a collective] position as explicit partisans [which] dilutes their message automatically.”
Are (Microsoft) Corporate bloggers “diluted”?
As an ex-Microsoft blogger, I see Tycho’s point of view: of course what we say as Microsoft employees is tempered by the many things that Dave enumerates in his response. That caveat applies to corporate bloggers from any company. But I wouldn’t have said that corporate blog messages are necessarily “diluted.” I would have gone with “influenced.”
I quite enjoyed walking the tightrope that had “your values and beliefs” on one end of the balancing pole, and “staying employed” on the other.
Let me take two examples from my blog where I talked about Vista (an easy love-hate target): I whinged when Vista was delayed yet yet yet again, by comparing Vista to Godot, who ultimately never showed up. But I also subsequently fought hard to help convince a conservative member of the Microsoft Ireland leadership team that, as part of Vista’s marketing campaign in Ireland, we should associate it with a popular and witty Irish duo whose potty mouths make Eric Cartman look like Charlie Brown. And I still believe that Vista even today could benefit from the edgier feel and half the love that aging Podge and Rodge get in Ireland.
[Update 28 Jul: What an awkward paragraph. What I meant to say is that if Tycho's concern is that the "phalanx" of Microsoft bloggers exists principally to parrot a company message, I instead found myself frequently blogging "off message" from any script he could care to imagine, and I was never criticized or repremanded for doing so.]
Remember also that Microsoft bloggers like Robert Scoble have been known to be unashemedly caustic towards Microsoft in the past, triggering appropriately passionate responses.
When reading a corporate blog, I consider what the corporate bloggers say, as well as what they don’t say. Sometimes silence is conspicuous. There were a lot of announcements and products I didn’t weigh in on as a Microsoft employee. Sometimes I was busy. Sometimes there was another reason.
So to sum up, I never would have felt the message of my MSDN blog was being diluted by Microsoft. Influenced, for sure, but since “full disclosure” of who employed me was explicit in my blog’s URL, I thought that my association with Microsoft should only make my blog more interesting.
Is Microsoft’s Gaming Platform Strategy “Inert”?
The one part of Tycho’s post that I do disagree with is that Microsoft’s gaming platform strategy has grown inert. As per my recent posts here (done post-Microsoft, by the way, in case you question my objectivity), XNA is continuing to deliver on Microsoft’s vision of bringing game development to the people on a current-gen platform. Heck, when anyone with a bit of coding know-how can create and share their own home-brewed Guitar Hero-esque games, everyone wins.
And speaking of sharing (and a dynamic platform strategy), XBox Live is still my favourite example of “software plus services” done right. As a member of that community, I see it as a rich and evolving online platform for community and gaming. (Aside: I agree with lowbrowculture – I absolutely adore my Nintendo Wii (and my Nintendo DS), but Nintendo’s online component is a train wreck. How can that company do so much right, and get the online platform so wrong?)
Let the XNA initiatives and XBox Live continue to evolve (it’s already happening more rapidly than I expected), and we’ll see what innovations continue to appear. It’s impossible for me to see the platform as inert when there’s so much exciting stuff going on as I write.
Dave, keep up the great blog, there’s a growing game dev community that is eager to hear from you! And Tycho, as always, I appreciate your candid commentary. Man, after over six years of reading your comics, I feel I owe you a pint or something.
What the heck, pints all around. There are some great microbrews here north of Toronto.
–
[Update 4:00PM: It occurred to me to wonder why, in the context of this discussion, did I not use a gaming example from my Microsoft blog? The pithy answer I gave above is that Vista's an easy target. But there are a few other reasons: (1) I didn't have a lot of negative news to convey about Microsoft's gaming strategy. (2) I didn't want to go anywhere near breaking Microsoft gaming news. I have good friends in some of the Microsoft game studios, and so I had (and have) to be very cautious about what I write. And (3) the entertainment division in Microsoft was notoriously the quietest of all divisions internally. Average Joe Schmoe employees like me often heard the really cool gaming news just moments before it broke. I guess they didn't trust us not to blab - and probably rightly so :) .]
Silverlight as WinForms Designer
Through Tim Sneath (who, at long last, I had the pleasure of meeting at Dublin’s IMTC) comes the most impressive Silverlight 1.1 Alpha demo I have seen since MIX07.
A company called NetikaTech has recreated a vast amount of the Windows Forms controls using Silverlight. And perhaps most impressively, there’s a mock-up of a Windows Forms Design Surface (of the sort you get in Visual Studio to build WinForms apps) which you can use to build the UI for applications – and then run the app you’ve built! No codebehind support yet — but it is very easy to see how Silverlight will ultimately facilitate rich development experiences in a browser.
To me, this also speaks to the fact that many of Microsoft’s next wave of apps – from Office to Visual Studio – are begging to be implemented in Silverlight. Because if Microsoft don’t give us all the richness of Word, Excel and Outlook’s user interfaces in a browser soon, someone else will!!
Truly impressive, Netika and Microsoft; I am dazzled by Silverlight once again. And to think this is just the Alpha!

A Wii Flock of Boids: Integrating the Nintendo Wii Controller with XNA
As part of my Last Stand demo, I showed how to integrate Nintendo’s Wiimote controller into XNA, first to navigate a butterfly around an environment by tilting and rolling the controller, and then to walk a creature across a tightrope wire by holding the Wiimote like a balancing pole.
I won’t be posting the code to this demo, but here is a description of how this works and how you can integrate the Wiimote controller with XNA, possibly to make your own Wiimote-controlled applications on the PC.
WiiMote Control:
I integrated the Wii controller using Brian Peek’s Managed Library for Nintendo’s Wiimote, which I found through Coding4Fun. Brian includes a test app which you can use to help connect and test your Wiimote. It took less than 20 minutes for me to integrate this library into XNA and map the accelerometers to the butterfly’s motion, but it had previously taken me 4 days and 8 (yes, eight) different attempts to find a Bluetooth adaptor that would work on Vista and speak with the Wiimote.
Having Windows talk Bluetooth to the Wiimote is the hardest part:
The Wiibrew Wiki offers a list of Bluetooth devices which can communicate with the Wiimote. Bear in mind that Vista seems to complicate things tremendously. Many of the drivers for Bluetooth dongles listed as Wiimote-compatible are incompatible with Vista, and when I forced two of them to install, they sent me from Bluetooth to Bluescreen.
I used the EPoX BT-DG05A Bluetooth USB Dongle. The Microsoft Bluetooth stack included with Vista never spoke to the WiiMote at all, regardless of dongle model on the PC. Instead, I am using the Toshiba Bluetooth stack (5.10.12), which Toshiba supports being installed onto Vista. Be forewarned that Toshiba’s stack, when installed on a non-Toshiba machine, has a built-in 30-day timebombed expiry. As of today, there is no way I could find to acquire a longer license to it… so Toshiba, please offer us a way we can license your stack.
Wiimote input is limited to Windows-based XNA games:
Once you get the Wiimote talking to my PC, having accelerometer input is very, very, very, very cool. Both the Wiimote itself and the Nunchuk that can be alternately attached contain 3 accelerometers each, with output normalized to gravity.
Although this provides Wiimote input for Windows games written with XNA, when I publish my XNA game to the Xbox360, I am unable to use the Wiimote. #ifdef statements in the code make the Wiimote bits conditionally compile for the Windows version.
Animation:
My butterflies are animated with the XNA Animation Components library, which you can download from Codeplex. Thanks to David Astle (who leads the project) for sorting out a little bug in the InterpolationController. It’s been fun making a (modest) contribution to that project.
Now I can significantly slow down the animation, and the engine smoothly blends between frames of Phil’s animations, giving the butterflies a really natural look, even when they’re at rest.
Flocking butterflies:
The autonomous butterflies follow the rules of Craig Reynolds’ classic Boids flocking algorithm, which encourage separation, alignment and cohesion of members of the flock. They avoid obstacles, and tend towards a target. Here’s the Boids pseudocode that I worked from – and it’s really cool how a high-level language like C# lets you work almost directly from that pseudocode!
Art Assets:
The butterfly and Mawg‘s models and animations, as well as the environment, were created by Phil McDarby and originally appeared in Still Life and Mind Balance. The skydome also appears in my Guitar Hero X-Plorer demo.
p.s. If you liked this, you’ll also like the Lego NXT Wii Bowling Robot!
Continue ReadingIreland’s Call – Source Code
You can download the source code from the Ireland’s Call demo here – obviously, this is provided completely free of any guarantees, and smells like code that was whipped together for a demo! Open the file Game.cs and read the notes at the top if you want to go exploring.
If you’re looking at the code, you’re probably interested in Guitar Hero X-Plorer integration or perhaps the HLSL shaders or maybe how I did the audio.
X-Plorer: This works just like a normal XBox360 controller. Do a seach for [XPLORER] in this file and you can find the relevant bits about how to manage the X-Plorer (including using the accelerometers to figure out if someone is tilting the guitar up to unleash “Star Power”!).
HLSL: I tweaked the High-Level Shader Language code found in the original Particle3DSample from the XNA Creators Club to also allow passing the colour of the fireworks as a parameter. OK, I know they look more like explosions than fireworks. Making them prettier is left as an exercise to someone who, unlike me, has more artistic ability than a slug.
Audio: I cut up the audio manually using an audio editing program called GoldWave. I now have immense respect for the folks who produced the real Guitar Hero audio – making it work is easy, making it sound GOOD and RESPONSIVE is really hard!! As a first approximation, what I did was very quickly fade in the start of each audio section, making sure it was cued so that you got an immediate, on-beat acoustic response.
The goal, of course, being that if you play with a steady rhythm, the song sounds fluid.
I had each audio section overlap a TINY bit: each audio clip plays a TINY portion of the next note before fading out, to make it a bit more forgiving on the timing. “Dead air” sounds awful between notes, as I am lacking a “background” track (i.e. all the other instruments in Guitar Hero.)
Hope you enjoy and don’t hesitate to contact me with comments, suggestions, feedback.
Continue Reading