Tuesday, May 1, 2007

Thoughts on Silverlight, Expression and Games

I just got out of the packed keynote for MIX 07 in the surreal universe that is Las Vegas. The event was set in an enormous hall at the Venetian with four cinema sized screens dominating the stage. You could see individual pores on each speaker. A band on raised stage was rocking out to sweet accordion music set to what appears to be lyrics about pickles. All around me are masses of developers, designers and Microsoft folks gabbing about art, Macs and revolutionary new technologies. Wait, where was the chatter about black helicopters and the joys of pragmatic Outlook maintenance? Cultural dissonance rocks my world.

The big news of the event is that Silverlight will have will have full .NET support. Silverlight, for those who haven’t been following the glorious web technology soap opera, is a cute little browser plug-in that allows you to build rich internet applications. I think technologies like this are good for game developers. More on that in a bit.

Expression Design is released
My product, Expression Design also went live Monday morning and I picked up a boxed copy at the event. To say the release process is like giving birth is perhaps extreme, but I’m very proud of my team. They’ve waded through swamps of vipers to get this product out the door and are already rearing to work on the next version.

Version 1.0 graphics tool are rather rare and mysterious creatures that few software developers get a chance to work on. I’ve been blessed with the opportunity to design three in my career and have come to realize that their promise is greatest even when their features are most limited. The next few years will be a rush.

SpaceCute supports Silverlight
If anyone is interested in dabbling with either Silverlight or Expression Design, it just so happens that all the SpaceCute graphics were built with these technologies in mind. To squeeze the delightful XAML marrow out of the SpaceCute files just follow the steps below:
  • Import the .design file in the zip into Expression Design
  • Click File > Export in the menu.
  • Select XAML as your file export type
  • Select “Silverlight”
  • Export.
Voila, you have a lovely chunk of XAML assets for messing about with Silverlight. You can now make a sexy, zippy, web-based version of SpaceCute that runs on both the Mac and the PC in Firefox or Internet Explorer. Here are links to all the files.
  • Download Silverlight: http://silverlight.net/Default.aspx
  • Download Expression Design: http://www.microsoft.com/Expression/products/download.aspx?key=design
  • SpaceCute Graphics: http://lostgarden.com/SpaceCute%20PNG.zip
Why web-based technologies are desirable for games
I’ve devoted most of my professional life to making complex game technologies more approachable and accessible for creative people. Silverlight and Expression Design are just a couple more steps along that path. I’m a big fan of runtime technologies like Flash and Silverlight because they offer two important advantages to small game developers.

Simple install: A massive percentage of (often upwards of 50%) downloads never make it onto the customer’s machine. That translates directly into lost sales for those starving indies of the world. A single click install where the player has instant access to your game allows you to capture player interest immediately. Once you’ve hooked them, you can stream in additional levels, cut scenes etc at your leisure. When you increase your initial conversion rate, you increase your revenue. It is simple math, but a bloody hard technological problem to solve well.

Reliability: Custom engines run well on the developer’s machine, but often fail in horrendous ways on a multitude of customer configurations. A mass market runtime backed by a company whose biggest value proposition is a great experience on the widest number of machines means you shouldn’t have to worry. The number of support calls a Flash developer fields regarding video drivers crashing their customers computers is substantially lower than the number fielded by folks who build a custom engine.

Areas for improvement
Obviously, not all game developers use Flash or Silverlight. If you look at top titles like Bejeweled, Peggle, or Aveyond they still use old school downloadable installers. In the past few years, there have been big obstacles to using browsers plugins as your primary platform for casual and indie game development. The good news is that these problems are slowly, but steadily being eradicated.

Robust programming model: Historically, you’ve been forced to program your million-line project in Javascript. As Dofus shows us, this is certainly possible. Yet due to issues with maintainability, very few folks want to do it.

This is the area that Silverlight addresses. The addition of a full-fledged language like C# should not be underestimated. You’ll start seeing more complex games with more intricate behavior. You’ll be able to easily create scalable, robust architectures using familiar tools. This advances us beyond ‘house of cards’ applications and opens up rich clients to the classically trained master programmers of the world. I am a great believer in their creative powers to blow our minds and change the rules of the game in the process.

Speed: Traditionally, web-based engines have been slow. Users are subjected to slow framerates, small number of objects on the screen and wimpy dynamics. It is not really surprising, given these limitations, that the majority of Flash games are simple action games or point and click adventures. Our runtime technology is barely capable of running games that were popular in the early days of DOS. With technology limitations, come genre limitations.

With Silverlight, you are seeing the execution speed of C# code running 300 to 1000 times faster than the equivalent JavaScript code in some cases. This is a good start. Both the latest version of Flash and Silverlight are also starting to pump out reasonable numbers of objects on screen without slowing down the system. In the next couple of years, I see web technologies reach DS or PlayStation level of 2D capabilities. This opens up the golden era genres like epic platformers, brawlers, fighting games, and RPGs.

Local storage: The biggest reason that folks are using downloadable applications is that many users still play offline. Ideally, we could cache 20 megs of data plus a 2 meg save game file on your hard drive and allow you to use the application when the internet is disconnected. This is exceedingly difficult with current technology.

Some of the technologies that Adobe is working on looks promising here and I hope to see more from Microsoft in the future. When game developers gain control over their caching and local storage, the silly distinction between online and offline starts to disappear. This blocker hasn’t been solved yet, but there is hope.

Future of mixed cloud/client games
What really excites me is the mixed world of applications that sit halfway in the cloud and halfway on the client. As these become easier to develop, more people will get into the market and they will innovate in order to differentiate their products. Casual game developers are just starting to dip their toes into this universe, but with time expect a flood of interest. Occasional connectivity + instant downloads is a huge and exciting opportunity to create entirely new genres.
  • Shared user created content: As users create content and upload it to a universal cloud, you open the world of massively single player games. Imagine Spore as a web-based RPG or platformer with a single click install.
  • Multiplayer experiences: Little Big World shows a little bit of what can happen when you mix an traditional platformer with online capabilities. Imagine if most web-games had this level of multi-player mechanics.
  • New revenue models: The retail model of paying 19.95 for a mess of levels is due for a shakeup. Micropayments in casual games are a natural fit for cloud/client games. The cloud provides the persistence and the payment system. The client provides the rich interactivity that captures the player and provides the compelling context necessary to encourage them to invest monetarily in the game.
  • Stats: Great games are well-balanced games. Well-balanced games are created through the massive amounts of user feedback. Internet enabled games offer a natural way of collecting copious amounts of player data in a transparent manner. Imagine if all games had Valve-level diagnostics built in. If websites can do it, so can games.
Ending thoughts
I’m excited about Silverlight, not necessarily because it solves all the problems facing game developer or because it provides all the solutions. I’m excited because it adds a serious jolt of competition that is bound to drive rapid advancements. The improved tools and more robust runtime platforms that result from competition are huge wins for game developers. They allow us to focus on making great immersive games, not on rewriting our game engines for the 57th time.

For at least the next five years, the casual and indie games marketplace is going to be a crazy ride. The ‘typical’ genres of point and click Flash adventures, shooters and downloadable Bejeweled clones is going to replaced by instant install, rich applications that cover a much broader range of game genres. Developers will have the power. They just need to use it to make something amazing.

Take care
Danc (in a good mood)


  1. Great article, this really cleared up a lot about SL that I hadn't understood. Thanks!

    But why this line"

    "Cute" is one of the most insidiously damning things you can say about a piece of technology. It's simultaneously dismissing and always has this kind of macho posturing around it. "Cute" technology is often framed as "weak" technology, or as "feminine" tech. Classic example of that in this conversation.:

    "I certainly don't want to be caught telling people I spent money for [a Macintosh] because it was beautiful. I'd get fired. The word "cute" itself is ubiquitous. It's *strikingly* ubiquitous in the Mac discussion of the '80's. You run into that word so often that you're forced to come to grips with it. I'm speaking here not as a technologist, but more as a critic. This word plays so many roles that you must come to grips with it."

    The fact that you have named one of your games with that word is a little strange...it's just *never* a positive term in technology contexts.

  2. But why this line...should be pointing to your use of the word "cute" in the 2nd paragraph. SL "is a cute little browser plug-in..."

  3. This blog focuses on game design and I suspect most of the folks that read this blog would give a reasonable portion of their left leg to develop a 'cute' game that had mass appeal like Nintendogs or the Animal Crossing. :-)

    If the term 'cute' is poorly chosen for a technology, I find that you can often sustitute 'hotness' in its place with good effect. For example "Silverlight is teh hotness."

    Appreciate the link to the interview with Gelernter. He was one of my early CS heros. I love people who talk tech with passion.

    take care

  4. Great article Dan. We've been using Unity to develop our current casual game product, though the engine is capable of doing physics heavy 3d FPS type games in-browser. Stuff like Unity and your product (and Flash 9 if you don't need that much power but want the ubiquity) really is the future, no doubt about it.

  5. I got yer Flash fighting game right here!


    The only thing keeping really nice Flash fighting games from being made is that no artist wants to draw 250+ frames for each character for no money.

    Silverlight sounds interesting, but the thing I like the most about Flash is that it has everything all in one place for superfast prototyping. If Silverlight can one-up that, then I may switch over.

  6. Arg, Danc, how could you go through that entire article without mentioning Java? It's a robust programming language. It can do online games and offline games. It comes pre-installed on most computers. And it has hardware acceleration now via lwjgl. And it runs on Linux. I believe it's also closest to being "between the client and the clouds." And have you seen the way Java 6 displays the loading screens for applets? It's pretty cute :p

  7. I have a little notification in my tray that keeps bugging me to upgrade to the latest version of Java. It is one of those minor irritations that sucks a small amount of joy from my life. The technology may be great, but the end user experience is miserable.

    Mass market platforms should be transparent to the user. One thing Flash got right is that the vast majority of the time you don't even notice that it is running.

    I am admittedly a man of many biases. To me, it isn't about the pure tech. It is about the warm fuzzy feeling that stays with you from the time you click on a link, to your first experience, to the time you've long since forgotten that you installed something. Long installs and obnoxious post install behavior made me lose my warm fuzzies for Java long ago.

    take care

  8. Ah, yes, that's a very good point.

    But Eclipse + Java is just such an ideal platform for development...

    Hmm, maybe I should go back to work on my Java to ActionScript converter...

  9. "Some of the technologies that Adobe is working on looks promising here "

    Do you refer to Apollo with this statement?

    I've been out of the loop for a while, and just discovered about Silverlight trough your article.

    Both Silverlight and Apollo look great for (Indy) game development & prototyping.

  10. Great Article, Danc. I'm still skeptical about the speed thing, but all this coordinated development from Microsquash really is getting to be fun. For the first time in a long time, It's enough to tempt me back into the arena of programming for fun...

    I agree that the single player is still very important, and I'm concerned about how well I might be able to create a dev environment if I intend to NEVER connect to the Internet.

    My main problem with most internet apps now is security now... I hate the continual updates--that often break things that once worked. I also want to be able to run my system and know what's on it. I don't know that I like the idea of constant automatic uploads of questionable value to me. Especially if those uploads involve questionable non-kid-friendly content... I hate spyware and viruses. I hate the idea of identity theft and the possibility of having my personal information going to fund crooks in St. Petersburg.

    I actually have a seperate system that has never touched the internet that I keep many of my backups and such on, because I need to use a computer, at home, but don't need the internet part always...

    I'm curious how secure is this going to be? Will this open my machine up to a whole new level of security problems?


  11. Not to beleaguer the point, but every single aspect of your discussions of the future potential of Silverlight have been played out in Java applets during the past 10 years. User-created content, multiplayer, a proper language with proper execution speed etc...
    I think the weak point of Aaplets is the cumbersome install process and the slow startup speed the first time you launch an applet, but realize that Silverlight is not magically going to get any sort of significant install base before it starts shipping with the version of Windows that comes after Vista ... We are talking 2015?

  12. In-browser is ideal for distribution - but Flash and Java are in a totaly different category than Silverlight, Torque and Unity and we should be careful not to confuse them.

    Namely, Flash has a massive, almost ubiquitous installed base. Java isn't half bad either.

    Unity, Torque, Silverlight, Virtools and others have virtually zero penetration. Which means that you are going to be requiring your users to download something before playing -- which is the same thing you had to do with a downloadable, only you are giving up quality.

    Until one of these gets penetration, if you are going with in-browser then don't make a false choice.