Flash To Silverlight 2 Game Development #1: 26 Hour Install WTF?

What Do I Need?

So I’m working on moving some of my Flash skills to Microsoft Silverlight. Why? Because it’s there and you can make games with it. End of story. The first thing you need to do to create Silverlight Games is to install the proper software to get started. Instantly this is where Microsoft deviates from the clear path of Flash development.

These are trivial yet time consuming tasks. Most of the time, I learned about the necessary Service Pack installation requirements after the installation of a major component failed. This occurred at, no joke, every single step in the above list. This means that every installation had to be done twice. The first time to get the error, and the second time when the service pack was installed. It was VERY FRUSTRATING. From downloading Expression Studio 2 and Visual Studio 2008 from MSDN, burning the ISO to DVDs, and then installing them, to finally getting the multiple service packs installed and running so I could create a Silverlight 2.0 project, it took nearly 12 hours. Since I went home from work as Visual Studio 2008 was installing, it effectively took an entire 26 hours for this installation…as I still had 2 hours of downloading and installing to accomplish when I came back in the next day. Now, I’m sure you could do this faster if you were 100% dedicated to it, but for the developer that is trying to learn Silverlight at the same time they are working on other projects, this 26-hour installation is what you are facing.

By comparison, the 30 day trial of Flash takes about 15 minutes to install. As far as ease of installation and getting started, Flash wins over Silverlight HANDS, FINGERS, FEET, LEGS, and TOES DOWN.

What Is The difference Between Expression Blend 2 And Visual Studio 2008?

OK, so now you may ask yourself, why are there two major tools to install, Expression Blend 2 and Visual Studio 2008? Besides the obvious fact that Microsoft out to vacuum the wallets of developers (actually they are out to land big-money long-term Corporate Software agreements), the tools serve two different purposes. Expression Blend is a 2D vector art and animation tool with some limited 3D support. (sound familiar?) Visual Studio is Microsoft’s hardcore software development IDE. The common element between both tools is the use of XMAL to define the interfaces for an application. For Silverlight development, the tools are akin to the following:

  • Expression Blend 2 = Flash CS3 minus any real Actionscript coding.
  • Visual Studio = Flash Develop and the Flex SDK or Flex Builder..
  • Microsoft XAML = Flex MXML

However, that is a bit too simplistic of an explanation. As most Flash developers know, you can do 95% of the same things with both Flash CS3 and the Flex SDK + Flash Develop. There are a few differences, but they can be overcome by including class libraries to your application that were not originally included with the Adobe distribution. Flash does not use MXML, but then, there really is no need to use it in Flash anyway as it was designed for Flex coders who do not have an IDE like Flash. Still it would be nice if both tools could speak the same language at the MXML level.

The Silverlight tools then, differ from the Flash tools in many ways. Expression Blend is an almost pure design tool, that spits out XAML when a project is complete. It can be used to create very basic Silverlight applications with basic object interactions like button clicks. These are legitimate Silverlight apps that can be run in any web browser with Silverlight support. However, for any hardcore coding (like the kind we will need for any kind of real game), Visual Studio is required to create the classes that will be used to support more sophisticated interactions than Expression Blend can’t handle. Visual Studio can read the XAML created by Expression Blend, but XAML cannot be created with the limited “design” tools in Visual Studio. However, you can hand-code it to your heart’s desire. XAML for all intents and purposes is the common language that both Expression Blend 2 and Visual Studio 2008 speak.

First Impressions

Well, my first impressions are as follows:

  • Silverlight is far too complicated to install and get running for a designer or software developer that is used to the ease of installing Adobe and Apple applications.
  • Having two separate tools for development is confusing, especially coming from Flash where there are also two tools, but you can choose either/or to get the job done instead of having to work in both to create a single application.
  • On the flip-side, having two separate tools is a brilliant idea for project work flow on corporate web teams. Since the two Silverlight development tools speak XAML (and also work within the same Visual Studio Project framework), a team can have a designer working in Expression Blend while a programmers works in Visual Studio. This is more of a “web programmer dream” than anything else. We’d all like to box designers into so they can’t mess with our code, but at the same time let them work their visual magic. Out of all the frustrations I have with Silverlight, I have to admit, this was a good decision by Microsoft.

In the final analysis, because there is still no clear advantage of Silverlight apps over Flash CS3, I can’t see any real reason why Flash developers should switch at this time for pure technology reasons alone. However, switching just to switch is not the point of this blog series. Whether Flash developers like it or not, Microsoft has a big push behind Silverlight, and more and more companies are going to be looking for Silverlight expertise. The ability to create games in Silverlight is just one more skill web game developers can have in their back pocket. The rest of this series will concetrate on building a game in Silverlight, from the perspective of someone with many years invested in making games in Flash.

0saves
If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.