My name is Norm Sohl, and I work for the Windows Mobile Developer Experience Content Team. I used to work for a game development company back in the day when a desktop PC had about as much power as the mobile phone that sits in my pocket right now. Many of the issues we contended with in those days are similar to the ones we deal with today on mobile devices. The one difference is that today the features available on our phones are far cooler than what was available on a PC back then. Data connections, WiFi, GPS, accelerometers, touch screens add so many possibilities that it can be hard to figure out where to start.
For me, the desire to play with all this new technology is hard to resist, although I’m not even sure what to do with all these features yet. That being the case, I’m going to start by doing some experiments to see how powerful different devices are, and what kind of performance (graphics, input, audio, etc.) I can expect from them. This information will help me (and hopefully you) make a decision about what kind of game might be successful on the Windows Mobile platform. Expect to see updates to this diary about once a week in the near future.
It is safe to say that there are more options for development on Windows Mobile 6 than on any other mobile platform. WM has been around for a while, and Microsoft has built up a huge variety of APIs and development tools to support the platform. This is good - no matter what your preferred style of programming is, there is probably a supported solution on WM. It can also be confusing if you are trying to find out where to start when developing an application.
The options include:
Speed bump: Not all Windows Mobile native libraries have managed equivalents. This means that the author of a managed program (in C# or VB for example) will have to use cumbersome and potentially unsafe methods to integrate the native library into the managed application if they wish to make use of the full libraries.
There are also different flavors of Windows Mobile 6: Standard and Professional. The big difference is that Professional devices have touch screens, and generally more features. It’s reasonable to expect that the performance of a professional device will be superior to that of a standard (no touch screen) device and the touch screen allows more input possibilities so I expect to focus on those devices.
At the moment, I’m not sure if I want to develop on managed or unmanaged code. I prefer to develop in C# using managed code, but may need the performance and APIs that are available to the C++ programmer. Luckily, I will use the same tools to develop both kinds of applications for WM, so I don’t have to decide what environment to use quite yet.
In the past, the first stop in making sense of all these options would be to check Microsoft’s official documentation on MSDN, but that is changing. The official starting point for development on Windows Mobile is now the Windows Mobile Developer Portal.
For the moment, I actually prefer the material found on a different site -Windows Mobile Developer Center, although I’m told that these two sites will be integrated in the next few months. This site has webcasts, videos, and (of course) this blog.
The first thing I want to do is set up my development environment, and so I started looking for a section that would tell me how to start. I already have a copy of Visual Studio 2008 installed, and wanted to use it, so I looked for that first.
Speed bump: Unlike the documentation on MSDN (Windows Mobile 6 Documentation) which only covers Visual Studio 2005, the information I found for setting up Visual Studio 2008 on the Developer Center was in videos. See http://code.msdn.microsoft.com/WM6YourFirstApp for a good getting started video.
Although the videos are current, excellent and accurate, watching the video is more time consuming than reading a procedure, (and impossible to find via search) so I’ll summarize them here:
Note: if you have installed the SDKs before Visual Studio 2008, you will need to remove and re-install them after the VS 2008 install.
To confirm that you have a working installation of Visual Studio and the SDK(s), try creating a simple application. I created a blank C++ project by following these steps:
In Visual Studio, I make sure that “Windows Mobile 6 Professional Emulator” is chosen in the drop down list on the upper left tool bar. I then build the application “Test”, and choose to start debugging.
The Emulator appears, and in a moment, my application (with a blank screen) loads and is displayed in the emulator.
Clicking on the close icon in the upper right hand corner shuts down my application, and Visual Studio returns to its default state.
Excellent – that was easy, and everything works!
If I wanted to build for a different flavor of Windows Mobile (Standard, Windows Mobile 5, or deploy to an actual device, I would choose a different option from the upper left hand tool bar drop down. Does it all make sense so far?
Next up – Doing Graphics!