Développement d'un jeu de plateforme en html5

18

description

Session sur le développement d'un jeu de plateforme en HTML5 / Canvas jouée pendant les Microsoft Days 2011. On y voit : - les différents frameworks de jeux JS du marché ainsi qu'une comparaison de performance entre SVG et Canvas - La manière d'animer des sprites - La manière d'ajouter de la logique pour les tests de collisions - Le jeu HTML5 Platformer complet - Des idées pour aller plus loin: webworkers, requestAnimationFrame, Box2D, etc.

Transcript of Développement d'un jeu de plateforme en html5

Page 1: Développement d'un jeu de plateforme en html5
Page 2: Développement d'un jeu de plateforme en html5

2

Développement d'un jeu de plateforme en HTML5

David Rousset / Microsoft France / @davroushttp://blogs.msdn.com/davrous

Page 3: Développement d'un jeu de plateforme en html5

3

Au menu

Analyse des technologies HTML5 et frameworks JS disponiblesAnimation des spritesConstruction des objets principauxDétails sur le jeu complet

Moteur physique, logique du jeu, chargement des niveaux

Des idées pour aller plus loin

Page 4: Développement d'un jeu de plateforme en html5

4

DémoObjectif : porter le jeu XNA qui va suivre

Page 5: Développement d'un jeu de plateforme en html5

5

Niveau 1: analyse de l’existant

Il existe 2 manières de dessiner en HTML5:

<canvas> : à voir comme une zone bitmap dynamique dans laquelle on dessine à l’aide de primitives en JavaScriptSVG : affichage de formes vectorielles décrites par XML

Il existe de nombreux frameworks JavaScript pour le jeu:

impactJS, craftyJS, melonJS, EaselJS, etc.

Page 6: Développement d'un jeu de plateforme en html5

6

Niveau 1: <canvas> préférable

Page 7: Développement d'un jeu de plateforme en html5

7

DémoAnalyse rapide des performances d’animation entre SVG et canvas

Page 8: Développement d'un jeu de plateforme en html5

8

Niveau 1: EaselJS pour le framework

Questions à se poser :Qualité / retour d’expériences ?Fréquence de mise à jour, suivi des bugs ouverts ?Compatibilité multi-navigateurs ?Connaissances actuelles ?

Mes réponses pour EaselJS:Déjà utilisé pour PiratesLoveDaisies et TankerBon suivi des bugs sur GithubTesté et approuvé sur les 5 navigateursMes connaissances/assets XNA facilement portables

Page 9: Développement d'un jeu de plateforme en html5

9

DémoQuelques frameworks de jeu en action

Page 10: Développement d'un jeu de plateforme en html5

10

Niveau 2: Animation des sprites

Nous allons maintenant voir comment partir de ce genre de sprites :

Et réussir à leur donner vie !

Page 11: Développement d'un jeu de plateforme en html5

11

DémoAnimation des sprites

Page 12: Développement d'un jeu de plateforme en html5

12

Niveau 3: Objets principaux & collisions

Créations des objets associés aux personnages dont le héro :

Gestionnaire de téléchargement de ressources

Collisions simples

Page 13: Développement d'un jeu de plateforme en html5

13

DémoCréation des objets principaux et de leurs collisions

Page 14: Développement d'un jeu de plateforme en html5

14

Niveau 4: revue des quelques détails du jeu complet

Gestionnaire de téléchargements completCollisions plus précisesChargement du niveauMoteur physique simplisteAstuces pour gérer le sonKudos pour IE9

Page 15: Développement d'un jeu de plateforme en html5

15

DémoParcourrons ensemble le code du jeu

Page 16: Développement d'un jeu de plateforme en html5

16

Niveau 5: pour aller plus loin

Meilleure gestion des performanceMonothreading vs WebWorkersrequestAnimationFrameAdaptation FPS / performance

Librairies plus avancéesBox2D

Gestion des devices mobilesTouchScaling résolutionAccéléromètre

Gestion réseaux sociaux

Page 17: Développement d'un jeu de plateforme en html5

17

Ressources

Série de 3 tutoriaux sur le portage du jeu :Jeux HTML5: animation de sprites dans l’élément Canvas grâce à EaselJSJeux HTML5: construction des objets principaux & gestion des collisions avec EaselJSHTML5 Platformer: portage complet du jeu XNA vers <canvas> grâce à EaselJS

Sur mon blog: http://blogs.msdn.com/davrous

Page 18: Développement d'un jeu de plateforme en html5