2 Interopérabilité entre Microsoft SharePoint Server 2010 et Lotus Notes sur une base Oracle 9i (BOF901) Jeudi 10 Février 2011 V. Billotte / G. Belmas / J. Frelat MVP GraphicStream/ vNext / Assima
3 Silverlight : développer un jeu vidéo pour Azure, le Web ou Windows Phone 7 (JEU201) Jeudi 10 Février 2011 V. Billotte / G. Belmas / J. Frelat MVP ViaBlue / vNext / Assima
4 kikonhè Valentin Billotte – Viablue – GraphicStream MVP XNA Guillaume Belmas – vNext MVP Windows Azure Julien Frelat – Assima – InnoveWare Solutions MVP Client App Dev (2009)
5 Sommaire Le challenge Pourquoi Silverlight ? Développement de jeux en Silverlight Présentation du jeu De la 3D ! Affichage bitmap Goto jeu Windows Azure Come on! Windows Phone 7 #Fails Futur
6 Le challenge TechDays 2010 Jeu en Silverlight en 30 minutes (1942) Jeu en Silverlight en 2 minutes (Flash) Portage XNA sur Windows, XBox360 et Zune HD TechDays 2011 Jeu multijoueur en Silverlight sur Azure, le Web et Windows Phone 7
7 Pourquoi Silverlight ? Retour sur le débat entre HTML5 et Silverlight Comparaison entre XNA et Silverlight
8 XNA 3D Game loop Sprites pool Performances Formats XBox360 Silverlight Vecteurs Contrôles Animations Interfaces XAML Web
9 Développement de jeux en Silverlight Pour les créatifs Moteurs 2D, 3D, physique, bitmap farseerphysics.codeplex.com, webdemos.sourceforge.net/SilverlightFlixel, Silverlight FlashPunk Rémunération Windows MarketPlace, Pour les moins créatifs ou les récents convertis Ecriture d’émulateurs Portage depuis XNA, Flash, C/C++, etc. silversprite.codeplex.com, rockethub.com/projects, TonicVM
10 Démo TonicVM à la rescousse !
11 Développement de jeux en Silverlight Pour les créatifs Moteurs 2D, 3D, physique, bitmap farseerphysics.codeplex.com, webdemos.sourceforge.net/SilverlightFlixel, Silverlight FlashPunk Rémunération Windows MarketPlace, Pour les moins créatifs ou les récents convertis Ecriture d’émulateurs Portage depuis XNA, Flash, C/C++, etc. silversprite.codeplex.com, rockethub.com/projects, TonicVM Utilisation d’Azure Jeu en ligne massivement multijoueur Stockage en ligne (sauvegardes, scores, etc.)
12 Présentation du jeu Principe Problématiques Conception d’un moteur 3D Affichage bitmap performant (monde, webcams) Gestion du réseau Gestion des contrôles sur Windows Phone 7
13 De la 3D ! Technique du raycasting Affichage d’une scène 3D sur un écran 2D Calculs limités et simples Premières heures de la 3D sur PC Wolfenstein-3D, Doom (1990)
Principes du raycasting 1/4 Monde 2D (array X, Y) int worldMap[mapWidth][mapHeight]= { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,2,2,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,3,0,0,0,3,0,0,0,1}, {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,0,0,0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} };
15 Principes du raycasting 2/4 Une architecture simplifiée Les murs font toujours un angle de 90° avec le sol Les murs sont des cubes de taille identique Les sols sont toujours plats
16 Principes du raycasting 3/4 La projection FOV de 60° Hauteur de 32
17 Principes du raycasting 4/4 Pour chaque pixel horizontal du plan projeté On trace un rayon de la position du joueur vers le premier mur en collision et on stocke la distance obtenue Plus la distance jusqu’au mur est importante, plus le mur est petit
18 Affichage bitmap Layout Manager de Silverlight Pas adapté Pas assez performant WriteableBitmap est ton ami Array 2D de pixels
19 Démo En rouge...
20 Goto jeu Quid de la webcam ?
Capture vidéo en Silverlight
22 Goto jeu Quid de la webcam ? Quid des murs texturés ? Quid des sprites ? Quid de la personnalisation des sprites ? Quid des déplacements ? Quid du quid ? NITNELAV
23 Windows Azure à la rescousse Windows Azure is good for you ! Le cloud au service du jeu : Haute dispo à 99,95% (satisfait ou remboursé) Scalable à volonté (up & down) Ex : des dizaines de serveurs en 3 clics (et dispo en 15/30 mn) Technologies :.NET mais aussi Java, PHP, Ruby… Paiement à la consommation
24 Datacenter vs Cloud Privé Public Machine virtuelle sur Software as a Service (SaaS) Platform as a Service (PaaS) Infrastructure as a Service (IaaS)
25 Supah Techdays Arena in Da Cloud Supporter le multijoueur et plusieurs parties en simultané Solution #1 : Cache In-Process C’est cool mais c’est pas scalable Solution #2 : AppFabric Cache Service C’est cool mais c’est en CTP et localisé aux US (trop lent) Solution #3 : Les Azure Tables Stockage d’entités de type « clé/valeur » Ca tombe bien, chaque player possède un ID
26 Démo Come on!
27 Windows Phone 7 WriteableBitmap lent Utilisation de Xna Démo !
28 #Fails Nous avons quand même connu la traversée du désert : Lenteurs d’Azure (Dublin c’est loin) Latence HTTP Cache Distribué en CTP Disconnect Sprites inversés PC de Julien Pas d’intéractions entre les joueurs
29 Futur Silverlight 5 API 3D avec accélération GPU XNA ou Silverlight ? Performances accrues (IE9) Windows Phone ? Version actuelle mixte entre Silverlight 3 et 4 Restrictions au niveau sonore Windows Azure Produit actif (une nouvelle version tous les 3 mois) Explosion du cloud et du Social Gaming Ex : Les amis de Kobojo et leurs 3,5 millions de joueurs mensuel (Goobox, PyramidVille…)
30 MSDN et TechNet : l’essentiel des ressources techniques à portée de clic Portail administration et infrastructure pour informaticiens Portail de ressources technique pour développeurs