Last week, my app "Physamajig" was a featured app for Windows 8. This means that it had a dedicated tile on the main Store hub which looked like this:
The app had real estate on the Games category like this for 5 days, from 2/8 through 2/12, and I received an email from Microsoft about a week before giving me a heads up that my app was going to be featured at that time. As you can imagine, having a featured app is a huge impact to the number of downloads and visibility of your app.
Looking at how this impacted Physamajig can provide a glimpse into what the most popular apps might be taking in for Windows 8 Monetization.
Impact on Downloads
The graph below shows Physamajig downloads in blue. The top 5 games are shown in the orange color. Notice the huge spike to 5000+ downloads per day during the featured promotion:
Impact on In-App Purchases
The next graph shows in-app purchases, which remain very modest for Physamajig. I may need to toy with the model I currently have, where a single in-app purchase unlocks all sample mini-games and removes Ads. Or it may just be that my customer base (likely 9 to 13 year olds) doesn't have the money to purchase! :)
Impact on Ad Monetization
Physamajig shows Ads until a user "unlocks" the full version through an in-App purchase. Pubcenter is used as the ad service. Let's first look at the "good news" which is the number of impressions per day. From the graph below you can see that the app spiked to 80,000+ impressions per day.
Now let's look at the bad news, which is revenue. Pubcenter continues to return an anemic CPM which is impacting developer revenue on both Windows 8 and Windows Phone platforms.
Normally you would hope for an eCPM of about $1 (or $1.00 per 1,000 ad impressions). But instead I am seeing between 20 and 50 cents per 1,000 impressions which makes for much less revenue. Imagine multiplying the revenue values below by 2 or 3 and things would certainly look more appealing, yes?
Here is the summary of what I've seen for monetization in the first 3.5 months...
“Physamajig” Summary first 3.5 months
Total Downloads since publish
Ad monetization (pubcenter)
$1,641.87 (4,552,202 impressions @ 0.36 eCPM)
Total for 3.5 months
Should you Develop Windows 8 Apps?
If you are lucky enough to have a top app in the Windows 8 Store, and have it stay at the top, is there sufficient opportunity for monetization? I guess that depends on the individual developer but personally I am having a lot of fun hobby time and the monetization is a nice bonus.
One thing is sure, Microsoft needs Windows 8 apps! And they are providing some nice incentives to get people started with Windows 8 app development. Here is a collection of incentives that they are providing to get you started:
Sign up now and you'll receive the tools, help, and support you need to get your Windows 8 and Windows Phone 8 apps developed
Free Windows Store Registration and a copy of HALO 4 for your first app and a chance to win and XBOX w/Kinect.
Get funding for your next great Windows Phone app idea.
Create an app and enter a monthly drawing for $1000, $500, or $250.
It's been three weeks since Windows 8 GA, and I've had several fellow developers ask about my luck on the Windows Store. So here is some usage and monetization data for "Physamajig" - an app which I developed in my spare time using the Physics Helper XAML and Farseer Physics Engine projects.
Physamajig has two types of monetization:
- PubCenter ads which show on the main hub and play screen
- In-App purchases (which unlock additional games and remove ads).
3 Week Summary for “Physamajig”
Total Downloads since publish
Total Downloads since GA (10/26)
$25.32 (21 in-app purchases)
Ad monetization (pubcenter)
$419.24 (482,912 impressions @ 0.87 eCPM)
Total for 3 weeks
Daily Ad Revenue (pubcenter)
So I suppose there are several ways to look at this data. Obviously the amounts are modest and undoubtedly there are better opportunities in competing platforms and app stores. But this is just the first three weeks after GA, and with the holiday season coming up you can bet there will be lots of people moving onto Windows 8 devices very quickly - so perhaps there is nowhere to go but up. On the other hand, competition in the store is quickly ramping up with names like Rovio and Halfbrick joining in, so the chances of your app getting buried in the store will increase.
Some More Detail
Some of the reports provided by the Windows 8 Store are quite interesting. Take for example the App Downloads chart below. Look at the nice spike on 10/26 at GA. It's no surprise that the top 5 apps - which are featured apps with dedicated tiles - get a much larger number of downloads than my app!
However, if we look at the App Usage per Day report, we can see that my app does keep user's attention longer than the average. By the way, if you are wondering why every 3 days in this report has the same data value, it is because this data is aggregated every 3 days only. So the repeating value you see is the average for those 3 days.
One thing I hope that the Windows Store makes better use of is an editorial process that highlights apps from all over the spectrum, not just the bigger game studios. In the early days of the Store they had "Apps that Cure Boredom" for example - which highlighted a few apps that weren't necessarily chart-toppers, but might interest certain people. So why not add category tiles for "Games with Creativity" or "Quirky Games" - and have editors swap different games in and out of these?
These are the very early days of the Windows Store, and I am sure there will be some great success stories for developers in this new platform. I hope this gives you an idea of where monetization is at now, and I look forward to seeing all of your cool apps on the Store!
My app "Physamajig" was one of the first apps available on the Windows 8 Store, and now has over 150,000 downloads. Physamajig is written using XAML/C# and uses the Physics Helper XAML and Farseer Physics Engine projects.
I was recently lucky enough to win an AppCampus award to port Physamajig to Windows Phone 7! The AppCampus program was formed by Microsoft and Nokia to "drive innovation and business opportunities" and "create a new generation of self-sustaining mobile startups." If you have a great mobile app idea, you can still apply for an AppCampus award by filling out a short application.
Here is a video demo of the port of Physamajig running on the Nokia Lumia 900:
To the Cloud!
Physamajig has a back-end web service which allows users to share their physics games. As part of the groundwork for the port to Windows Phone, I wanted to make sure my back-end data service could handle any increase in traffic from users. Originally, I was using a shared hosting plan from a popular provider - but where I wanted to go was Windows Azure!
I was quite surprised at how easy it was to port to Azure. Granted, my database schema for Physamajig is quite simple - but I have to say, I think I spent only about 6 hours getting the data and service moved over to Azure. Here are the highlights of the process I took:
- First, I used SQL Server Management Studio to connect to my two databases: my legacy shared db, and the Azure SQL db.
- The I used the Generate Scripts Wizard to migrate the data from the legacy db to Azure SQL. These steps are outlined for you here. Note that you can use the "Fully Qualified DNS Name" of your Azure SQL database from the management portal under Database.
- I then used the VS Templates for Azure to create a Windows Azure Cloud Service and WCF Service Web Role. Since I had a pre-existing service, I just brought the code over into the WCF Web Role.
- Physamajig has thumbnail images that allow users to quickly shuffle through the available online creations. These thumbnails are generated by a moderator when they approve creations for online use. For these thumbnails, I used Azure Storage in a public folder. This involved using the CloudStorageAccount class to add a CloudBlobContainer consisting of CloudBlob (files) for each thumbnail.
I hope you enjoyed this little peek into what's happening with Physamajig, and please look for the app in the Windows Phone marketplace soon!
Today I released version 1.1 of Physics Helper XAML, which allows you to easily create 2D Physics Games and Simulations for the following platforms:
- Windows 8
- Windows Phone 7
- Silverlight 5
XAML has great support for 2D graphics including hardware acceleration, making it an excellent candidate for 2D physics based games. And because of XAML's extensive form controls and powerful project templates, it makes it super easy to create your games menus and input UI. Also, it is possible to target the three platforms using a single set of XAML assets for graphics and logic.
I personally used the Physics Helper XAML project as the core for my first (and award winning) Windows 8 game, Physamajig. To get started yourself, I recommend:
- download the source code and check out the sample projects which target all three platforms.
- read the Getting Started docs (currently these docs mention pre-release version of the tools but they will be updated soon)
- use the forums to ask questions
Here is a video showing the Physics Helper XAML demos running on Windows 8 (Samsung Series 7 Slate), Windows Phone 7 (Nokia Lumia 900), and Silverlight 5 (Sony Vaio Laptop).
The Windows 8 App Certification Requirements are a necessary evil meant to protect users, but they can cause developers a few headaches. One of the requirements in particular has plagued me with failed certifications:
If your app uses any kind of web service, it will likely need to meet this requirement or fail certification. Here are some pointers to help meet the 4.1 requirement:
public static void AddSettingsCommands(SettingsPaneCommandsRequestedEventArgs args)
You would use this method from each of your pages in your app by setting up event handlers (I use the OnNavigatedTo event, and be sure to clean up your event handlers)
protected override void OnNavigatedTo(NavigationEventArgs e)
SettingsPane.GetForCurrentView().CommandsRequested += GroupedItemsPage_CommandsRequested;
void GroupedItemsPage_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
That's should help you get your connected apps through this certification requirement... good luck!
App Reviews can impact a user's decision to download or buy your app, and provide valuable feedback for enhancements and issues for v.next. It's important to make it apparent and easy for users to add a review for your app so you are sure to gather as many of these reports as possible.
Let's explore three ways that a user can get to the review page for your app:
- Through the Windows Store
This one is pretty obvious, but if a user visits the Reviews link on the page for your app in the Windows Store, they can choose "Write a Review," which brings them to the "Write a Review" page.
- Through the Settings Pane
This one is provided automatically for every app on the Windows Store - but note that you will not see this link while you are developing/debugging you app! It will only be visible after your app has passed certification and has been installed from the store.
If a user swipes from the right side of the screen, and chooses the Settings Charm, they will see a Rate and Review link:
- Through a Link you Provide
While the built-in Settings Pane support for Rate and Review is great, there are times when you want the Rate and Review option to be a bit more apparent to the user. Maybe after so many days of using the app, you would like to try and coax the user to write a review through a link you provide.
To create this link you'll first need the Package family name for your app. Open the Package.appxmanifest file and go to the Packaging tab. Copy out the Package family name:
Now you can create a button or other control in your app which launches to the following URI:
(Just replace MY_PACKAGE_FAMILY_NAME with your app's PFN).
We've heard about how the Windows 8 Store will be the "largest developer opportunity, ever," given the sheer number of Windows 7 licenses and the expected number of people upgrading and purchasing Windows 8 tablets. I wanted to share some of my metrics so far with the Windows Store...
Physamajig for Windows 8 has reached a bit of a milestone with over 100,000 downloads on the Store! It took a little over 3 months to reach this milestone... but note that this is just the preview versions of Windows 8!
Here are a few more metrics from Physamajig, showing download peaks, market, and age group...
Windows 8 Store vs Windows Phone 7 Marketplace
Compare Physamajig to one of my more popular Windows Phone 7 apps, Boss Launch 2, which took over a year in the WP7 App Store to reach 100,000 downloads (it currently is at 115k+ downloads). But this was a year in release of Windows Phone 7 - whereas Windows 8 is in preview.
Submitting your App
As of now, the Windows 8 Store is still closed for general submission, but if you create a great app or game, you can apply for a Windows Store token by following the steps outlined in this blog post.
The next update of Physamajig will allow users to create their own "Mini-Games" - without writing code! This new version will be released after the June 2012 Windows 8 Release Preview. Like the current release of Physamajig, you just draw out elements on the screen to create physics objects - but in the new version, you can add Behaviors to your objects to add much more interactivity.
So what kind of games will Physamjig allow you to create without using code? This video shows a few examples:
My inspiration for the no-code approach came from Behaviors and Triggers inside Expression Blend, which I used for previous versions of the Physics Helper Library. Inside Expression Blend, you just drag/drop Behaviors onto elements to add runtime logic to them. It was a great way to encapsulate complex logic and allow designers to add interactivity to their creations without needing to write code.
Since Behaviors and Triggers are not (yet) present in WinRT Metro, I had to create my own custom implementation of them. A Trigger is generally an event, such as the user making a gesture on the screen, a collision, or an object being destroyed. A Behavior is what happens in response to the trigger, such as applying force to an object, playing a sound, or destroying an object. In Physamajig, the designer for adding Behaviors looks like this:
If this designer looks familiar to you, it might be because you've seen the cool Project Mayhem from Microsoft Research which was another source of inspiration for me. Project Mayhem calls them "Events" and "Reactions," but really these are the same as Triggers and Behaviors. In Mayhem, the designer looks like this:
So is there really such a thing as the "no code scenario?" Will it ever be possible to put together complex, custom solutions using a simple UI to snap together various logic? I am not a believer yet, but I am convinced that adding Behaviors/Triggers (aka Reactions/Events) in a solution can greatly increase productivity and customization in many solutions.
Let me know what you think, and I'll leave you with one last teaser video, this one with extra cheesiness!
If you've downloaded the Consumer Preview, you can find Physamajig in the Store under the Entertainment Category:
I'll be continuing to add some goodies to Physamajig, and here is a little sneak peek of something in the next version: Textures! I really like how these textures make your creations seem more toy-like!
UPDATE 1/16/11: Physamajig has been selected as a finalist in the Windows 8 First Apps Contest!
I am not one to shy away from programming contests. So with the announcement of the Windows 8 First Apps Contest, I wanted to try and do something fun and at the same time refine my Physics Helper XAML project.
What I came up with is "Physamajig" - a Metro style app that allows you to interactively create physics simulations in Windows 8!
Physamajig is similar to a WP7 app I created called "Paint to Life" - but it takes things much further by including many new tools, joints, physics properties, file options, and more! And I have to say that the Windows 8 Metro version of this app looks much more slick than the WP7 version.
The app comes with several sample creations pre-installed, and one of the next features I am working on is a web service so that users can share their creations online.
There are definitely some gotchas with working with the Developer Preview bits for Windows 8, but for such an early release it is quite productive really. I found the Community Forums quite helpful when I hit issues, if nothing else to know that I was not alone :)
If you're building any apps for the Windows 8 Contest, I'd be happy to know more about them - please share!
DISCLAIMER: THIS BLOG POST DISCUSSES DEVELOPMENT UNDER A PRE-BETA VERSION OF WINDOWS 8! THINGS CAN AND WILL CHANGE IN THE FUTURE.
With the release of Windows 8 Developer Preview, one seemingly simple goal I had was to port my 2D physics apps that run on Windows Phone 7 and Silverlight to Windows 8. Since many of my games use vector graphics, they could scale up or down cleanly depending on the device they were deployed to.
Today I am a bit closer to my goal with an updated version of the Physics Helper XAML project - which now supports both Windows 8 Metro and Windows Phone 7 development, using a single set of XAML design files and logic.
Multi-targeting WP7 + Windows 8 Metro
You would think this would be a simple thing to do, right? I mean these platforms are both properties of a single company, and you use Visual Studio to create apps for both of them. And when WP7 was released, it was a cinch to port Silverlight Web applications to the phone - in some cases you didn't even need to recompile your assemblies!
Well, with Windows 8 Metro, it's unfortunately not so simple. Microsoft is a huge company and it is apparently impossible for all divisions to agree on a single development framework that allows creation of client solutions across all of their properties. So we have fragmentation and breaking changes with Windows 8 Metro. Lots of them.
But with a little work, it is certainly possible to support both Windows 8 and Windows Phone 7 apps with a single set of design files and code. Here is a list of some of the issues I ran into while trying to multi-target these two platforms with a single code base:
- xmlns changes
To reference an external library in XAML, we need to use the xmlns attribute. WP7 and Win8/Metro handle this differently right now (hopefully this is remedied in the future!)
WP7 and Silverlight look like this:
While Win8/Metro looks like this:
This was a problem in my apps because I wanted to maintain one set of resources for both platforms. My solution was to create a utility named CleanUsingXmlns which can be added to the prebuild step of your projects to change. Note that CleanUsingXmlns was thrown together very quickly and is not the most elegant solution, but it gets the job done.
To use CleanUsingXmlns, go to the Build Events tab and add a call to the utility in the format:
CleanUsingXmlns [addusing|removeusing] [folder] [namespace1,namespace2]
... where [addusing] will add in the using clause for Metro, and [removeusing] will add in the clr-namespace syntax for WP7 and Silverlight. [folder] is the directory containing XAML files you wish to add and [namespaceX] is a list of namespaces you wish to be involved in the replacement.
As an example, the Metro demo projects contain the following in their prebuild steps to add the "using" clause into XAML files:
$(ProjectDir)..\..\CleanUsingXmlns\bin\Debug\CleanUsingXmlns addusing $(ProjectDir) Demo.Advanced,Spritehand
- Namespace Changes
Somtimes you wonder if the architects over at Microsoft are just trying to push your buttons, you know what I mean? Take for example the shuffling of all of the Silverlight namespaces we know and love. This forces us to write code like the following when we try to multi-target:
... but with Win8/Metro, this is just the beginning. There are lots of little breaking changes all over the place which mostly seem to be there to bang your head on the keyboard and force you to litter compiler directives all over your code.
Which brings me to my final note:
- HINT: Target Lowest Profile!
If you find yourself like me, trying to create a project that targets both Win8/Metro and Windows Phone/Silverlight, one important strategy is to target the lowest common profile. In this case, that lowest profile is Metro. By doing this, you have a much lower chance of introducing unsupported API's into your code.
This table, from the BUILD conference, gives a good overview of the size of three .NET profiles:
While it isn't as easy as you might expect, it is certainly possible to create apps with a single set of design and code files that multi-target WP7 and Win8/Metro. Remember that this is a pre-beta release of Windows 8, and perhaps this story will improve in the beta.
If you're interested in creating your own 2D physics apps for WP7 and Win8/Metro, check out the Physics Helper XAML project on codeplex.
Today I released an initial Alpha version of Physics Helper XAML - which allows you to easily create 2D physics based games and simulations for Windows 8 Metro Apps using C# or VB. It is a port of my previous Physics Helper project and uses the Farseer Physics Engine.
As you'll see, Physics Helper XAML is a rewrite of the Physics Helper project for the following reasons:
- When I initially started porting the Physics Helper to Metro, I assumed I would be able to fix any compatibility issues by using compiler directives as I have done in the past with WPF, Silverlight, and WP7. But as I quickly found out, there are so many little differences that the code quickly became cluttered. Additionally, there are changes on the XAML side which are not easily danced around because there are no compiler directives for XAML at this time.
- Behaviors were used extensively in the original Physics Helper, but are not yet available for Metro app development. In fact, there is no version of Blend available yet for Metro apps - so who knows for sure if Behaviors will make the cut for Blend 5?
- This gave me a great opportunity to clean up and simplify the code! The Physics Helper has been around since Silverlight 2 and has gathered some baggage through the addition of Behaviors, changes to Silverlight, and the addition of other platforms. So this was a great chance to... er.. "re-imagine" the code.
I encourage you to read the Documentation for details on using the new Physics Helper XAML classes. I think you'll find them very simple to use and quite performant.
My personal goals are to port some of my Windows Phone 7 Silverlight Games to Metro using this new version of the Physics Helper. A secondary goal I have is to back port Physics Helper XAML to Windows Phone 7 and Silverlight, with the hopes of having a single code base again to support these other platforms. Again, because of all of the changes in Metro and WinRT, I am not positive this will have a great outcome - but it is definitely a goal I will strive for!
In the meantime, I hope you have some fun with this new set of controls!!
At the Build Conference this week, Microsoft handed out 5000 pre-configured Samsung tablets which included Windows 8 Developer Preview plus the development tools for building Metro style apps. They also made available an ISO containing the same bits.
I suppose in a pinch you could develop apps on an underpowered tablet, but does anyone really want to write code on a tiny screen with an underpowered CPU?
No worries though. We can still use a more powerful dev machine to run Visual Studio 11 and then use Remote Debugging to deploy and debug on the tablet. Here is a pic of my current environment I set up -
To the left is an ExoPC slate running Windows 8, sitting on some handy tablet stands, with bluetooth keyboard and mouse. On the right is one of my dev machines which has been booted to a VHD image of Windows 8.
We can use Remote Debugging inside VS11 by select Project Properties and entering the name of the slate machine on the network:
Here are some helpful hints to get an environment like this set up:
- If you were not lucky enough to go to Build and get one of the Samsung tablets, think about buying a Windows 7 slate. This blog post lists a bunch that have been tested in Microsoft's labs with Windows 8. I would look for something with a min display res of 1366x768, 2GB ram and at least a 32GB SSD.
- To install Windows 8 on your slate, you can create a bootable USB flash drive and copy the Windows 8 Dev Preview to it. I outlined the steps for the ExoPC slate here, but other slates will be similar and you can search around for blog posts where people have set up their slate for Windows 8.
- To install Windows 8 on my development machine, I created a bootable VHD by following this great guide here by Mister Goodcat. As far as I know, this is the only way to get the intial release of Visual Studio 11 and Blend 5 for Metro app development.
- On the Windows 8 slate, there is an included Remote Debugging Monitor - you'll find this under the Metro UI icons next to VS and Blend. Fire that up, because it will tell you if remote debugging is working.
- Make sure you can Ping your slate on the network from your dev machine. Then on the dev machine, set up the project properties for debugging by entering the slate's network name (see screenshot above).
- That's it - you should now have a bit more powerful dev environment for playing with the Windows 8 dev tools.
Late last year I was given an ExoPC Slate as a development device in order to port some of my Silverlight physics games. I did a little unboxing and hands-on with the device back then, and it was quite easy to port my Silverlight games to their app store. Note that the ExoPC has an Intel Atom 1.66 GHz processor, which makes it a bit short on battery life (less than 4 hours). However, it does support 64-bit Windows and has the minimum 1366x768 resolution to support the new "snap" feature.
So given yesterday's release of the Windows 8 Developer Preview, I wanted to see how the new multi-touch based version of Windows would work on the ExoPC.
Steps to Install
These steps are for installing Windows 8 on the ExoPC slate, but you could likely use these steps for other Windows 7 slates as well.
- Download the Windows 8 Developer Preview with Developer Tools for 64-bit (x64). The ExoPC has at least a 32 GB SSD drive, so you can go for the larger ISO (4.8 GB). You'll have about 14 GB of disk space left after the install.
- Find an 8 GB or bigger USB Flash Drive. A 4 GB won't be big enough if you are choosing to install the larger ISO with the developer tools.
- Following the basic steps outlined here, make the USB Drive bootable and copy the contents of the Windows 8 ISO to the USB drive. When you get to Step 7 (using BOOTSECT), you will need to run BOOTSECT from a 64-bit install of Windows 7, since we downloaded the 64-bit version of Windows 8.
- Now that you have a bootable USB drive with Windows 8, we can go to the ExoPC slate and plug it in. Reboot the slate and enter the BIOS by tapping on the "Setup" button on the boot screen:
- Inside the BIOS, we need to set the boot device to the USB key. Go to the "Save and Exit" menu and select the USB key under Boot Override. Then Save and Exit.
- That's it! You should now see the Windows 8 Setup screen, and you can progress through as usual to setup Windows.
Windows 8 touch performance on the ExoPC feels great compared to how it was under Windows 7. The on-screen keyboard and web browsing are fantastic when compared to the old Windows 7 install on the salte. The start-up time from cold boot is about 15 seconds (much better than it was under Windows 7). My next task is to port some of my Silverlight apps to this new platform, so I'll post some of my experiences on that in the future.
Wow, tremendous excitement in the Microsoft dev universe today with the Build conference kicking off! For those who missed the details, we will be able to download the Developer Preview bits for Windows 8 after 11:00pm EST tonight (9/13).
Additionally, all of the tech sessions at build are being recorded and will be available on Channel9 within 24 hours after recording.
I browsed through the list of great content being provided and put together my own video queue of training - posted below. My day job is Silverlight development and training, so I think the XAML/C# sessions will be a great fit. And I need to do my share of HTML/js development as well, so I am curious how good the design/develop/debug story is for HTMl5/js. But I also moonlight as a WP7 app developer, so the Gaming/Graphics sessions will be great.
You’ve built your first basic Metro style app in XAML and now you’re ready to dive into the specifics of deeply integrating it with Windows. Come discover how you can deliver a first-class experience using new Windows 8 concepts. You’ll learn about the new activation model, how to incorporate…
Get the knowledge and guidance needed to build an app for an intuitive, powerful touch experience. Understand how touch design principles are firmly grounded in customer needs of comfort and utility. Discover how your app can use Windows 8 touch language and patterns, capabilities like smart…
C#, Visual Basic and the .NET tools have first-class support for the Windows Runtime. Learn about this integration and how to use C# and Visual Basic to write Metro style apps that call the Windows Runtime and how to build libraries that integrate with your Metro style apps using HTML.
Windows runs on a broad array of devices and form factors. Get your app on all the devices your customers use by building a great user experience that adapts to different screen sizes, aspect ratios and pixel densities using XAML. Learn how your app can take advantage of new multi-tasking views and…
A great Windows 8 app starts with a great user experience. Come to this session to see how Visual Studio 11 Express enables you to take full advantage of the rich platform features, efficient workflow and tools that maximize your productivity and creativity when designing Metro style apps using XAML.
This talk will cover how to bring existing C# or Visual Basic code into your Windows Metro style apps, enabling you to speed development through reuse. We will walk through the process of porting an app from Windows Phone to Metro style. You will see common issues that you may run into when bringing…
Does building a new Metro style app for Windows 8 mean you have to start from scratch? Absolutely not! Come learn how you can leverage existing code when developing Metro style apps for Windows 8. In this session, you will get an opportunity to learn directly from developers who have already…
Combine your own app’s style with the familiar Windows personality. Use Blend and the power of CSS to customize the look and feel of your app, style the individual HTML and WinJS controls, and the elements within them. Infuse your app with your distinct character while keeping Windows' great touch…
Animations are fundamental in making Metro style apps lively and beautiful. Discover the animation library in Windows 8 and see how to bring these great animations to your apps with standard CSS 3.0 transitions and animations. In this session, you will learn how using standard templates and controls…
Learn how to use Expression Blend to visually construct, style and layout Metro style apps using HTML for Windows 8. In this session, we will demonstrate how Expression Blend makes it possible to create a better user experience with greater productivity. We’ll start with semantic markup and…
Create and build accessible Metro style apps to reach more customers. Accessibility support is built into each stage of creating an app and includes accessible templates, samples, controls and accessibility testing tools. Come learn how to make your apps accessible in screen reading, keyboard…
Gaming and Graphics
- Introduction to DirectX for Metro style apps
Learn how you can harness the power of DirectX for your app! As the foundation for all graphics on Windows 8, DirectX enables you to create the most compelling apps for connecting to people, visualizing information, storytelling, entertainment and creativity. Attend this session for a comprehensive…
Games are undoubtedly one of the most popular style of apps with users today and one of the largest money makers as well! If you have ever thought of writing a game, this session is for you! Windows 8 offers an end-to-end platform for developing games. Come to this session to learn how Windows 8…
Visual Studio 11 brings the most significant set of improvements for developing graphics-intensive apps in over a decade. Whether you are just getting started with 2D/3D games or a self-proclaimed "guru," there's something for you in this talk. We will walkthrough a slew of new tools integrated into…
3D graphics enable you to create the most immersive and impressive games around. But developers often think that creating 3D graphics is hard. In Windows 8, creating 3D graphics is easier than you think! You can write a Metro style game that uses the Direct3D API for high-performance 3D experiences.…
Make it fast! Great performance is a huge motivator of satisfaction and user preference with apps. Direct 2D powers high-performance 2D graphics rendering in Windows 8. In this session, you will learn advanced techniques for optimizing your Direct2D code for maximum speed and efficiency in your apps.
Every day, people are using apps that process images to create a variety of effects. The new image processing infrastructure in Windows 8 enables apps to perform high-performance image enhancements, transformation and composition using the GPU for photos, vector graphics and UI elements. In this…
Building a great social gaming experience for your users can be a challenging task. Your game has to be well designed, have a great user interface and perform under the most demanding conditions. This session will show how Windows 8 empowers you to build great user experiences with languages and…
Xbox LIVE, Microsoft's premier entertainment service, is coming to Windows 8. Whether you are developing a game or another kind of entertainment app for Windows 8, Xbox LIVE can help your app stand out in the crowd and help engage and delight users. You will learn about how to implement our…
Compelling audio and video are no longer optional enhancements in games; they are a requirement! Windows provides a spectrum of technologies you can use to create exhilarating experiences for your players. This session will profile the audio and video technologies available in Windows for Metro…
Windows offers a wide variety of input mechanisms for players to control your Metro style game, from touch, to gamepads, to classics like the keyboard and mouse, or even device sensors such as an accelerometer. At first glance, it may seem challenging to handle it all, but the input and sensor APIs…
Microsoft Visual Studio 11 enable developers to take full advantage of the capability of Windows using the skills and technologies developers already know and love to deliver exceptional and compelling apps. Whether working individually or in a small, medium or large development team the Visual…
Come join Mark Russinovich for an overview of Microsoft’s new cloud OS. Assuming no prior knowledge of Windows Azure, this session will start by explaining the Windows Azure Platform-as-a-Service (PaaS) app philosophy and how it differs from that of traditional server apps. Then, demonstrating key…
The Windows Runtime (WinRT) is a key piece of technology used by all Metro style apps in Windows. What actually is the Windows Runtime though? This session explores this key question by digging into the concepts of language projections, the WinRT type system and advanced API patterns included in the…
Windows 8 enables users to log into any device with a single Microsoft account and continuously interact with your app on all of their devices. Your customers will expect the ability to bring their documents, photos, videos, and contacts with them as they move between their devices. Come see how you…
More and more users are becoming familiar with the concept of "the Cloud." More than ever, users are storing their data in the Cloud. SkyDrive is one of the world's leading cloud storage and document collaboration services. Learn how you can easily allow your users to read and write documents,…
UPDATE 6/28/2011: Bouncy McFuzzin is now available on the Marketplace!
*Zune Software Required
Here is a sneak peek of another little physics game I'm working on for Windows Phone 7.
Help McFuzzin escape from the evil witch's lint jar in this fun physics game. Use your finger to draw trampolines for McFuzzin to bounce on. You'll encounter many strange creatures and obstacles along the way, as well as power-ups to help you along.
Wanna Beta Test?
Many thanks to everyone who gave McFuzzin a test run!!
Silverlight 5 introduces new support for hardware accelerated 3D which makes it possible to create truly unique experiences. Unfortunately, the 3D API provided is very low-level, and probably not easily picked up by the average developer.
In this blog post, I’ll show you how to leverage existing libraries and tools to (relatively) easily create a 3D Physics based game or simulation using the new 3D features of Silverlight 5.
To accomplish our 3d scene and physics, we’ll be using two open source libraries:
1. Balder 3D Engine: this engine was created by Einar Ingebrigtsen and allows Silverlight to load and display 3D models. Balder has been around for quite some time, but because of the lack of native 3D support in previous versions of Silverlight, performance was very limited. With the addition of native 3D support in Silverlight 5, much more is possible with Balder.
2. JigLibX Physics library: this 3D physics engine has had many incarnations. It started as a C++ physics library, and was later ported to C# and XNA. Since there is no official Silverlight version of JigLibX, I created a slightly modified version of JigLibX with thanks to the great start on this work item.
Creating the 3D Models
There are so many different 3D model formats out there, it can be quite overwhelming. 3D Studio (.3DS), Wavefront (.OBJ) and Lightwave (.MDD) are just a few. Balder requires a model be in an ASE format (ASCII Scene Exporter), which is a popular format for 3D game frameworks.
Many tools can convert to ASE format, including the free Blender modeling software. You can download Blender 2.5 Beta here, and there is a Python script for Blender which enables ASE exports here. Also, MilkShape exports to ASE and can import a bunch of different formats and is just $35 US.
Balder also supports texture mapping of ASE models, but just be sure the texture is in either JPG or PNG format (often, modeling software uses a BMP format which Balder cannot display). You also need to make sure the reference inside the ASE file is correct for the texture file. ASE files are just plain text, so you can open up the file in an editor and look for any BITMAP references like this:
Displaying the Model
Once you have a model in ASE format, we can display this in Silverlight using Balder. The author of Balder has a great Getting Started Video which I recommend you watch if you are new to Balder. This video was created for Silverlight 4, so there are a couple of notes to keep in mind when using Silverlight 5 and the new version of Balder:
· Be sure to Enable GPU Acceleration. This is required for Silverlight 5 to display 3D scenes. Add the following to the parameters of the Silverlight plug-in object:
<param name="enableGPUAcceleration" value="true" />
· Sometimes you may see a “white screen of death” – that is, nothing is rendered to the window when using 3D. You can use the following properties to determine what’s up when that happens (but usually it is because you didn’t enable GPU acceleration as above).
The job of the physics engine is to determine collisions, position, rotation, and the forces upon an object. We then take that position and rotation information and update our Balder 3D objects each frame.
I chose to use JiglibX as the physics engine, but there are several others that will no doubt make their way to Silverlight 5 in the near future. To get a quick overview of how JiglibX works, I recommend using the Basic World Tutorial.
If you take a look at the sample code, you will see that I sub-classed several of the Balder Geometries into Physics based classes. These wrap together both the visual Balder model and the JiglibX physics logic:
· PhysicsBox displays a cube shape and is based on Balder.Objects.Geometries.Box. On the physics side, this uses the JigLibX.Geometry.Box class.
· PhysicsCapsule displays a capsule model, like a pill shape. There is a special model for this, Capsule.ase. On the physics side, this uses the JigLibX.Geometry.Capsule class.
· PhysicsRagDoll is the most complicated class, and creates a rag doll based on a whole bunch of other primitive objects including sphere, capsule, and box. This class was ported from the original JiglibX demo game.
· PhysicsSphere displays a sphere model, using the sphere.ASE model. Note that Balder does not have a sphere primitive at this time, so that is why we need to bring in a custom model. On the physics side, this uses the JigLibX.Geometry.Sphere class.
Each of these classes implements an IPhysicsObject interface, which provides a Draw() method. This way we have a common way of updating the visual model with the underlying physics library data.
Adding Camera Control
For controlling the camera, I converted a class provided in this XNA Tutorial. This tutorial by Pete Street walks through basic camera control, so I suggest you read through it for the details. After the Camera class does its magic, we simply need to tell the Balder Camera where to move and point towards. This is done in the UpdateViewMatrix method of the Camera class:
_gameCamera.Position = Utils.VectorXnaToBalder(position);
_gameCamera.Target = Utils.VectorXnaToBalder(target);
Terrains in a 3D physics game are often created using a Heightmap. A heightmap is just a 2D bitmap image, where brighter pixel values represent higher elevation than dimmer pixel values. This 2D image data is then handed off to a 3D engine (or physics engine), and a corresponding model is created from the map. If you want to try creating a random heightmap, you can use a tool like Paint.NET to render clouds (in Paint.NET, just create a new image and select Effects/Render/Clouds).
Both Balder and JiglibX have support for heightmaps, so we are in luck! In the sample code you can see there is a PhysicsHeightMap class to handle feeding height data to a JiglibX Heightmap Collision Skin. The Balder Heightmap object is fed the same data through its HeightInput event in the MyGame class. I had some issues instantiating a Balder heightmap from code, so I designed the PhysicsHeightMap class to instead accept an existing visual heightmap object.
Although 3D in Silverlight 5 is very low level, we don’t have to be 3D experts to implement fantastic experiences using this new API. Instead, we can leverage existing open source libraries to get a quick start on 3D applications.
These basic 3D capabilities of Silverlight 5 borrow a great deal from the XNA Game Library. One has to wonder if all of XNA will eventually be implemented in Silverlight, making it a powerful development framework for everything from 3D games to business applications!
Boss Launch 2: Zombie Attack is now available on the Windows Phone Marketplace.
It's the zombie apocalypse, and your only ammunition against the walking dead is an office chair and your fat, lazy boss. Launch your obnoxious leader at waves of oncoming flesh eaters in this fun physics game. Three episodes containing 42 total levels take you through office, city, and country environments. Launch your boss onto vehicles to crush your enemies, and use grenade power-ups for that extra touch of destruction.
Boss Launch 2 is FREE, but this may change in the future, so go out and grab your copy now!
Last night at the CNY .NET Developers Group, I presented a talk titled "Windows Phone 7: Monetize your Apps" where I detailed my WP7 revenue numbers and tips on monetization. Many of my fellow WP7 developers such as Farseer Games, Occasional Gamer, and many others have shared their sales as well.
In this blog post, I'll repeat my sales and ad revenue for my apps that I have on the marketplace. You can also download the slide deck for my presentation.
"Talking Ragdoll" has been in the Top 100 paid apps for awhile, it now hovers around #82. This is a little physics toy that allows you to import your enemy's face onto a ragdoll and then throw various objects at it, dress it up, and place it in different scenes. The ragdoll will also repeat what you say in a funny voice. This app was selected for LG's hAppiness campaign, and while I'm sorry I can't share the numbers for that particular opportunity, I will share the numbers for Marketplace sales below.
TALKING RAGDOLL STATS Type Paid with Trial Category Entertainment Trial Downloads 4274 Number Purchased 1280 Conversion Rate 30% Developer Take $896
11/8/2010 thru 1/24/2011
TALKING RAGDOLL STATS
Paid with Trial
PAINT TO LIFE
Paint to Life is another little physics toy that lets you draw things out with your finger which are then translated into physics objects. There are various tools for changing color and erasing, and you can tilt your phone to change gravity.
This app is ad-driven and there was something very peculiar about the ad revenue for December. It was initially reported as $305 for 25,780 impressions. But later on, I received an email saying there was a "miscalculation in the revenue share owed to you" which made my final Ad Revenue shape up like below. This is quite hard to believe and I emailed pubcenter support to verify this error, which they said was indeed correct. UPDATE 2/10/2011: I had a few folks ask about what Ad Categories I selected, and what eCPM I am getting now. My categories are Technology & Computing, Hobbies & Interest, and Education. My eCPM for Paint to Life is now around $10 - a far cry from the eCPM for December.
PAINT TO LIFE STATS Type Free with Ads Category Entertainment # Downloads 3,733 # of Ad Impressions 25,782 eCPM $115.62 Developer Take $2,981
11/8/2010 thru 1/24/2011
PAINT TO LIFE STATS
Free with Ads
# of Ad Impressions
I initally created a Paid app named "DroppyPop" but it absolutely tanked horribly. I had only 12 sales over the first 2 months on the Marketplace.
Out of frustration, I changed the app to free and added in Ads. Immediately, I saw the number of downloads increase by 100 times. But after 6,318 downloads and 66,169 impressions, I had only made $12 with an eCPM of 18 cents.
What?! Was this game cursed or something? After an email exchange with PubCenter support, I found that the Ad Control I placed inside Free Drop wasn't clickable! That's right, if a user clicked the ad, then no ad details popped up! And it turns out that each click-thru on your Ad control increases the potential eCPM! This is where your revenue goes up - from clicks, NOT from impressions. This was a frustrating exercise in learning how eCPM and click-thru's are related. It would be great if PubCenter showed us the # of click-thru's on our ad units, wouldn't it?
So note that the below stats are for just the 9 days so far with the fixed ad control that is now clickable:
FREE DROP STATS 2/1/2011 thru 2/9/2011 Type Free with Ads Category Games # Downloads 6,318 # of Ad Impressions 6,353 eCPM $5.88 Developer Take $37.36
FREE DROP STATS
2/1/2011 thru 2/9/2011
Free with Ads
# of Ad Impressions
I am quite pleased about the initial opportunities for monetization on Windows Phone 7. I've been a hobbyist game developer for quite some time, and while I won't quit my day job anytime soon, I do see a bright future ahead for creating and sharing fun little apps!
As a "thank you" to its Windows Phone customers, LG is giving away 10 different apps every 60 days. The aptly named "hAPPiness" campaign has its own Facebook page which showcases the selected apps.
I'm happy to announce that "Talking Ragdoll" was selected for the recent group of apps!
If you own an LG Windows Phone 7 device, you can go to the LG app store and download Talking Ragdoll for free, for the next 60 days.
In the coming weeks we should hear some more promotions centering around LG's "hAPPiness" campaign. For now, if you're an LG device owner, go out and have some fun, complements of LG!
UPDATE 1/9/2011: 1800POCKETPC has a nice video walkthrough of most of the apps featured in this promotion from LG.