21-04-2012, 01:40 PM
J'ai vu la version Alpha de ton jeu, et j'ai été très surpris par l'utilisation de WebGL que vous en faisiez.
C'est à dire que ton rendu de carte hexagonale, avec possibilité de se déplacer en maintenant la souris ect. c'est exactement le genre de choses facilement faisable avec les canvas 2D. De plus, ça t'aurais assuré une compatibilité avec Chrome, Opera, Firefox, Safari et IE9. Je ne compte pas non plus les mobiles et tablettes compatibles. Donc absolument tout le "marché" mobiles, tablettes et PC, sauf les utilisateurs d'IE8 (IE 6&7 étant maintenant une niche).
Certes WebGL t'assures une accélération matérielle conséquente, bien plus importante que celle des canvas 2D (qui t'auraient obligé à des efforts d'optimisation). Même si on reste bien loin des capacités d'OpenGL
Une solution pour toi serait de faire comme pour Emberwind d'Opera, proposer un "switch" entre canvas 2D et WebGL. Malheureusement je n'ai pas trouvé de librairies pour (faire le chemin inverse sans devoir tout reprogrammer m’intéresserait ^^). Le code source est dispo sur GitHub cependant.
A la place de ça, tu te retrouves avec un jeu uniquement compatible pour les PC, utilisateurs de Chrome, et ceux qui ont mis à jour leur Firefox.
Personnellement je perçois 3 cas distincts d'utilisation de canvas :
- Rendu en 2D ou 3D isométrique : API des canvas 2D, mais il faudra faire de gros efforts d'optimisation pour les gros jeux, pour que ça passe sur mobile, IE9 et Opera, sans oublier les PC les moins puissants. Pour les dernières versions de Chrome et FF c'est de moins en moins vrai, l'accélération matérielle a été décuplée depuis 1 an.
- Rendu en 3D avec canvas 2D et le Raycasting : J'ai essayé de reprendre l'exemple le plus célèbre, c'est à dire la bribe de FPS de Ben Joffe. J'ai retravaillé le code pour le rendre propre (du Javascript de 2005 quand même), le rendre objet. Puis j'avais travaillé pour le rendre en plein écran.
Mais voilà, lors du refresh de la boucle, il y a un nombre de calculs très importants et ça rame.
Ce qui obligerait à utiliser les Web Workers, mais on se réduit à nouveau à FF et Chrome... Donc autant utiliser WebGL pour faire de la 3D. Le raycasting a de l'avenir juste dans les démos techniques
- Rendu en 3D avec WebGL : Bon a des démos techniques impressionnantes quand même. Mais ça reste des démos. Les jeux multi-joueurs 3D que j'ai vu en WebGL étaient moche graphiquement et ramaient en plus. Donc j'attends encore de voir un vrai projet utilisant cette technologie (bon je suis mauvaise langue, j'ai vu un début de jeu rallye qui m'a réellement scotché par exemple). Mais il y a énormément plus de choses à gérer que pour un canvas 2D ça c'est sûr.
J'espère t'avoir éclairé sur l'offre disponible, bon courage
C'est à dire que ton rendu de carte hexagonale, avec possibilité de se déplacer en maintenant la souris ect. c'est exactement le genre de choses facilement faisable avec les canvas 2D. De plus, ça t'aurais assuré une compatibilité avec Chrome, Opera, Firefox, Safari et IE9. Je ne compte pas non plus les mobiles et tablettes compatibles. Donc absolument tout le "marché" mobiles, tablettes et PC, sauf les utilisateurs d'IE8 (IE 6&7 étant maintenant une niche).
Certes WebGL t'assures une accélération matérielle conséquente, bien plus importante que celle des canvas 2D (qui t'auraient obligé à des efforts d'optimisation). Même si on reste bien loin des capacités d'OpenGL
Une solution pour toi serait de faire comme pour Emberwind d'Opera, proposer un "switch" entre canvas 2D et WebGL. Malheureusement je n'ai pas trouvé de librairies pour (faire le chemin inverse sans devoir tout reprogrammer m’intéresserait ^^). Le code source est dispo sur GitHub cependant.
A la place de ça, tu te retrouves avec un jeu uniquement compatible pour les PC, utilisateurs de Chrome, et ceux qui ont mis à jour leur Firefox.
Personnellement je perçois 3 cas distincts d'utilisation de canvas :
- Rendu en 2D ou 3D isométrique : API des canvas 2D, mais il faudra faire de gros efforts d'optimisation pour les gros jeux, pour que ça passe sur mobile, IE9 et Opera, sans oublier les PC les moins puissants. Pour les dernières versions de Chrome et FF c'est de moins en moins vrai, l'accélération matérielle a été décuplée depuis 1 an.
- Rendu en 3D avec canvas 2D et le Raycasting : J'ai essayé de reprendre l'exemple le plus célèbre, c'est à dire la bribe de FPS de Ben Joffe. J'ai retravaillé le code pour le rendre propre (du Javascript de 2005 quand même), le rendre objet. Puis j'avais travaillé pour le rendre en plein écran.
Mais voilà, lors du refresh de la boucle, il y a un nombre de calculs très importants et ça rame.
Ce qui obligerait à utiliser les Web Workers, mais on se réduit à nouveau à FF et Chrome... Donc autant utiliser WebGL pour faire de la 3D. Le raycasting a de l'avenir juste dans les démos techniques
- Rendu en 3D avec WebGL : Bon a des démos techniques impressionnantes quand même. Mais ça reste des démos. Les jeux multi-joueurs 3D que j'ai vu en WebGL étaient moche graphiquement et ramaient en plus. Donc j'attends encore de voir un vrai projet utilisant cette technologie (bon je suis mauvaise langue, j'ai vu un début de jeu rallye qui m'a réellement scotché par exemple). Mais il y a énormément plus de choses à gérer que pour un canvas 2D ça c'est sûr.
J'espère t'avoir éclairé sur l'offre disponible, bon courage