SlideShare une entreprise Scribd logo
1  sur  52
palais des
congrès
Paris




7, 8 et 9
février 2012
Jeux multi-écrans :
envolez-vous avec Kinect,
Silverlight et WP7
       Cyril CATHALA
       Nathanaël MARCHAND
       Nathalie PETTIER
       So@t
SOMMAIRE
 Présentation
 Outils multiplateforme
 Couche de communication
 Architecture des jeux
 Logique jeux
 Gestuelle avec Kinect
 Design
 BackOffice
Introduction
Equipe

  So@t Experts                     Cyril CATHALA
blog.soat.fr                     Expert .NET
@SoatExpertsNET                  Blog : http://cyril.cathala.org
facebook.com/SoatExpertsNET
                                 Twitter : @CyrilCathala
  Nathanaël MARCHAND               Nathalie PETTIER
Expert .NET                      Experte Silverlight / WPF
Blog : http://blog.ou-bien.net   Blog : blog.devndesign.fr
Twitter : @NatMarchand           Twitter : @nathaliepettier

Merci à :
  David POULIN                     Sébastien FERRAND
Expert .NET                      Expert .NET
So@t en quelques mots …

  SSII spécialisé dans le développement
     10 ans de savoir-faire .Net / Java

  250 collaborateurs
     Tous les métiers du développement

  4 ans d’expertise Silverlight / WPF
     Société Générale, Dexia, Vente Privée, Canal+, M6,
     Radio France, Crédit Agricole, Eurosport, Sarenza.com
So@t Experts
  3 pôles d’expertise à So@t : .NET / Java / Agilité
  Capitalisation (publications sur le blog, production de
  support de formation)
  Formations externes ciblées expertise
  Animation de conférences
  Publication d’applications de référence :
     HappyNet, application composite
     SoPrism, générateur d’application Silverlight intégrant le
     framework PRISM pour créer des applications composites
     SoMVC, générateur d’application ASP.Net MVC 3 basé sur la
     structure d’une base de donnée SQL Server
  Support technique dans les forums communautaires et
  groupes (developpez.com, facebook, etc.)
Présentation des jeux
multi-écrans
VIDEO

Présentation de SoNuts & SoTank
Présentation des jeux


         SoNuts                       SoTank
  Faites volez un               Pilotez un tank 3D
  écureuil !                    2D + 3D
  2D                            Kinect
  Kinect                        2 écrans : XNA,
  3 écrans : XNA,               Windows Phone
  Silverlight,
  Windows Phone
=> Équipe de développeurs débutante dans les jeux vidéos
Schéma global de
communication

                                           Joueur 1



                                                                       Autres écrans
                                                  Hot Spot Wifi
                                                                    (observateurs du jeu)
Serveur de jeux = TV + PC + Kinect
                                                  Dossier Partagé



                          + scores



                                 BDD
                                                                           Joueur 2

                                 Web Service
           Back Office   Reconnaissance joueurs
Architecture
Architecture des jeux


        SoNuts           SoTank


      Messaging         Messaging

             Communicator
Architecture des jeux : SoNuts
                Clients
     Windows     WP7        Silverlight


      Window                Silverligh
         s
                 WP7            t
               Game Logic
               Messaging

            Communicator
Architecture des jeux : SoTank
       Clients 3D         Client 2D

  Windows   Silverlight      WP7

   Window   Silverligh
      s         t
                             WP7
                           Game Logic
     Game Logic 3D            2D
              Messaging

            Communicator
Couche de
communication
UDP vs TCP

  TCP
   Connecté
   Fiable
   Ordonné
   Contrôles de flux et congestion

  UDP
   Déconnecté
   Simple & Rapide
   Aucune garantie de fiabilité ou d’ordre
   Gestion de flux manuelle
UDP vs TCP

  TCP semble mieux …
  … FAUX !

  La fiabilité a un prix
     « Flot » de données
     Acquittement
     Renvoi d’un paquet perdu


  Jeux = Temps réel
  Bonus : Multicast !
Outils multiplateforme
Outils multiplateforme

  Partage du code

  Portable Class Library
    .NET Framework, Silverlight, WP7, Xbox 360
    Certaines dll supportées


  Project Linker
    Synchronisation de projets via liens symboliques


  Rx Framework
DEMO

Arborescence
Communication
Logique des jeux
SoNuts : Communication client
/ serveur
       Jeu                Joueur

    Statut initial
                     Joueurs prêts

                     Ecureuil tapé     Mises à jour :
                      (gentimment)     - position de
   Partie en cours                     l’écureil
                                       - position oiseaux
                     Ecureuil volant   - position bonus

                      Ecureuil par
   Partie terminée       terre
Approche #1

  Client « stupide » sans aucune prédiction

         Serveur       réseau   Client
          Position 1
           [Server]

                                 Position 1
          Position 2              [Server]
           [Server]

                                 Position 2
                                  [Server]
          Position 3
           [Server]
                                 Position 3
                                  [Server]
Approche #1

  Client « stupide » sans aucune prédiction

         Serveur         réseau   Client
           Position 1
            [Server]
                                   Position 1
                                    [Server]

                                  Action joueur
         Action joueur               [Client]
            [Client]

          Position 3
           [Server]
                                   Position 3
                                    [Server]
Approche #2
  Approximation côté client en attendant le retour
  serveur
  Interpolation lors de la synchronisation serveur
          Serveur            réseau    Client
        Position + Vitesse
            1 [Server]
                                      Position + Vitesse
                                          1 [Server]

                                      Position 1.1
                                        [Client]
                                                           interpolation
                                       Position 1.2
        Position + Vitesse               [Client]
                                                           + lissage
            2 [Server]
                                      Position + Vitesse
                                          2 [Server]
Approche #2
  Approximation côté client en attendant le retour
  serveur
  Lissage lors de la synchronisation serveur




             interpolation        position serveur
             client
Approche #3
  Le client prédit les mouvements à chaque action du
  joueur
  Correction par historisation des actions passées
          Serveur            réseau
                                      Client
        Position + Vitesse
            1 [Server]
                                      Position 1 [Server]

                                        Action joueur
                                           [Client]

          Action joueur               Position + Vitesse
             [Client]                    1.1 [Client]
                                                            prédiction
                                      Position + Vitesse
        Position + Vitesse
                                         1.2 [Client]
            2 [Server]
                                      Position + Vitesse
                                          2 [Server]
DEMO

Lissage
SoTank : Communication client /
serveur
  Workflow de jeu comparable à SoNuts

  Un client PC plus complexe à animer

  Des responsabilités moins décentralisées

  Des problématiques similaires
SoTank : La puissance de XNA

  Extensibilité du content pipeline:
    Génération du terrain via une texture (Height Map)

    Positionnement des arbres



  Shaders
    Effets pyrotechniques

    Billboarding des arbres



  Utilisation intensive des Maths!
    Matrices en folies & Transformations dans l’espace
SoTank & SoNuts: Portabilité

  Différence dans les API XNA:
    HiDef

    Reach



  Silverlight ne possède pas tout XNA

  Considérations Matérielles
Gestures avec Kinect
Présentation de Kinect

  Kinect SDK pour Windows

  3 flux disponibles
     Image
     Profondeur
     Audio


  Suivi de squelette
     Notion de joint (point de repère)
Présentation de Kinect
Gesture sur SoNuts



                  α2


α1




     Amplitude = α2 + α1
Gesture sur SoTank



                                         +


                                         -

         y


x

    z                    Déclenchement du canon :
                         mouvement haut vers bas
    Direction du canon
DEMO

Gestures Kinect
(ou comment avoir l’air intelligent)
Design


Le design offre une vrai plus value à tous les
projets numériques, une promesse
« d’expérience utilisateur » digne de ce nom.
Processus de développement


       Avant                    Après




    => Collaboration Designer / Développeur
Images pour WindowsPhone:
   SplashScreen
   Icones : tile, icone application
Images communes : Sprites / Textures 2D
   Personnages (écureuil, oiseaux, panda)
   Environnement (arbre, panneaux, nuages, noisettes, etc.)




           Hauteur, largeur identiques pour chaque image
Images pour WindowsPhone:
        SplashScreen
        Icones : tile, icone application
    Images communes : Sprites / Textures 2D
       Signalétiques (icônes du menu, etc.)


    3D : tank, environnement (sol, arbres, etc.)




Texture qui génère les reliefs du terrain Vue « carte » du terrain
BackOffice :
SoGame

Le « back » se doit d’être aussi joli et à la
hauteur que le « front »
Présentation de SoGame
  Application WPF « Metro Style » qui gère :
 Inscriptio
 n des
 joueurs
 Récupération
 des scores et
 photos



 Synchronisati   Envoi des    Reconnais   Top des
 on des          photos des   sance       joueurs
 joueurs et      joueurs
 parties
                              faciale
                              joueurs
Prise de photo avec Kinect
     Lancement de la capture de flux vidéos dans le Kinect runtime :
 var runtime = Runtime.Kinects[0];
 runtime.Initialize(RuntimeOptions.UseColor);
 //Camera vidéo
 runtime.VideoStream.Open(ImageStreamType.Video
 , 2, ImageResolution.Resolution640x480,
 ImageType.Color);
 runtime.VideoFrameReady +=
 OnVideoFrameReady;

 private void OnVideoFrameReady(object s,
 ImageFrameReadyEventArgs e)
 {
 if (_takePicture)                                Déclenchement unique de la photo
       var screenshot =                           durant la partie…
       e.ImageFrame.ToBitmapSource();
 }
    L’image est sauvegardée sur la machine
    En fin de la partie, envoi du score + photo via web service
Reconnaissance faciale


  OPENCV :                  Comment ça marche ?
  bibliothèque Open         Chargement
  Source de traitement      haarcascades pour la
  d’image en temps réel     détection de visage
                            Initialiser le périphérique
  EmguCV : permet
                            de capture
  d’utiliser la librairie
                            DetectHaarCascade et
  OPENCV dans un            EigenObjectRecognizer
  environnement .NET        pour chaque image à
                            analyser
Comment faire avec Kinect ?

  Lancement de la capture de flux                NOM Prénom
  vidéos évènement
  A chaque
  OnVideoFrameReady, on utilise la
  méthode DetectHaarCascade pour
  détecter des visages
  Parmi ces visages, on compare avec notre
  liste de visages enregistrés (BDD) avec la
  méthode EigenObjectRecognizer
  Si un visage est reconnu, on le retire de la
  liste pour continuer la comparaison sur les
  autres visages
DEMO

Reconnaissance faciale
Conclusion
Conclusion

  Ecosystème Microsoft

  Visual Studio pour tout unir
  Faire des jeux c’est « facile »

  Le design c’est important !

  Code source : http://sogames.codeplex.com
  Blog : blog.soat.fr
Envie d’essayer ?

  Viens chercher le fun !
  Stand So@t (n°39)
Q&A


Vous avez des                  Nous avons des
questions ?                    réponses 



Cyril Cathala – http://cyril.cathala.org - @CyrilCathala
Nathanaël Marchand – http://blog.ou-bien.net - @NatMarchand
Nathalie Pettier – http://blog.devndesign.fr - @NathaliePettier

Contenu connexe

Similaire à Jeux multi-écrans : envolez-vous avec Kinect, Silverlight et WP7

Presentation RTF
Presentation RTFPresentation RTF
Presentation RTFbrun.nico
 
ToulouseJS - Javascript multiplayer game
ToulouseJS - Javascript multiplayer gameToulouseJS - Javascript multiplayer game
ToulouseJS - Javascript multiplayer gameCyrille Bogaert
 
La diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureLa diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureMicrosoft
 
Architecture Lync - Deep dive avec nos experts
Architecture Lync - Deep dive avec nos experts Architecture Lync - Deep dive avec nos experts
Architecture Lync - Deep dive avec nos experts Microsoft Technet France
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéNicolas Deverge
 
L\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et TechnologiesL\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et TechnologiesIbrahima FALL
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeMicrosoft
 
Nouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudNouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudAlain Ganuchaud
 
Webcast : Exchange et la répartition de charge
Webcast : Exchange et la répartition de chargeWebcast : Exchange et la répartition de charge
Webcast : Exchange et la répartition de chargeiTProFR
 
Live Mesh Tech Days Suisse
Live Mesh Tech Days SuisseLive Mesh Tech Days Suisse
Live Mesh Tech Days SuisseGregory Renard
 
ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2Jérôme Esnault
 
Porte feuilles-perso
Porte feuilles-persoPorte feuilles-perso
Porte feuilles-persoymoumen
 
Windows server 2008 R2 : Services de Bureau Distant
Windows server 2008 R2 : Services de Bureau DistantWindows server 2008 R2 : Services de Bureau Distant
Windows server 2008 R2 : Services de Bureau DistantMicrosoft Technet France
 
Sécuriser vos accès nomades pour accéder à Exchange et Lync
Sécuriser vos accès nomades pour accéder à Exchange et LyncSécuriser vos accès nomades pour accéder à Exchange et Lync
Sécuriser vos accès nomades pour accéder à Exchange et LyncMicrosoft Technet France
 
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...Microsoft
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
L'orchestration de conteneurs avec Rancher
L'orchestration de conteneurs avec RancherL'orchestration de conteneurs avec Rancher
L'orchestration de conteneurs avec Ranchersliard
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotiqueMicrosoft
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfFootballLovers9
 

Similaire à Jeux multi-écrans : envolez-vous avec Kinect, Silverlight et WP7 (20)

Presentation RTF
Presentation RTFPresentation RTF
Presentation RTF
 
ToulouseJS - Javascript multiplayer game
ToulouseJS - Javascript multiplayer gameToulouseJS - Javascript multiplayer game
ToulouseJS - Javascript multiplayer game
 
La diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureLa diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud Azure
 
Lync : Bonnes pratiques d'Architecture
Lync : Bonnes pratiques d'ArchitectureLync : Bonnes pratiques d'Architecture
Lync : Bonnes pratiques d'Architecture
 
Architecture Lync - Deep dive avec nos experts
Architecture Lync - Deep dive avec nos experts Architecture Lync - Deep dive avec nos experts
Architecture Lync - Deep dive avec nos experts
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & Agilité
 
L\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et TechnologiesL\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et Technologies
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
Nouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudNouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain Ganuchaud
 
Webcast : Exchange et la répartition de charge
Webcast : Exchange et la répartition de chargeWebcast : Exchange et la répartition de charge
Webcast : Exchange et la répartition de charge
 
Live Mesh Tech Days Suisse
Live Mesh Tech Days SuisseLive Mesh Tech Days Suisse
Live Mesh Tech Days Suisse
 
ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2
 
Porte feuilles-perso
Porte feuilles-persoPorte feuilles-perso
Porte feuilles-perso
 
Windows server 2008 R2 : Services de Bureau Distant
Windows server 2008 R2 : Services de Bureau DistantWindows server 2008 R2 : Services de Bureau Distant
Windows server 2008 R2 : Services de Bureau Distant
 
Sécuriser vos accès nomades pour accéder à Exchange et Lync
Sécuriser vos accès nomades pour accéder à Exchange et LyncSécuriser vos accès nomades pour accéder à Exchange et Lync
Sécuriser vos accès nomades pour accéder à Exchange et Lync
 
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...
Retour d’expérience GlobeCast : Réduisez votre TCO avec les abonnements...
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
L'orchestration de conteneurs avec Rancher
L'orchestration de conteneurs avec RancherL'orchestration de conteneurs avec Rancher
L'orchestration de conteneurs avec Rancher
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdf
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Jeux multi-écrans : envolez-vous avec Kinect, Silverlight et WP7

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. Jeux multi-écrans : envolez-vous avec Kinect, Silverlight et WP7 Cyril CATHALA Nathanaël MARCHAND Nathalie PETTIER So@t
  • 3. SOMMAIRE Présentation Outils multiplateforme Couche de communication Architecture des jeux Logique jeux Gestuelle avec Kinect Design BackOffice
  • 5. Equipe So@t Experts Cyril CATHALA blog.soat.fr Expert .NET @SoatExpertsNET Blog : http://cyril.cathala.org facebook.com/SoatExpertsNET Twitter : @CyrilCathala Nathanaël MARCHAND Nathalie PETTIER Expert .NET Experte Silverlight / WPF Blog : http://blog.ou-bien.net Blog : blog.devndesign.fr Twitter : @NatMarchand Twitter : @nathaliepettier Merci à : David POULIN Sébastien FERRAND Expert .NET Expert .NET
  • 6. So@t en quelques mots … SSII spécialisé dans le développement 10 ans de savoir-faire .Net / Java 250 collaborateurs Tous les métiers du développement 4 ans d’expertise Silverlight / WPF Société Générale, Dexia, Vente Privée, Canal+, M6, Radio France, Crédit Agricole, Eurosport, Sarenza.com
  • 7. So@t Experts 3 pôles d’expertise à So@t : .NET / Java / Agilité Capitalisation (publications sur le blog, production de support de formation) Formations externes ciblées expertise Animation de conférences Publication d’applications de référence : HappyNet, application composite SoPrism, générateur d’application Silverlight intégrant le framework PRISM pour créer des applications composites SoMVC, générateur d’application ASP.Net MVC 3 basé sur la structure d’une base de donnée SQL Server Support technique dans les forums communautaires et groupes (developpez.com, facebook, etc.)
  • 10. Présentation des jeux SoNuts SoTank Faites volez un Pilotez un tank 3D écureuil ! 2D + 3D 2D Kinect Kinect 2 écrans : XNA, 3 écrans : XNA, Windows Phone Silverlight, Windows Phone => Équipe de développeurs débutante dans les jeux vidéos
  • 11. Schéma global de communication Joueur 1 Autres écrans Hot Spot Wifi (observateurs du jeu) Serveur de jeux = TV + PC + Kinect Dossier Partagé + scores BDD Joueur 2 Web Service Back Office Reconnaissance joueurs
  • 13. Architecture des jeux SoNuts SoTank Messaging Messaging Communicator
  • 14. Architecture des jeux : SoNuts Clients Windows WP7 Silverlight Window Silverligh s WP7 t Game Logic Messaging Communicator
  • 15. Architecture des jeux : SoTank Clients 3D Client 2D Windows Silverlight WP7 Window Silverligh s t WP7 Game Logic Game Logic 3D 2D Messaging Communicator
  • 17. UDP vs TCP TCP Connecté Fiable Ordonné Contrôles de flux et congestion UDP Déconnecté Simple & Rapide Aucune garantie de fiabilité ou d’ordre Gestion de flux manuelle
  • 18. UDP vs TCP TCP semble mieux … … FAUX ! La fiabilité a un prix « Flot » de données Acquittement Renvoi d’un paquet perdu Jeux = Temps réel Bonus : Multicast !
  • 20. Outils multiplateforme Partage du code Portable Class Library .NET Framework, Silverlight, WP7, Xbox 360 Certaines dll supportées Project Linker Synchronisation de projets via liens symboliques Rx Framework
  • 23. SoNuts : Communication client / serveur Jeu Joueur Statut initial Joueurs prêts Ecureuil tapé Mises à jour : (gentimment) - position de Partie en cours l’écureil - position oiseaux Ecureuil volant - position bonus Ecureuil par Partie terminée terre
  • 24. Approche #1 Client « stupide » sans aucune prédiction Serveur réseau Client Position 1 [Server] Position 1 Position 2 [Server] [Server] Position 2 [Server] Position 3 [Server] Position 3 [Server]
  • 25. Approche #1 Client « stupide » sans aucune prédiction Serveur réseau Client Position 1 [Server] Position 1 [Server] Action joueur Action joueur [Client] [Client] Position 3 [Server] Position 3 [Server]
  • 26. Approche #2 Approximation côté client en attendant le retour serveur Interpolation lors de la synchronisation serveur Serveur réseau Client Position + Vitesse 1 [Server] Position + Vitesse 1 [Server] Position 1.1 [Client] interpolation Position 1.2 Position + Vitesse [Client] + lissage 2 [Server] Position + Vitesse 2 [Server]
  • 27. Approche #2 Approximation côté client en attendant le retour serveur Lissage lors de la synchronisation serveur interpolation position serveur client
  • 28. Approche #3 Le client prédit les mouvements à chaque action du joueur Correction par historisation des actions passées Serveur réseau Client Position + Vitesse 1 [Server] Position 1 [Server] Action joueur [Client] Action joueur Position + Vitesse [Client] 1.1 [Client] prédiction Position + Vitesse Position + Vitesse 1.2 [Client] 2 [Server] Position + Vitesse 2 [Server]
  • 30. SoTank : Communication client / serveur Workflow de jeu comparable à SoNuts Un client PC plus complexe à animer Des responsabilités moins décentralisées Des problématiques similaires
  • 31. SoTank : La puissance de XNA Extensibilité du content pipeline:  Génération du terrain via une texture (Height Map)  Positionnement des arbres Shaders  Effets pyrotechniques  Billboarding des arbres Utilisation intensive des Maths!  Matrices en folies & Transformations dans l’espace
  • 32. SoTank & SoNuts: Portabilité Différence dans les API XNA:  HiDef  Reach Silverlight ne possède pas tout XNA Considérations Matérielles
  • 34. Présentation de Kinect Kinect SDK pour Windows 3 flux disponibles Image Profondeur Audio Suivi de squelette Notion de joint (point de repère)
  • 36. Gesture sur SoNuts α2 α1 Amplitude = α2 + α1
  • 37. Gesture sur SoTank + - y x z Déclenchement du canon : mouvement haut vers bas Direction du canon
  • 38. DEMO Gestures Kinect (ou comment avoir l’air intelligent)
  • 39. Design Le design offre une vrai plus value à tous les projets numériques, une promesse « d’expérience utilisateur » digne de ce nom.
  • 40. Processus de développement Avant Après => Collaboration Designer / Développeur
  • 41. Images pour WindowsPhone: SplashScreen Icones : tile, icone application Images communes : Sprites / Textures 2D Personnages (écureuil, oiseaux, panda) Environnement (arbre, panneaux, nuages, noisettes, etc.) Hauteur, largeur identiques pour chaque image
  • 42. Images pour WindowsPhone: SplashScreen Icones : tile, icone application Images communes : Sprites / Textures 2D Signalétiques (icônes du menu, etc.) 3D : tank, environnement (sol, arbres, etc.) Texture qui génère les reliefs du terrain Vue « carte » du terrain
  • 43. BackOffice : SoGame Le « back » se doit d’être aussi joli et à la hauteur que le « front »
  • 44. Présentation de SoGame Application WPF « Metro Style » qui gère : Inscriptio n des joueurs Récupération des scores et photos Synchronisati Envoi des Reconnais Top des on des photos des sance joueurs joueurs et joueurs parties faciale joueurs
  • 45. Prise de photo avec Kinect Lancement de la capture de flux vidéos dans le Kinect runtime : var runtime = Runtime.Kinects[0]; runtime.Initialize(RuntimeOptions.UseColor); //Camera vidéo runtime.VideoStream.Open(ImageStreamType.Video , 2, ImageResolution.Resolution640x480, ImageType.Color); runtime.VideoFrameReady += OnVideoFrameReady; private void OnVideoFrameReady(object s, ImageFrameReadyEventArgs e) { if (_takePicture) Déclenchement unique de la photo var screenshot = durant la partie… e.ImageFrame.ToBitmapSource(); } L’image est sauvegardée sur la machine En fin de la partie, envoi du score + photo via web service
  • 46. Reconnaissance faciale OPENCV : Comment ça marche ? bibliothèque Open Chargement Source de traitement haarcascades pour la d’image en temps réel détection de visage Initialiser le périphérique EmguCV : permet de capture d’utiliser la librairie DetectHaarCascade et OPENCV dans un EigenObjectRecognizer environnement .NET pour chaque image à analyser
  • 47. Comment faire avec Kinect ? Lancement de la capture de flux NOM Prénom vidéos évènement A chaque OnVideoFrameReady, on utilise la méthode DetectHaarCascade pour détecter des visages Parmi ces visages, on compare avec notre liste de visages enregistrés (BDD) avec la méthode EigenObjectRecognizer Si un visage est reconnu, on le retire de la liste pour continuer la comparaison sur les autres visages
  • 50. Conclusion Ecosystème Microsoft Visual Studio pour tout unir Faire des jeux c’est « facile » Le design c’est important ! Code source : http://sogames.codeplex.com Blog : blog.soat.fr
  • 51. Envie d’essayer ? Viens chercher le fun ! Stand So@t (n°39)
  • 52. Q&A Vous avez des Nous avons des questions ? réponses  Cyril Cathala – http://cyril.cathala.org - @CyrilCathala Nathanaël Marchand – http://blog.ou-bien.net - @NatMarchand Nathalie Pettier – http://blog.devndesign.fr - @NathaliePettier