I have left Microsoft and this blog is no longer under my control. All of the content should remain for some time however and any new updates can be found at http://davedev.net.
-Dave, September 2013
Just a gentle reminder for those of you working on your first Windows 8 App. Submissions for the First Apps contest must be submitted this coming Sunday night by 11:59 PST.
via the Windows 8 First Apps Contest website
The First Apps contest will select eight winning apps to be the very first apps in the Windows Store when it opens. This is your chance to show off your great app and to be part of an exclusive group of developers invited to participate in the Store when it first opens. The winning developers will also get some goodies to help them build even better apps:
Submissions are due by Sunday, January 8 at 11:59pm PST. This gives you just over 30 days to design and develop your app. Finalists will be notified on Sunday, January 15. Finalists must update their app to run on a new, confidential Windows 8 build provided by us and resubmit their app before February 3 to be eligible to win.
You'll need a Windows Live ID to sign in to the contest site and submit your app. You'll also need the Windows 8 Developer Preview with developer tools in order to start building your app.
Our panel of judges is very excited to review the innovative apps you submit. The judges are:
The judges will be evaluating apps based on how well they embrace the Metro style principles, as outlined at BUILD. Great Metro style apps adapt to a variety of form factors and screen resolutions, so our judges will be evaluating each app on both a Samsung Windows Developer Preview PC (1376x768 resolution) and a laptop (1920x1080 resolution).
Visit the Dev Center to learn more about designing Metro style apps and building Metro style apps.
All apps must comply with the App Certification Requirements, and all apps must be submitted in the English language.
Enter the contest ›
Read the Official Rules ›
Why not make 2012 the year you put those skills to use and publish your own app to the marketplace!
In only a year the Windows Phone Marketplace has grown at a phenomenal rate with over 40,000 apps now available for download. Sites like WP7Applist track published apps on a daily basis:
These numbers continue to climb as more partners like Nokia begin selling their Windows Phones worldwide.
The Windows Phone Marketplace continues to expand into new markets that you can sell your apps in.
All of these new markets and new devices means more potential customers for your app.
Update 1/5 – Todd Brix just announced the ability today for Windows Phone Developers to distribute their apps in 6 new markets; Argentina, China, Indonesia, Malaysia, Peru and the Philippines. This brings the total number of markets you can sell your app in to 41. You can read the full post here.
One of the harder parts of my job is not telling all of the financial success stories I see people, many of them students, reaching today with Windows Phone. It is not my story to tell however and so if you are looking for some real world revenue numbers you will have to hunt around a bit more. A recent public story is from independent Windows Phone Developer, Elbert Perez, who just posted his revenue numbers from last year and he made over $61,000. Who wouldn’t mind that type of income?
One of the other stories I can freely talk about is my own. While not as impressive as Elbert’s numbers my single DoodlePad Free Windows Phone app, which uses the Microsoft Advertising control, has made over $1,100+ last year with close to 19,000 downloads.
Not bad for an app that only took a few days to write and was mostly intended to keep my own two daughters occupied. Keep in mind too this app has never been featured in the marketplace nor any tech blogs so I feel it is a good representation of what an average app might achieve. The advertising has generated enough money for me to upgrade my pc gaming rig to a Solid State Drive and outfit it with a new Nvidia card. While I did not become financially independent it has given me plenty of “Dad Pocket Money” each month that goes a long way. Upgrading my home pc would have never been something I had budget for and now Skyrim never looked so good!.
With a library of free developer resources, code samples, and videos available in the Windows Phone Developer portal it is easy to get started. Best of all the developer tools are free. It costs absolutely nothing to get started with your app the only time you have to pay Microsoft is when you want to sell your app on the Marketplace. Then it is the standard $99 annual subscription fee and a 70/30 revenue split. This subscription also gives you the ability to publish Xbox games as well.
I am a Windows Phone Champ who covers the New York, New Jersey and Pennsylvania geographies. I am available to assist you in getting your apps up and running and I have Windows Phones! Are you at the point of wanting to test your app on a device but don’t have a Windows Phone yet? I can ship you a loaner to use for a couple of weeks! Have you written some apps but are under contract still unable to get a Windows Phone? I may be able to get you a device to keep!
If I don’t know who you are though I can’t help you. So please, if we haven’t met yet and you are in these geographies please contact me asap and let me know what you are working on. Specifically I need to know the following:
* If you don’t fall in these geographies but are looking for assistance I can connect you with your local champ
I recently presented a Visual Studio Live Orlando session entitled Living the Dream: Make the Video Game You’ve Always Wanted and Get Paid For It. It was an introductory course for all developers on how to get started with Windows Phone Game development. This included coding our own little game, lots of free sample projects, and tips and tricks I’ve learned a long the way.
I have posted all of the slides and demo projects in the usual My Stuff section on this blog.
Here is a rundown of what you will find inside the zip folder once you download it.
This was the first piece of code we wrote together and shows the basics of the XNA game loop as well as some simple touch and sound effects. The Content Project consisted of two images: space.png, a large starfield and ship.png. Both of these freely redistributable pieces of artwork were grabbed using Bing Image Search. We also edited ship.png a bit to make it more lifelike using the free tool Paint.Net.
The project was a good first exposure and I took us through each of the common sections in Game1.cs.
Here is where we created the Textures to hold our ship and space field, the vector to track its position and the SoundEffect and its related Instance to add some effects later on. .
We used the hardware scalar available in XNA to correctly scale our spaceship for the smaller screen and set the game to run in FullScreen mode. This is one of the common mistakes made by developers first out since running in a dark background will make you think you have a black border when in fact you have the system tray across the top of your game. Testing in both light and dark themes, always a great idea in any phone app, will show the system tray sitting on top.
//Backbuffer - Dave
graphics.PreferredBackBufferWidth = 480;
graphics.PreferredBackBufferHeight = 800;
graphics.IsFullScreen = true;
This method is where we load all of the content we will be manipulating in our game. In this case we are setting both the space and ship texture and then putting the ship directly in the middle of the phone screen. We are also loading our first sound effect – redAlert into memory and getting an instance of it to detect the state of the sound (playing, stopped, etc).
// load the sprite's texture
shipTexture = Content.Load<Texture2D>("ship");
// load the background texture
backgroundTexture = Content.Load<Texture2D>("space");
// center the sprite on screen
Viewport viewport = graphics.GraphicsDevice.Viewport;
shipPosition = new Vector2(
(viewport.Width - shipTexture.Width) / 2,
(viewport.Height - shipTexture.Height) / 2);
redAlert = Content.Load<SoundEffect>("RedAlert");
redAlertInstance = redAlert.CreateInstance();
Now we are in our main Game Loop. From here on out we are going to Update/Draw, Update/Draw, 30 times a second (although Windows Phone is capable of going up to 60 fps we used the default framerate of 30fps that is included in the project template). Each update we check to see if there have been any touches from the user and if there have we take the first one. Once we get the location of this first touch we do some math to move the space ship to the center of the touch point. We then call PlayRedAlert.
TouchCollection touchCollection = TouchPanel.GetState();
if (touchCollection.Count > 0)
TouchLocation t1 = touchCollection;
double x = t1.Position.X - (shipPosition.X + (shipTexture.Width / 2));
double y = t1.Position.Y - (shipPosition.Y + (shipTexture.Height / 2));
double speed = Math.Sqrt(x * x + y * y) / 20;
double angle = (float)Math.Atan2(y, x);
shipPosition.X += (float)(speed * Math.Cos(angle));
shipPosition.Y += (float)(speed * Math.Sin(angle));
This method will check the current state of the Redalert sound and if it is not playing it will go ahead and fire the Play event. If the sound is still playing (from a recent touch event) it will not override and simply ignore the new touch. If we did not do this sounds would continue to play with every touch and overlap into a loud mess of incoherent noise. We also have the ability to mess around with Pitch and Pan (move the sound between different ears on the headphones). In this case we raised the pitch by 50% and had a Red Alert sound that sounded very much like a Chipmunk.
if (redAlertInstance.State != SoundState.Playing)
redAlertInstance.Pan = 0f;
redAlertInstance.Volume = 1f;
The final method took all of our textures and drew them to the screen. Remember that order in the batch is important. If we wanted to background to be draw on top of the spaceship we would only need to move it before the ship in the spriteBatch order.
spriteBatch.Draw(backgroundTexture, Vector2.Zero, Color.White);
spriteBatch.Draw(shipTexture, shipPosition, Color.White);
The second project, NinaAcademy , is a freely available starter kit on AppHub. NinjaAcademy is a great example of how to use the built in Gestures Windows Phone supports. All of this is done through the TouchPanel and we simply tell it which gestures we want to listen for. For example if we wanted to watch for Flicks we would use something like this:
TouchPanel.EnabledGestures = GestureType.Flick;
We can also listen for multiple gestures such as Flick and Tap we would use the following:
TouchPanel.EnabledGestures = GestureType.Flick|GestureType.Tap;
I then took us through the feely available Codeplex project, Mango Teapot. Mango Teapot, besides being a great example of using 3d Models and the new Silverlight on XNA capabilities, utilizes the Accelerometer to manipulate the phone. By clicking on the gravity button below the teapot we start to read data from the accelerometer inside the phone.
teapot.World = Matrix.CreateFromYawPitchRoll(0, MathHelper.PiOver2, 0) * motion.CurrentValue.Attitude.RotationMatrix;
else if (useAccelerometer)
Vector3 original = new Vector3(0f, 0f, 1f);
Vector3 current = new Vector3(accelSensor.CurrentValue.Acceleration.X, accelSensor.CurrentValue.Acceleration.Z, -accelSensor.CurrentValue.Acceleration.Y);
If you recall using the accelerometer in Windows Phone is like any other sensor (Microsoft.Devices.Sensors) we simply add a reference to the namespace, declare the object and then call the start method when we want to begin collecting data. We then tell it which eventhandler we want to use every time a new the sensor detects a new reading (the user moved the phone in some way). You will get data in all three dimensions: X, Y and Z in the –1 to + 1 range. If the user moves the device too hard you may see numbers returned as high as –3 to +3. This is a trick you can use if you want a “shake to reset level” type of functionality just look for consistent readings in the 2s to 3s and you know the user is shaking the device.
Since the release of the Windows Phone 7.5 Developer Tools developers have been treated to accelerometer simulation right through the emulator. Simply click the advanced tools button on the top right of the main emulator window and you will see a screen like the above. Then drag the orange dot around and you will move the simulated phone in three dimensions. You can also jump to specific orientations as well as use recorded data.
The final project we walked through was Paddle Battle. Paddle Battle is another free sample publically available on the App Hub. We covered the new Silverlight and XNA Application template, what differed from normal XNA, and how to create a menu system using all Silverlight UIElements in your XNA game. Paddle Battle is a simple example that includes a main menu for enabling sounds and starting the game.
I ended the session with a tour of App Hub and Microsoft PubCenter. Most of the strategies I covered around making money can be found in my Real World Windows Phone Development Series here. These included how to get your app featured in the marketplace, free vs. paid, trial download ratios and what Microsoft is doing to help you be successful (contests, content, and free training, etc.).
I hope if you’ve been on the fence about writing a game for Windows Phone these sample projects will be a good starting place. Don’t forget if you live in the United States and are local to NY, NJ, or PA I would love to hear from you!
If you will be in the Philly area this Wednesday night stop on by the Microsoft Malvern Office. I will be hanging out with the great Philly.NET folks discussing my recent experiences in HTML5 Game Programming. The evening will kick off at 5:30pm with Brian Minisi giving an overview of TFS11. We’ll do some networking and then Rich Ross will give a quick tip on using LINQ in SharePoint. We'll end the night with some fun HTML5 Gaming goodness.
There will be plenty of food, prizes and jokes (although I can’t promise they’ll be new ones). Hope to see you there!