Logo SpacegooSPACEGOO a été créée en Novembre 2010. La société spécialisée en WebGL est basée à Palaiseau et l'équipe est composée de deux ingénieurs fraichement sortis de l'Ecole Polytechnique, Régis Portalez et Xavier Bourry et d'un expert comptable et commissaire aux comptes, Philippe Pascot.

 

Le vie d'une startup n'est pas un long fleuve tranquille

Leur idée initiale était de présenter des magazines ou des journaux en trois dimensions, chaque page étant affichée sur un mur, le tout muni d'un système de navigation ergonomique permettant d'avoir une bonne vue générale de l'ensemble et permettant de passer rapidement d'une page à l'autre. Le produit résultant, Spacegoo CMS, est sorti en Mai 2011. Une démonstration gratuite sur leur site internet vous permet d'afficher votre PDF en 3D.

Le développement de Spacegoo CMS a donné lieu à un dépôt de brevet, et a été effectué en partenariat financier avec le Centre Francilien de l'Innovation. Le caractère innovant du produit, ainsi que de l'activité de SPACEGOO en général, leur a permis d'obtenir le statut de Jeune Entreprise Innovante auprès de la Chambre de Commerce et de l'Industrie de l'Essonne.

Le taux de compatibilité du webgl étant encore modeste (de l'ordre de 40% en septembre 2011), et l'industrie de la presse étant en pleine crise et ne jurant que tablettes et smartphones, le produit n'a pas eu le succès escompté. Confiants dans l'avenir de cette technologie, ils ont décidé de poursuivre leur activité dans le webgl, mais via des produits ayant déjà un marché existant, à savoir la programmation d'applications et de jeux.

A cet effet ils ont développé un framework leur permettant de réaliser des applications complexes en webgl. Cette API étant très récente et ne présentant que des fonctions à bas niveau, il est nécessaire de développer ses propres outils en interne pour disposer de toutes les fonctions dont ils ont besoin dans le développement d'applications 3D (picking, gestion des collisions, éclairage, export des maillages de Blender, animation des maillages, …). Leur méthode de travail est la suivante : pour chaque nouvelle fonctionnalité à rajouter au framework, ils réalisent une démo, à savoir une petite application qui correspond à une application simple de cette fonctionnalité. Ils la placent ensuite en ligne de manière à avoir des retours et à générer du trafic.

Quelques unes de leurs démos :

Cadillac
Cadillac Ranch, version virtuelle de l'oeuvre d'art
Maze
SPACEGOO Maze, jeu de labyrinthe
Machine à sous
Machine à sous

Actuellement ils travaillent sur la réalisation d'un poker en 3D en webgl, qui viendrait avantageusement remplacer les pokers en 2D en Flash, sans nécessiter l'installation d'application extérieure. Ils recherchent un partenariat avec un acteur déjà présent sur le marché des jeux de hasard en ligne pour intensifier son développement et intégrer un graphiste et un développeur web dans leur équipe.

Pour Xavier Bourry, Webgl est un standard qui s'impose peu à peu

La viabilité de SPACEGOO repose sur une technologie, le webgl. Elle consiste en la possibilité d'utiliser des fonctions d'openGL ES2.0 avec le javascript. OpenGL ES2.0 est une API 3D destinée en premier lieu aux systèmes embarqués, et s'adaptant parfaitement à un usage de type web. Les lignes qui suivent vous dévoilent leurs conclusions quant à l'avenir de cette technologie.

Une technologie libre

L'histoire récente d'Internet nous enseigne que dès qu'il y a eu concurrence entre une technologie et non libre sur Internet, c'est toujours la technologie libre qui s'est imposée (PHP vs ASP, IIS vs Apache, …). Tout nous mène à penser que le WebGL va triompher de ses concurrents non libres, à savoir Flash molehill, Silverlight5 et Unity3D, surtout que ce dernier présente de sérieux atouts technologiques.

Sans plugin

Webgl fonctionne sans plugin. S'il apparaît actuellement normal d'installer le plugin flash pour visualiser la majeure partie des contenus multimédias, c'est peu ergonomique, sans compter les problèmes pouvant survenir pour les internautes n'utilisant pas Windows. Unity3D nécessite un plugin mais il n'apparaît pas comme un concurrent direct du webgl : Unity3D continuera de s'adresser aux joueurs réguliers alors que le Webgl occupera un champ d'application beaucoup plus vaste. De plus, le prix du kit de développement d'Unity3D ne permet pas une démocratisation suffisante de cette technologie.

Microsoft seul contre tous

Microsoft est le seul grand industriel de l'informatique ne faisant pas partie du Khronos Group, consortium industriel ayant spécifié le webgl. Apple, Google, AMD, Intel, Nvidia, ATI et même Adobe en font notamment partie. Naturellement il ne l'a pas implémenté dans Internet Explorer, prétextant des problèmes de sécurité.

Ces derniers ont été rapidement corrigés et concernaient principalement d'une part des disfonctionnements dans le nettoyage des buffers graphiques, permettant de récupérer des parties d'une capture d'écran d'un internaute, et d'autre part le chargement de textures provenant de domaines différents, ce qui permettait le vol d'images personnelles (sous réserve d'en connaître l'URL). Contrairement à une rumeur répandue, webgl ne compile pas directement les shaders pour les envoyer à la carte graphique, mais procède à de nombreuses vérifications de sécurité au niveau du navigateur avant.

Microsoft soutient une technologie concurrente d'openGL, directX, et a créé sa propre API 3D utilisant DirectX et intégrée dans Silverlight 5. Silverlight est installé par défaut sur Internet Explorer, mais nécessite un plugin pour les autres navigateurs. Pour les Linuxiens, un plugin de substitution existe, Moonlight, mais son fonctionnement est plus qu'aléatoire. A l'heure actuelle, les développeurs d'Internet Explorer ne semblent pas avoir inscrit l'intégration du webgl dans leur planning. Cependant, un plugin existe pour pallier ce manque, IEWebgl.

Une portabilitée amenée à être totale

Tous les navigateurs sont amenés à supporter webgl sans plugin, excepté Internet Explorer (Chrome 7 ou +, Firefox 4 ou +, Opera 12 ou +, Safari 5.1 ou +), et ce sur toutes les plateformes : Windows, Mac OSX, Linux. De même, les tablettes et smartphones, utilisant majoritairement Android ou iOS, sont amenées à être compatibles. ils ont testé leurs démos sur des ordinateurs portables récents, d'entrée de gamme, sans carte graphique dédiée, et le rendu est fluide. Le webgl est une technologie d'avenir, qui fonctionne au présent, et dans deux ans avoir un ordinateur non compatible webgl sera aussi pénible que de ne pas pouvoir visonner les contenus flash actuellement. Quant à Microsoft, au vu de la chute vertigineuse du taux d'utilisation d'Internet Explorer malgré la sortie récente d'IE9, tout laisse penser qu'ils reverront leur stratégie d'ici peu.

Personne n'est parfait

Si le webgl est génial et peut donner une nouvelle dimension à la navigation web, il y aurait toutefois certaines fonctionnalités pratiques à rajouter.

Le point qui manque le plus au WebGL est un mode fullscreen avec mouse-lock, c'est à dire un affichage en plein écran avec le curseur non bloqué par les bords de l'écran. Cela permettrait des expériences immersives plus poussées utiles aux jeux vidéos ou aux visites virtuelles. Le mouse-lock est même indispensable pour les jeux FPS (First Person Shooter). La Mozilla Fundation et Google réfléchissent activement sur le sujet, et tout nous porte à croire que cette amélioration sera prise en compte dans les futures versions de Firefox et Chrome.

Une autre fonctionnalité manquante au WebGL est la présence du buffer de sélection, qui permet d'associer à chaque pixel l'objet affiché. Ce buffer est très utile pour le picking (retrouver l'objet sur lequel on clique). Des méthodes palliatives utilisant le lancer de rayon ou le canal alpha existent, mais sont plus complexes.

 

Un développement sous contraintes pour la société

Le développement d'applications webgl relève à la fois du développement web et de la programmation 3D. Il faut alors s'adapter aux contraintes de ces deux milieux.

Composer avec le javascript

Le javascript semble en premier abord peu adapté au développement d'applications de taille importante. Il n'intègre pas les notions d'héritages, et pousse à la multiplication des variables globales. D'autres détails nous font dire qu'il n'est qu'à moitié orienté objet, et qu'il n'a du java que le préfixe...

Il faut alors porter une attention particulière à la clarté du code, et utiliser le PHP pour aider le découpage du code. Le fait que les variables ne soient pas typées n'aide pas non plus à la lisibilité et au débuggage. Ceci dit, adoptant les bonnes méthodes de travail, il est possible de développer un projet de taille importante tout en maintenant un code clair, lisible et mobile comme on pourrait le faire avec un langage compilé orienté objet.

Un autre problème vient du fait qu'étant un langage non compilé, le javascript prend de la place, et dévoile le code. Celà peut-être génant pour certain jeux, parce que celà permet de tricher facilement. Un controle des parties côté serveur peut s'imposer, et une compression avec des packers tels Google Closure Compiler suivi d'une substitution de variables réduit la taille du code et le risque de triche.

Développer léger

Un jeu vidéo 3D ordinaire pèse plusieurs centaines de mégaoctets, et il est impensable de télécharger de tels volumes via une connection internet au chargement du jeu. Il faut penser au volume du jeu dès sa conception, et changer certain algorithmes. Par exemple dans un jeu vidéo 3D classiques, la plupart des mouvements de personnages sont effectués par keyframe, c'est à dire que l'on charge un maillage par position, et entre deux positions on fait une interpolation entre les deux maillages. Lorsque le maillage n'est pas grossier et que le personnage peut effectuer beaucoup d'actions différentes, tel un joueur de poker, c'est impensable de charger tous les maillages pour une application webgl.

Pour l'animation des personnages, ils ont utilisé un algorithme d'animation par squelette. Ilschargent une fois le maillage, et une armature. Chaque point du maillage est relié à un os de l'armature. Chaque position est alors représentée par une liste d'angles et de pivots pour chaque os de l'armature, ce qui est beaucoup plus léger que de recharger un nouveau maillage complet.

 

Verdict

Nous ne pouvons que saluer l'initiative de ces jeunes ingénieurs qui s'investissent dans une technologie d'avenir. Leurs démos WebGL sont convaincantes même s'il elles pourraient parfois gagner en ergonomie et jouabilité. Il est évident qu'un marché énorme va s'ouvrir à moyen terme, et ce malgré la résistance de Microsoft à WebGL. Les premiers arrivés seront les premiers servis, et Spacegoo a toutes les chances de devenir l'un des leaders de ce marché s'ils continuent à perfectionner leurs savoirs faire et leurs technologies. N'hésitez pas à consulter leur blog pour suivre l'évolution de cette jeune pousse.