Feed on
Posts
Comments

Let’s be frank, it doesn’t take much to double the number of Windows 7 applications available on the market place.  Up till today us only been six apps on the store.  The good news is Microsoft has started testing the deployment of apps to the store and it appears to be working. Now there’s a grand total of 13 apps available.

image

If you want to check out the apps, you’ll need a copy of the Zune software on your local computer.

Continuing with my game theme for the week here’s a little tidbit about a great looking, 3-D puzzle game. SouthEnd Interactive has just announced that they will have their cute iomilo game available when the Windows Phone 7 is launched this fall.

Now you can carry ilomilo with you in your pocket and play it whenever you want to and wherever you want to, total rebel style! The game itself will be quite similar to ilomilo XBLA, but will feature new levels and even some exclusive content.

Game Play

It’s best if you watch the YouTube video to get a feeling for how the game will be played.  No prices announced yet but it looks like a lot of fun.

What happens when you put three interviewers, one studio audience and a guest on a podcast? You might think it was total mayhem.  but really, it was a  just a lot of fun.

This week I was a guest on the Sparkling Client podcast. They had me on to talk about Windows Phone 7 hardware devices. but we talked about a lot of topics.

Jason Mauer also called in ( our ‘studio audience’ ) and provides some insight on writing software for different devices.

Listen to the sparkling Client podcast

A few days ago I wrote about the new game studio opening at Microsoft.

I’ve argued for years that the way to get platform adoption is to provide compelling applications for users.

Games, games games.

Today the XBOX team announced a huge number of XBOX titles intended to be ready for the WP7 launch in Fall 2010. 

  1. 3D Brick Breaker Revolution (Digital Chocolate)
  2. Age of Zombies (Halfbrick)
  3. Armor Valley (Protégé Games)
  4. Asphalt 5 (Gameloft)
  5. Assassins Creed (Gameloft)
  6. Bejeweled™ LIVE (PopCap)
  7. Bloons TD (Digital Goldfish)
  8. Brain Challenge (Gameloft)
  9. Bubble Town 2 (i-Play)
  10. Butterfly (Press Start Studio)
  11. CarneyVale Showtime (MGS)
  12. Castlevania (Konami)
  13. Crackdown 2: Project Sunburst (MGS)
  14. De Blob Revolution (THQ)
  15. Deal or No Deal 2010 (i-Play)
  16. Earthworm Jim (Gameloft)
  17. Fast & Furious 7 (i-Play)
  18. Fight Game Rivals (Rough Cookie)
  19. Finger Physics (Mobliss Inc.)
  20. Flight Control (Namco Bandai)
  21. Flowerz (Carbonated Games)
  22. Frogger (Konami)
  23. Fruit Ninja (Halfbrick)
  24. Game Chest-Board (MGS)
  25. Game Chest-Card (MGS)
  26. Game Chest-Logic (MGS)
  27. Game Chest-Solitaire (MGS)
  28. GeoDefense (Critical Thought)
  29. Ghostscape (Psionic)
  30. Glow Artisan (Powerhead Games)
  31. Glyder 2 (Glu Mobile)
  32. Guitar Hero 5 (Glu Mobile)
  33. Halo Waypoint (MGS)
  34. Hexic Rush (Carbonated Games)
  35. I Dig It (InMotion)
  36. iBlast Moki (Godzilab)
  37. ilomilo (MGS)
  38. Implode XL (IUGO)
  39. Iquarium (Infinite Dreams)
  40. Jet Car Stunts (True Axis)
  41. Let’s Golf 2 (Gameloft)
  42. Little Wheel (One click dog)
  43. Loondon (Flip N Tale)
  44. Max and the Magic Marker (PressPlay)
  45. Mini Squadron (Supermono Limited)
  46. More Brain Exercise (Namco Bandai)
  47. O.M.G.(Arkedo)
  48. Puzzle Quest 2 (Namco Bandai)
  49. Real Soccer 2 (Gameloft)
  50. The Revenants (Chaotic Moon)
  51. Rise of Glory (Revo Solutions)
  52. Rocket Riot (Codeglue)
  53. Splinter Cell Conviction (Gameloft)
  54. Star Wars: Battle for Hoth (THQ)
  55. Star Wars: Cantina (THQ)
  56. The Harvest (MGS)
  57. The Oregon Trail (Gameloft)
  58. Tower Bloxx NY (Digital Chocolate)
  59. Twin Blades (Press Start Studio)
  60. UNO (Gameloft)
  61. Women’s Murder Club: Death in Scarlet (i-Play)
  62. Zombie Attack! (IUGO)
  63. Zombies!!!! (Babaroga)

 

Sure, I want my phone to make calls and keep my address book.  But wow, this makes the Windows Phone a serious mobile game platform as well. 

It’s taken 10 years, but Microsoft is finally getting serious about phone development. 

They’ve thrown out the old model and embraced the multi-touch smart systems that Android and iPhone have popularized.   They’re thinking hard about the social aspects of the device.  They hired a ton of design and UX people and are working to make the phone useful for enterprise users.  This last point, the business/enterprise market is a touchy one.  This first release of the phone is blasted by some as not ready for business market, and I tend to agree.  However, that is a subject for later. Today,  I’d rather talk about gaming.

New Game division at Microsoft

Imagine my surprise and delight when I saw this job posting today on the Microsoft careers site.

Job Category: Software Engineering: Development
Location: United States, WA, Redmond
Job ID: 721053 17405
Division: Entertainment & Devices Division

Microsoft Games Studios is establishing a new Studio - MGS Mobile Gaming - focused on bringing games and entertainment to the mobile life that people lead. Our vision is to deliver games and entertainment so good that people will want them always with them, on a service that makes them social, connected and relevant anywhere their life goes. The Mobile Gaming team is building industry leading products that showcase our Windows Phone platform as well as emerging mobile platforms, and will help realize Microsoft’s connected entertainment vision. The Mobile Gaming studio will be the hub for MGS franchises and titles on mobile devices and a center of excellence for mobile games.
MGS Mobile Gaming will support first party development, evangelize mobile gaming across MGS, and drive technical platform and service requests back to the parent organization and other business units in phone development. In addition, as the Center of Excellence for Mobile Games, the studio will develop showcase internal mobile games and entertainment experiences, while acting as the technical hub and spearhead for mobile game technology.
Are you passionate about games? Excited by the mobile computing revolution and highly-connected entertainment? Want to build games for our new Windows Phone devices?
Microsoft Games Studios is looking for a strong development leader to help build a world class mobile development group. Your focus will be on services for our mobile gaming and entertainment titles.
Qualifications
Successful candidates will have 6+ years of development experience and 2+ years of experience with web services. Strong coding skills are a must, and experience with Xbox Live, C#, and cloud computing frameworks is highly desired. The position may also involve working with some external development partners, so good cross-group skills and occasional travel are also required.

This means that there will be serious development work done at Microsoft to create fun game titles the work on the Windows Phone.  Think about the titles that Microsoft Game Studio (MGS) has overseen for the XBOX.  Here’s a few from the current MGS catalog.

image  image image image image image

If Microsoft can duplicate their success with the XBOX and make it work on the phone we are heading for some fun times.

Driving platform adoption

I’ve argued for years that the way to get platform adoption is to provide compelling applications for users.  Do you want Silverlight to be installed without a second thought by the user?   Make it a condition to using a gambling site.  People that want to gamble at that website will install Java, Flash, whatever, just to start having fun.  The same is true for porn sites, game sites and video sites.

I think this is true for the phone market too.  There are complications of course, since the wireless carriers and the hardware manufactures also play their part. But for a smart phone, you need to have more than just a phone.  Otherwise, why are you paying extra money for the device?  That means the phone needs a decent “phone OS” (something Microsoft has neglected until recently).  The phone also has to have the basic daily tools available; I’m thinking email, calendar, internet etc.  It needs to have a thriving third party market where I can go and upgrade my experience with interesting applications.  Apple is a shining example of getting this point right.  And for some users, having fun games available is a key factor.  No, I don’t think Solitaire qualifies here. 

So to get serious in the phone market, Microsoft turns to the game development community and says “Help us”.  Ironic, isn’t it?

 

I hear from a reliable source that Shazzam 1.3 is shipping next week, on July 12th, 2010.    Here’s a taste of the new Generative_Mandelbrot.fx

 

Now the WPF supports PS_3 shaders, this example can probably be enhanced further.  Want to take a shot at it?

Subscribe to the Shazzam Shader Editor blog to learn more.

http://blog.shazzam-tool.com

Here’s a simple tip.  If you want to use the Silverlight Right to Left layout (RTL) support for languages like Arabic and Hebrew don’t search for RTL.   No, what you are looking for is the FlowDirection=’RightToLeft’  property.

I don’t think that Microsoft tried to hide this property but if you search for bidi or RTL you’ll come up empty handed.

Using FlowDirection

Here’s a simple demo showing a TabControl, Polyline and Calendar control.  These first examples are showing a Silverlight usercontrol using the default LeftToRight setting.

image

image

Now, let’s change the FlowDirection.

 <Grid x:Name="LayoutRoot"
        Background="White"
        FlowDirection='RightToLeft'>
    <Grid.RowDefinitions>
      <RowDefinition Height='138*' />
      <RowDefinition Height='162*' />
    </Grid.RowDefinitions>
    <sdk:TabControl   Grid.RowSpan='2'>
      <sdk:TabItem Header='First'>

      </sdk:TabItem>
      <sdk:TabItem Header='Second'>

          <Polyline Points='30,30 160,45 30, 60'
                    Stroke='Orange'
                    StrokeThickness='3' />

      </sdk:TabItem>
      <sdk:TabItem Header='Third'>
        <sdk:Calendar Height='169'
                      Name='calendar1'
                      Width='230'
                      HorizontalAlignment='Left'
                      VerticalAlignment='Top' />
      </sdk:TabItem>
    </sdk:TabControl>

  </Grid>

As you can see, the tab control changes the alignment of the tabs and the order of the child tab items. 

The Polyline correctly changes orientation and the Calendar control reverses the order of the days. All this happens automatically when you change the FlowDirection.

image

image

Keeping your application responsive while under load is important. If you assign the UI thread to do time intensive work you are asking for trouble as it will prevent the UI from updating. This will cause the application to appear unresponsive. The solution, of course, is to assign the task to a worker thread instead of the UI thread. In WPF binding this can be easily accomplished by setting the IsAsync property to true in the XAML. When the binding engine encounters the IsAsync property it spawns a worker thread to get the data, then marshals the work back to the UI thread when it is ready to update the target property.

   <TextBlock Text='{Binding Path=Year, IsAsync=True}' />

This snippet shows how to create an asynchronous binding. It’s simple and easy, just the way you want it to be. But what happens if you want to inform the user that the work is going to take awhile or you have a situation where you have multiple data sources, not all of which are freely available? For these scenarios you should replace the Binding class with the PriorityBinding class.

PriorityBinding derives from Binding and is a variation of MultiBinding, a type of binding where you specify multiple sources in your XAML. While you can have multiple source, only one sourece can be active at any time. WPF queries all specified sources in the PriorityBinding and the first source to return data is designated the active binding. If more than one source returns data then WPF activates the binding with the highest priority.

Data Source Example

The following code shows an example of a data source that exposes two bindable properties. The preferred source is the ColorsFromSlowSource property but the class also exposes the LoadMessage property which will serve as the lower priority data source.

class SimulatedSource : INotifyPropertyChanged
{
  public ObservableCollection<String> LoadMessage
  {
    get
    {
       // this call will return data immediately
     return new ObservableCollection<String>() { "Loading Data..." };
    }
}
  public ObservableCollection<String> ColorsFromSlowSource
  {
   get
   {
    // this call is delayed
    var temp = new ObservableCollection<String>();
    temp.Add("Blue");
    temp.Add("Red");
    temp.Add("Green");
    temp.Add("Yellow");
    temp.Add("Orange");
    Thread.Sleep(4000);
    return temp;
    }
}

Next, it’s time to setup the binding as shown in the following XAML.

<Page.Resources>
    <data:SimulatedSource x:Key='source1' />
  </Page.Resources>
  <Grid>
    <ListBox DataContext='{StaticResource source1}' Margin='20'>
      <ListBox.ItemsSource>
        <PriorityBinding>
        <!--highest priority sources are first in the list-->
         <Binding Path="ColorsFromSlowSource"
                   IsAsync="True" />
          <Binding Path="LoadMessage"
                   IsAsync="True" />

        </PriorityBinding>
      </ListBox.ItemsSource>
    </ListBox>

Let’s take a look at the results of this binding at runtime. The first screenshot shows the ListBox populated with the data returned from the LoadMessage property in the data source. The second screen shot shows the results a few seconds later. In the later screenshot you can see the PriorityBinding has repopulated the ListBox with the higher priority data.

clip_image002[4]

Figure 1 - Lowest priority binding applied.

clip_image004[4]

Figure 2 - Highest priority binding applied.

In this example all the datasources came from the same business class. PriorityBinding works with any valid datasources however so the bindings could just as easily came from differents sources in different locations.

 

======================

Original article on TechTarget.com

 

Here are some of the Silverlight sites I showed at a recent UG talk.

Aggregate sites

Individual Sites

Value Converters are a useful addition to a WPF. If a value converter is specified in a binding, the source data is funneled to the converter before arriving at the binding destination.

Before you can use the converter in your XAML you need to add an instance of the converter to your XAML, usually in a resource section. Once you have the converter in a ResourceDictionary you can refer to it in the binding code.

 [XAML] 
<Window x:Class="ValueConverterTips.CustomMarkupTip"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:converters='clr-namespace:ValueConverterTips.Converters'
        Title="CusomMarkupTip"
        Height="300"
        Width="300">
    <Window.Resources>
        <converters:NumberToBrushConverter x:Key='brushConverter' />
    </Window.Resources>

    <Grid>
        <Ellipse Fill='{Binding SomeIntData,
                    Converter={StaticResource brushConverter}}'
                     Width='10'
                     Height='10' />
    </Grid>
</Window>

 

This is perfectly valid XAML and you will find it in thousands of WPF projects around the world. Programmers are always looking for a way to reduce the amount of code they need to write however and there is a way to simplify your code by creating your own MarkupExtension.

The key to this tip is that our converter class will derive from MarkupExtension in addition to implementing the IValueConverter interface.

[C# code]
namespace ValueConverterTips.Converters
{
    class NumberToBrushConverter : MarkupExtension, IValueConverter
    {
        private static NumberToBrushConverter _converter = null;

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            // determine if we have an instance of converter
            // return converter to client
            return _converter ?? (_converter = new NumberToBrushConverter());
        }
        public object Convert(object value, 
                              Type targetType, 
                              object parameter, 
                              System.Globalization.CultureInfo culture)
        {

            return new SolidColorBrush(Colors.Orange);
        }

        public object ConvertBack(object value, 
                                  Type targetType, 
                                  object parameter, 
                                  System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

    }
}

Now that you have your custom MarkupExtension class you can remove the converter from the Resources sections and use the converter class directly.

<Window x:Class="ValueConverterTips.CustomMarkupTip"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:converters='clr-namespace:ValueConverterTips.Converters'
        Title="CustomMarkupTip">

    <!-- no longer need the resources section -->
    <Grid>
        <Ellipse Fill='{Binding SomeIntData, Converter={converters:NumberToBrushConverter}}'
                 Width='10'
                 Height='10' />
    </Grid>
</Window>

[Original article on TechTarget]

Older Posts »