Archive

Articles taggués ‘WP7’

Clavier virtuel XNA sur WP7

J’ai continué un peu mes recherches pour au final trouver le moyen d’avoir le clavier virtuel sous XNA.
C’est suite à une demande d’une connaissance que j’ai eu besoin de chercher cela et au finale la solution était toute bête.
Bon ce n’est pas encore un HUD complet en Silverlight mais c’est déjà pas mal pour rentrer un pseudo de HighScore par exemple :D .
Avec une « fake » textbox, moyen de faire une formulaire complet.

TouchPanel.EnabledGestures = GestureType.Tap; // On enregistre la gesture "Tap" dans celle a surveillées
if (TouchPanel.IsGestureAvailable && TouchPanel.ReadGesture().GestureType == GestureType.Tap)
{
    // On a "tap" l'écran, on affiche donc le clavier pour demander un pseudo
    Microsoft.Xna.Framework.GamerServices.Guide.BeginShowKeyboardInput(PlayerIndex.One,
        "HighScore", "Please enter your pseudo:", // Titre et Sous Titre
        "Stumpy", // Texte par defaut
        (IAsyncResult ar) =>
            {
                string ret = Microsoft.Xna.Framework.GamerServices.Guide.EndShowKeyboardInput(ar);
                Debug.WriteLine(ret);
            }
        , null);

Dans la foulé, un code permettant d’afficher une MessageBox en XNA.

Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox("Title",
                   "Texte",
                   new List<string> { "OK", "42" }, // list des boutons, maximum deux
                   1, // bouton qui a le focus
                   MessageBoxIcon.Error, // icone de la Messagebox
                   (IAsyncResult ar) =>
                   {
                        int? ret = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(ar); // ret prend la valeur de l'index du bouton cliqué
                   }
                , null);

A savoir que le code pour le clavier marche également sur une application Silverlight (une fois les deux références XNA ajoutées) pour si un jour le besoin arrive d’avoir une entrée utilisateur sans que ce dernier clique explicitement sur une TextBox, oui sait-on jamais :) .

Categories: Silverlight, WP7, XNA Tags: , ,

Snippets pour WP7

Petite session reflector pour regarder les entrailles des assembly Windows Phone 7.
Je n’ai pas trouvé ce qui m’intéressais en premier lieu…du moins pas encore mais voici déjà quelques petites morceaux de code qui pourront servir lors de vos devs.

Pour faire vibrer le téléphone :

Microsoft.Devices.VibrateController.Default.Start(TimeSpan.FromSeconds(5));

5 secondes étant le maximum possible.
Un appel de la methode Stop() pour arrêter avant la fin du temps défini.

Pour savoir si votre programme s’exécute sur l’émulateur ou un appareil :

var type = Microsoft.Devices.Environment.DeviceType;
// type peut prendre comme valeur
// Microsoft.Devices.DeviceType.Device
// Microsoft.Devices.DeviceType.Emulator

Pratique pour faire un peu d’abstraction, on peut penser par exemple aux services de géolocalisation qui fonctionneront sans nul doute mieux sur un appareil ;) .

Voici une ébauche de Wrapper à utiliser :

public class Wrapper
{
    public Wrapper()
    {
        if (!DesignerProperties.IsInDesignTool)
        {
            // on s'execute sur emulateur ou device
            this.RuntimeCode();
        }
        else
        {
            // on s'execute en mode design (Blend), on peut injecter ici des datas pour tester l'interface
            // Design code
        }
    }

    private void RuntimeCode()
    {
        if (Microsoft.Devices.Environment.DeviceType == Microsoft.Devices.DeviceType.Device)
        {
            // sur un device, on peut utilise les services sans soucis
        }
        else
        {
            // sur emulateur, il faut faker le comportement des services
        }
    }
}

L’ensemble est séparé car tester le mode édition ne suffit pas toujours à éviter les erreurs dans Blend, le reste du code étant malgré tout précompilé.
En separant les deux test, on est certain de n’avoir aucun soucis ni erreur dans chacun des trois cas.

Microsoft.Devices.Radio.FMRadio.Instance.CurrentRegion = Microsoft.Devices.Radio.RadioRegion.Europe;
Microsoft.Devices.Radio.FMRadio.Instance.PowerMode = Microsoft.Devices.Radio.RadioPowerMode.On;
Microsoft.Devices.Radio.FMRadio.Instance.Frequency = 101.1;

Le code pour utiliser la radio, ne provoque aucune erreur a l’exécution mais pas moyen de savoir actuellement si cela sera « disponible » au sein des applications.
MSDN n’indique pas que son utilisation sera bridé mais la page est encore bien vide…

var licence = new Microsoft.Phone.Marketplace.LicenseInformation();
var trial = licence. IsTrial();

Permet bien entendu de savoir si l’application tourne en mode trial ou non mais on peut remarquer également une sous classe internal

internal static class NativeMethods
{
    // Fields
    internal const int S_FALSE = 1;
    internal const int S_OK = 0;
}

Cela peut confirmer que certaines applications auront bien le droit de faire un peu de natif selon le bon vouloir de Microsoft.
Oui l’init actuel n’est pas vraiment motivante ;) mais cela a la mérite d’être présent…
Voilà pour le premier jet, il me reste pas mal de chose à explorer mais j’ai peur de devoir plonger un peu plus dans le code pour la suite, les choses apparentes sont déjà bien connu en général.
Si des gens ont des pistes sur comment :

  • Utiliser le clavier virtuel sur demande (Silverlight et XNA)
  • Utiliser Silverlight au sein d’une application XNA (ou l’inverse mais en évitant le WritableBitmap ;) )
Categories: Blend, C#, WP7 Tags: , ,

WP7 Push Notifications

logo-windows-phoneWindows Phone 7 approche doucement mais surement et ces derniers jours nous avons eu le droit de toucher à la version beta du SDK.

Depuis l’annonce, je suis de plus ou moins près ce nouveau OS mobile et j’en suis plutôt content dans l’ensemble, certaines limitations techniques me laisse un peu perplexe en ma qualité de dev malheureusement…

Les vidéos des devices sont sympas et…la réalité l’est tout autant ;) donc je voulais m’y intéresser d’un peu plus près après les classiques petites applications de rss reader et autre meteo reader, j’ai voulu regarder le système de notifications.

Ces notifications permettent de s’abonner à un channel de diffusion et ensuite d’être informé par le biais d’event un peu près n’importe quand (et donc même quand l’application “dort” en background).

Bon le concept…rien de bien nouveau et de magique mais comme d’habitude, le SDK est vraiment bien fait et assez souple pour permettre une intégration rapide et surtout facile au sein de nos applications mais egalement de n’importe quelles applications client/desktop/serveur.

Je ne vais pas m’étendre sur la création d’appli simple sur WP7, il commence a y en avoir un peu partout sur le net mais plus vous montrer comment en quelques lignes, on peut recevoir des notifications sur son application.

Nous allons découper cela en deux étapes, la première sera bien entendu de préparer son application à recevoir des notifications et réagir en conséquence.

La seconde sera la mise en place d’une plateforme d’envois, cela peut-être un peu près n’importe quoi…ah non enfaite n’importe quoi capable d’envoyer une requête HTTP (oui autant faire simple).

Comme évoqué, nous devons passer par un channel, il suffit d’imaginer cela comme un tuyau ou des messages peuvent se mettre en attente d’être consommé par l’application.

public HttpNotificationChannel myChannel;

A savoir que le channel pour une application peut changer entre chaque lancement mais pas obligatoirement donc il faut prendre en compte ce cas:

myChannel = HttpNotificationChannel.Find("MyChan"); //ou MyChan est un nom permettant de le retrouver par la suite a coup de ce .Find

Les deux cas:

1. Le channel existe déjà, il nous suffit de nous y abonner (if myChannel != null)

2. Le channel n’existe pas et/ou plus, on va donc l’ouvrir puis s’y abonner

Pour ouvrir notre channel, deux instructions:

myChannel = new HttpNotificationChannel("MyChan");
myChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(myChannel_ChannelUriUpdated);
myChannel.Open();

Bon d’accord…trois instructions car l’event ChannelUriUpdated est là pour nous informer que l’adresse de notre channel, assez pratique pour la communiquer aux autres (les “senders”).

En version simple, voici la méthode en question:

void myChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
{
    Debug.WriteLine("Notification channel URI:" + e.ChannelUri.ToString());
}

La, bien sûr il faut imaginer implémenter l’envoi de cette uri vers un server ou un autre client pour qu’ils sachent par ou envoyer les notifications.

Je vous laisse mettre en place cette partie, en fonction de vos besoins.

Il existe trois types de notifications possibles, chacune ayant un rôle particulier et un “champs d’action”

1. Les Raw notifications, système le plus “ouvert” car permettant d’envoyer un peu près ce que l’on veut, c’est donc la façon pour communiquer avec son application tout ce qui concerne la logique de l’application.

2. Les Tile notifications, sont celle pour mettre à jour la tile de l’application si celle-ci est “pin to start” (comprendre par la, mise en avant sur la page d’accueil du téléphone), on peut faire varier l’image mais également un compteur (prenons exemple du nombre de mail non lu) et le titre de la tile

3. Les Toast notifications, elles permettent d’afficher un petit bandeau en haut de l’écran qui contient l’icône de l’application, un titre et un sous-titre. Utile pour par exemple informer qu’une chose est arrivée dans l’application et si on clique dessus, l’application s’ouvre.

Voici une illustrations pour les Tile et une pour les Toasts, les autres n’ayant pas de visuel ( sauf si choix du développeur)

Un exemple de tile:

wp7Tile3

Un exemple de Toast:

wp7Toast

Ensuite il suffit de brancher notre channel au shell du telephone, pour cela:

myChannel.BindToShellTile(); //pour s’abonner aux Tiles

Suffit pour cela.

Nous allons pour le reste ajouter le bind des toasts:

myChannel.BindToShellToast(); //pour s’abonner aux Toasts
/* pour recevoir les Raw */
myChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(myChannel_HttpNotificationReceived);
/* gestion des erreurs */
myChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(myChannel_ErrorOccurred);

Et un event nous permettant de gérer les erreurs.

Celui du milieu étant pour gérer les Raw :) .

Je ne vais pas m’étendre sur les raw, il faut savoir que l’on envoie un buffer dans ce type de notification donc ensuite le protocole de communication dépend entièrement de l’application cible, il faut mettre en place une API que l’envoyeur comme le destinataire connait.

Une fois l’event levé, il vous suffit de lire le contenu de e.Notification.Body pour y entrainer vos informations.

Rien de plus n’est nécessaire, nous somme déjà en mesure de recevoir tout ce qui nous intéresse!

Passons donc à l’envois de notification, on part du principe que vous avez communiqué l’adresse du channel a un serveur qui par exemple va de temps en temps envoyer une notification vers les clients abonnés.

Dans notre exemple nous simulerons cela par une adresse superbement gérer au sein d’un copier/coller car c’est bien plus classe au sein d’un tuto :) .

Etudions déjà la structure des messages à envoyer dans le cas d’un Toast ou d’un Tile, à savoir que c’est encore sujet a modification donc dans le cas d’une mise à jour, si cela ne marche plus, pas de panique, il suffit d’aller voir sur la page MSDN la nouvelle version: http://msdn.microsoft.com/en-us/library/ff402545%28v=VS.92%29.aspx

Dans le cas d’un Tile, on va donc envoyer:

string tileMessage = String.Format("Content-Type: text/xml\r\nX-WindowsPhone-Target: token\r\n\r\n" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Tile>" +
"<wp:BackgroundImage>{0}</wp:BackgroundImage>" +
"<wp:Count>{1}</wp:Count>" +
"<wp:Title>{2}</wp:Title>" +
"</wp:Tile> " +
"</wp:Notification>", this.Image.Text, this.Count.Text, this.Message.Text);

On voit donc trois paramètres servant à:

1. Indiquez l’image à mettre en background de Tile, doit être contenu dans l’application ou à télécharger sur un serveur “autorisé” (lors du BindToShellTile, une surcharge permet de lister les serveurs “autorisés”, image qui doit prendre moins d’une minute à se télécharger!)

2. Un compteur, par exemple le nombre de mail non lu

3. Un titre, je vous laisse deviner

Et dans le cas d’un Toast:

string toastMessage = String.Format("Content-Type: text/xml\r\nX-WindowsPhone-Target: toast\r\n\r\n" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>{0}</wp:Text1>" +
"<wp:Text2>{1}</wp:Text2>" +
"</wp:Toast>" +
"</wp:Notification>", this.Message.Text, this.SubMessage.Text);

Cette fois ci, deux paramètres:

1. Un titre

2. Un sous-titre

Et là on se demande ou l’envoyer? Et bien tout simplement vers notre adresse de channel donne par l’application et que l’on va donc récupérer sur notre serveur ou…dans le buffer magique du copier/coller :D .

Pour cela, je ne vais pas m’étendre sur l’explication de ce code, rien de bien mystérieux:

HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(subscriptionUri);
sendNotificationRequest.Method = "POST";
sendNotificationRequest.Headers = new WebHeaderCollection();
sendNotificationRequest.Headers.Add("X-NotificationClass", codeHeader);
byte[] notificationMessage = Encoding.Default.GetBytes(msg);
sendNotificationRequest.ContentLength = notificationMessage.Length;
using (Stream requestStream = sendNotificationRequest.GetRequestStream())
{
    requestStream.Write(notificationMessage, 0, notificationMessage.Length);
}
response = (HttpWebResponse)sendNotificationRequest.GetResponse();
string notificationStatus = response.Headers["X-NotificationStatus"];
string notificationChannelStatus = response.Headers["X-SubscriptionStatus"];
string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"];

Il nous suffit donc d’appeler ce code avec subscriptionUri correspondant a notre adresse de channel et petite astuce, codeHeader doit prendre la valeur de “1” dans le cas d’un Tile et “2” pour un Toast.

msg etant bien sur le flux xml de la notification.

Je dois admettre que cette petite différence de code header est casse pied mais la doc est très clair la dessus :) .

Dans le cas d’un envoi d’information en Raw, une fois votre protocole défini, il vous suffit d’envoyer l’information sans mettre de code header particulier.

Si on prend l’exemple MSDN :

new byte[] {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};

Rien de nous empêche bien sûr d’envoyer des textes en clair ou autre information, quand que les deux parties savent le lire et l’écrire correctement :) .

L’idée est de permettre un transfert simple d’information même quand l’application n’est pas active (car si active, un simple webservice suffit amplement).

Pour les toast, je vous laisse vous reporter a l’image plus haut pour voir a quoi cela ressemble, concernant le changement de tile et l’ajout d’information, voici une illustration:

wp7Tile2

Je n’ai mis que de petit bout de code pour me concentrer sur l’essentiel mais pour ceux n’ayant pas réussi à remettre cela en ordre, voici une classe complète permettant de gérer les abonnements.

public class Notification
{
    public HttpNotificationChannel myChannel;
    public void CreatingANotificationChannel()
    {
        myChannel = HttpNotificationChannel.Find("MyChan");

        if (myChannel == null)
        {
            myChannel = new HttpNotificationChannel("MyChan");
            myChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(myChannel_ChannelUriUpdated);
            myChannel.Open();
        }
        else
        {
            Debug.WriteLine("Notification channel URI:" + myChannel.ChannelUri.ToString());
        }
        myChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(myChannel_HttpNotificationReceived);
        myChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(myChannel_ErrorOccurred);
        myChannel.BindToShellTile();
        myChannel.BindToShellToast();
    }

    void myChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
    {
        Debug.WriteLine("Notification channel URI:" + e.ChannelUri.ToString());
    }

    void myChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)
    {
        switch (e.ErrorType)
        {
            case ChannelErrorType.ChannelOpenFailed:
                // ...
                break;
            case ChannelErrorType.MessageBadContent:
                // ...
                break;
            case ChannelErrorType.NotificationRateTooHigh:
                // ...
                break;
            case ChannelErrorType.PayloadFormatError:
                // ...
                break;
            case ChannelErrorType.PowerLevelChanged:
                // ...
                break;
        }
    }
    void myChannel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
    {
        if (e.Notification.Body != null && e.Notification.Headers != null)
        {
            System.IO.StreamReader reader = new System.IO.StreamReader(e.Notification.Body);
        }
    }
}

J’ai également mis en place une page web vous permettant d’envoyer des notifications sur un channel que vous lui donnez en paramètre :) .

http://wp7.fr/push/

Categories: .Net, C#, WP7 Tags: , , ,

PrismEngine tourne maintenant avec XNA 4.0!

2010_logo_prismengine Depuis l’annonce de la version 4.0 du Framework XNA, l’équipe de PrismEngine avait une folle envie de regarder cela de plus près et rapidement faire évoluer notre moteur dessus pour pouvoir tirer parti de la nouvelle plateforme mobile de Microsoft.

Apres une semaine chargée en évènement, on notera par exemple le boot camp de Microsoft pour Imagine Cup ou j’étais en qualité de mentor pour un groupe d’étudiant de troisième année d’Epitech. Quelques tests sur les nouvelles capacités du Framework (voir les derniers articles sur le tactile par exemple).

Le groupe, disons plutôt notre lead technique Benjamin Baldacci c’était réservé une nuit avec comme objectif de mener à bien cette évolution.

Vers 5h du matin, j’ai reçu un mail m’annonçant que cela était fait et qu’il était maintenant temps pour lui d’aller jouer un peu à la xbox 360 ;) .

cco_resources_downloads_downloadItemImage_XNAGS4_CTPLe passage vers XNA 4.0 n’est pas final encore, nous attendront une version plus complète du  Framework qui n’est pour le moment qu’en CTP mais nous avons pu confirmer que même pour un projet de grande ampleur, la transition n’est pas bien lourde.

Il y a bien quelques petites choses qu’il faut modifier mais dans l’ensemble, aucun soucis.

En quelques heures, le moteur était opérationnel !

Je me permettrais de citer notre lead technique : « Foutu référence null que le débuguer était pas foutu de m’indiquer ! », bug qui a dû lui prendre environ la moitié du temps c’est pour dire…

Aucune demo n’a été faite spécifiquement pour la plateforme, nous avons tout simplement repris une petite demo faite il y a quelque temps qui était là pour démontrer l’ajout de fonctionnalité par le biais de module.

Cela marchait sur PC, sur Xbox360, sur Surface et sur Zune HD et bien maintenant on peut officiellement dire que cela marche également sur Windows Phone 7 Series :) .

(A noter que le Zune HD a disparu de la version 4.0 du Framework donc paix à son âme…)

PrismEngine, un des premiers moteurs XNA a tourner sur Windows Mobile? Dans les premiers en tous les cas ;) .

Merci à Benjamin pour son boulot!

WP1

WP2

XNA 4.0 et le tactile

cco_resources_downloads_downloadItemImage_XNAGS4_CTP

Nous le savions déjà XNA 4.0 est tourné vers le mobile avec l’ajout de la plateforme Windows Mobile 7 mais XNA en profite également pour continuer sa lancé vers le tactile.

Le Framework supportait déjà Surface et le Zune HD (ce qui n’est plus le cas en 4.0 :( ) et on peut maintenant lui ajouter wp7 mais également le PC « classique »

Plus besoin de trickser avec de l’interop de partout pour obtenir du tactile avec un écran gérant le multipoint, encore peu répandu mais existant malgré tout (genre sur mon bureau).

J’avais déjà parlé du tactile sur le Zune HD et bien maintenant le même code fonctionne tout aussi bien sur Windows Mobile 7 que sur Windows 7, votre jeu peut donc tirer partie du tactile vraiment partout!

Oui, en soit on pourrait se dire que cela n’a rien d’extraordinaire et c’est le cas mais j’étais un peu triste de voir personne en parler avec cette nouvelle plateforme en haut de liste du changelist.

Bref, voici quelques lignes vous permettant de tester le tactile sur PC/wp7.

// Update
foreach (var elem in TouchPanel.GetState())
 {
     if (elem.State == TouchLocationState.Pressed)
     toshow.Add(elem.Position);
 }
// Draw
spriteBatch.Begin();
 foreach (var elem in toshow)
 {
     spriteBatch.Draw(texture, elem, null, Color.White, 0, Vector2.Zero, 0.1f, SpriteEffects.None, 1.0f);
 }
 spriteBatch.End();

Chaque pression de doigt sur votre écran de PC ou de mobile va remplir une collection de point, et dans le Draw, on dessine tout simplement une texture pour chaque contact.
L’exemple est bidon mais suffit à démontrer le concept :) .

Categories: C#, WP7, XNA Tags: , , , , ,

[Mix10] Une soudaine envie de développer sur mobile ?

Hero-Amplify-Mix

Lors de la keynote de la Mix 10, nous avons eu le droit a bien des annonces et sorties et ce n’est pas nous dev qui allons-nous en plaindre :) .

Apres un retour rapide de l’historique de Silverlight, quelques démonstrations de son utilisation sur des projets de très grosse taille. On peut citer par exemple les JO 2010 qui ont été intégralement streamer en se reposant sur cette technologie pour un résultat il faut bien l’avouer des plus convainquant !

Nous avons eu le droit à de nombreuses démonstrations, certaine attendu d’autres nouvelles.

Mais surtout on retiendra la sortie de l’ensemble des outils pour développer sur la nouvelle monture de Windows mobile, oui oui, celle qui on l’espère va permettre de donner un coup de fouet, encore !, a ce marché si mouvementé.

Pour vous y essayer, il vous suffit de télécharger le kit de dev qui comprend :

· Visual Studio 2010 express RC

· Silverlight 4 RC

· XNA GS 4.0 CTP

· Le simulateur wp7 (qui gère sans soucis la 3D pour XNA)

Tout cela, « bien sur » gratuit et le restera par la suite pour permettre à tous de se lancer dans la création d’application et jeux sur mobile.

La distribution quand a elle reste sur le principe de marketplace donc rien de très nouveaux si on ne prend pas en compte le changement d’interface. Un petit regret sur le fait que pour le moment le business model ne donne pas vraiment envie aux développeurs amateurs de s’y essayer et que cela ne semble pas vouloir changer.

Edit: A première vue, les étudiants pourront distribuer leurs applications gratuitement par le biais de programme du type DreamSpark donc l’ouverture est la malgré tout ;)

A disposition également, Blend 4 et l’add-in pour wp7, Blend reste un outil payant mais a noter que les possesseurs de la version 3 auront l’upgrade gratuite :) .

· Blend 4 beta

· Blend SDK for windows phone

· Blend add-in for windows phone

Blend4WPEmu1

Bien sûr, cette grosse sortie s’accompagne de nombreuses docs sur MSDN et sur de nombreux sites. Quelques samples par ici.

Dès que j’ai une minute pour moi, je ferais sans doute un petit article à propos de ma « première application wp7 », le plus dur reste l’idée, ensuite la réalisation est vraiment « bidon » comme peut vous le montrer par exemple Bradon Watson avec son client twitter.

On ne va pas tarder à perdre nos jobs, j’vous l’dis !

Xna GS 4.0 et jeux sur Wp7

Quelques nouvelles de la GDC concernant XNA mais également et surtout le développement de jeu sur WP7.

On attend encore une change List plus précis car pour le moment l’ensemble des annonces faite reposent surtout sur wp7, compréhensible en soit :) .

Voici ce que l’on sait pour le moment à propos de la prochaine version du Framework XNA:

  • New platform
    • Windows Phone 7 Series
  • New features
    • Integrates with Visual Studio 2010
    • Dynamic audio output
    • Microphone input
    • BasicEffect has four new siblings
      • SkinnedEffect
      • EnvironmentMapEffect
      • DualTextureEffect
      • AlphaTestEffect
  • Improved portability and usability
    • Collapsed graphics caps into just two profile levels: Reach and HiDef
    • Many graphics API improvements
    • This involves some breaking API changes
    • Split Microsoft.Xna.Framework.dll into several assemblies, to make it more obvious which pieces are available on each platform

Et pour démontrer un peu ces nouveautés, voici quelques images de jeu tournant sur WP7, plutôt prometteur!

hmm… je sens déjà venir le passage à XNA 4.0 de PrismEngine et donc un petit module pour gérer les téléphones (on gère le ZuneHD donc la transition ne devrait pas être bien longue!)

harvetsachievementtop1

windowsphonexna01pr

windowsphonexna04pr

windowsphonexna10pr

On peut voir que le rendu est fort sympathique, le fait que wp7 réclame un minimum hardware permettant d’avoir une certaine uniformité sur l’ensemble des téléphones donc on peut espérer que le marché du jeu sur Windows mobile va subir le même essor que sur l’IPhone actuellement.

Le fait d’avoir qu’une seule plateforme est l’énorme atout qui a fait le succès de l’iPhone mais permettra a chacun de choisir le look de son téléphone tout en lui permettant l’accès aux mêmes applications avec un niveau de perf semblable n’est-il pas le parfait mélange a offrir aux clients?

Références:

http://klucher.com/blog/achievement-unlocked-xna-game-studio-4-0-for-windows-phone/

http://blogs.msdn.com/shawnhar/archive/2010/03/09/in-which-hints-become-facts-xna-game-studio-4-0.aspx

http://www.engadget.com/2010/03/09/microsoft-shows-off-xna-games-running-on-windows-phone-full-3d/

WindowsPhone Series 7

image

image

Microsoft était vraiment attendu à la Mobile World Congress 2010 car nous savions maintenant un peu près tous que la nouvelle version de Windows Mobile allait etre présentée.

Je dis nouvelle car oui la 6.5 n’est qu’un petit patch pour éviter de trop couler sur le marché ;) .

Mais comme on pouvait l’espérer, Microsoft continue sur sa lancé de remise en question et adaptation au marché en repensant le produit.

Pour ceux qui ont la chance d’avoir un Zune HD comme moi ou qui ont déjà utiliser le Zune Software, on peut globalement dire que le WindowsPhone Series 7 est dans la continuité en terme d’interface. Et ce n’est pas moi qui vais m’en plaindre!

On peut lui reprocher peut-être les gros carres “moche” du panneau d’accueil mais j’ai envie de croire que ce n’est pas la version final ou sinon et bien on prendra le temps de custom un peut cela ;) .

Mais dans l’ensemble je pense que cette nouvelle monture a une chance de s’installer sur le marché qui est pourtant bien remplie par l’Iphone et Android qui monte doucement mais surement.

L’accent est vraiment mis sur le côté social mais également une utilisation moderne de son téléphone. On peut remarquer dans un spot la petite “attaque” au système de l’IPhone ou tout repose sur les apps mais au final aucune ne communique vraiment, chacune remplie un peu près son rôle mais cela manque d’unification pour permettre la meilleure utilisation de son téléphone.

Vous cherchez un restaurant japonais? Une petite recherche vous proposera les résultats les plus proche de votre position mais également et automatiquement toutes les informations sur les restaurants, pas besoin de copier-coller les noms, voir devoir les noter sur un bout de papier puis refaire une recherche sur chacun, non le téléphone fait le boulot a votre place.

Ce n’est qu’un exemple de scenario mais l’idée générale est d’unifié l’ensemble de l’utilisation de l’appareil pour offrir vraiment un produit complet et non seulement un agglomérat de petite application.

L’intégration de toute la “famille” Zune permettra d’avoir une offre multimédia vraiment sympa et quiconque ayant déjà eu un Zune HD entre les mains devrait pouvoir confirmer ;)

Mais même si on reprend les concepts, on les pousse encore un peu plus loin avec le système de “hub”, des sortes de lieux thématiques:

  • People (répertoire, réseaux sociaux unifies)
  • Images
  • Jeux
  • Musique et Vidéo (le Zune HD en gros)
  • Marketplace (appStore en version MS)
  • Office (on retrouve les logiciels de la gamme Office dans une version moderne et vraiment adapte aux mobiles)
  • image image image image image

On remarquera que la partie jeux sera directement votre compte Live (Xbox live) car l’offre sera totalement intégrée aux téléphones et donc on peut imaginer pouvoir rapidement avoir une offre de jeux sympathique.

Ils ont eu la “bonne” idée d’intégrer le système d »achievement” donc les gamers de la planète entière vont avoir un nouveau terrain de jeu.

Et nous les dev?! Et bien pas grand chose, ce n’était qu’une conférence de lancement mais lors de la MIX10 en mars, toutes les informations concernant les SDK et les technos seront dévoilées donc il reste plus qu’à espérer pouvoir avoir des “outils moderne” pour un téléphone qui se veut l’être…

Orange et AT&T sont les opérateurs retenue comme partenaires clefs mais les exclusivités ne sont plus vraiment les bienvenue en France donc il n’est pas certain que cela soit restreint a Orange pour nous :) .
Edit:
SFR sera de la partie également, on peut imaginer que tous le seront :) .

Bref, nous verrons bien cela dans quelques mois car les premières mobiles de téléphone équipé de cette “Series 7” seront dans le commerce à la fin de l’année 2010.

Plus d’information et des “demos” sur: http://www.windowsphone7series.com