ParisJS #31

Introduction

ParisJS 31, dans les locaux de Microsoft à Issy-les-Moulineaux. Cette série de présentations était particulièrement axée sur WebGL dans le navigateur.

WebGLAcademy

La première présentation présentait WebGLAcademy

Un site de cours en ligne pour apprendre WebGL. Fait par un formateur de WebGL qui s'est rendu compte qu'il est difficile d'apprendre les rudiments de 3D à ses élèves et qui a construit le site pour l'aider dans ses formations. Le code de chaque chapitre est éditable et tourne en live dans le browser, découpé en étapes qu'on peut avancer ou reculer.

De ses retours d'experience, la partie la plus dure pour s'y mettre est l'un des premiers exercices qui consiste à afficher un cube coloré qui tourne sur lui même. Après ça, la courbe d'apprentissage (shaders, etc) est beaucoup plus facile.

Babylon.js

La seconde présentation était de David Rousset (@davrous), qui avec son collègue David Catuhe (@deltakosh) ont développé Babylon.js, un framework de jeux 3D avec HTML5 et WebGL. Les deux david bossent pour Microsoft, mais leur framework est fait sur leur temps libre et aucunement affilié à Microsoft. Le code est dispo ici : https://github.com/BabylonJS/Babylon.js

Le framework est une couche d'abstraction au dessus de WebGL pour le rendre beaucoup plus facile d'accès aux néophytes, et orienté développement de jeu. Plein de choses sont déjà incluses dans le framework comme une camera libre, un moteur de collision, la gravité, le déplacement au clavier/souris/touch/accelerometre, des joysticks virtuels en surimpression pour se déplacer sur interface tactile. Le framework va intéragir directement avec le GPU. Ils ont même développé un plugin pour Blender pour exporter directement des modèles en JSON pour les importer dans Babylon.

La majorité des shaders de base sont déjà intégrés, mais il est possible d'en développer des customs. Un système de cache est inclu pour permettre d'optimiser l'affichage d'un même élement de multiple fois, ainsi que le “frustrum” (le fait de ne gérer que ce qui se trouve dans l'angle de vision du joueur et de discard ce qu'il ne peut pas voir, pour économiser des perfs). Ajouté à ça un loading incrémental des assets en fonction de leur distance avec la camera (mais pas de gestion de LOD encore), il est techniquement possible de créer des mondes ouverts à la GTA ou Skyrim.

Marche sur tous les navigateurs, et possibilité d'exporter son code pour le transformer en appli pour le Windows Store et tournera directement en natif sous windows 8. Fonctionne aussi avec une manette Xbox.

Ils ont même une version Occulus Rift dans les cartons, ainsi que des améliorations telles que la création d'un format binaire d'export, le drag'n'drop direct depuis Blender dans Visual Studio, l'intégration d'un moteur physique et pas mal d'autres choses trop techniques WebGL que je n'ai pas retenues.

Bref, c'était un beau projet, très impressionnant, vous pouvez checker les démos sur http://www.babylonjs.com/

ASM.js

Bon, alors là je suis désolé mais mon cerveau est passé en mode shutdown et j'ai pas tout suivi. Je vous invite donc à aller sur la FAQ du site officiel : http://asmjs.org/faq.html

En gros, ASM.js est un subset de javascript qui ne contient que les méthodes les plus bas niveau pour faire du JS hyper rapide, aussi rapide que du C. Il est possible d'écrire en ASM.js dans n'importe quel navigateur aujourd'hui, et pour peu qu'on se plie à la nouvelle syntaxe, notre JS sera de toutes façons executé plus rapidement. Mais si le browser inclue lui-même ASM.js, alors le code serait extremement plus rapide. Actuellement, seul Firefox incluerait ASM.

ASM est donc particulièrement adapté pour écrire du bas niveau qui va parler directement avec le GPU, lui aussi pour faire du WebGL. Les démos étaient impressionnantes, mais le niveau technique en 3D (et en C) était bien trop complexe pour moi.

Cozy Cloud

https://www.cozycloud.cc/

Présentation rapide de Cozy Cloud, un cloud personnel à déployer sur ses propres machines (laptop, mobile, tablette, boxes, etc). L'idée principale est de garder ses données personnelles chez soi, sur son propre cloud, mais de pouvoir néanmoins y accèder sur tous ses devices (potentiellement même en mode offline). Leur idée principale est que nos datas personnelles restent sur nos machines personnelles.

Tout ça tourne sur du linux, avec une couche de node.js en interne. Chacun peut développer ses propres apps sur le système, la principale utilité étant que toutes les apps peuvent avoir accès aux mêmes données (mails, todo list, contacts, films, etc). Actuellement seul node est dispo comme langage de dev, mais python et ruby vont bientot arriver.

Il faut quand même un bon matos pour faire tourner Cozy (ie. un raspberryPi est trop petit, un cubieboard est ok), et ils sont actuellement en discussion avec GDF pour s'intégrer dans leur future box domotique.

Conclusion

Paris.js c'est bon, mangez-en. En plus, il y avait des donuts.


Tags : #parisjs

Want to add something ? Feel free to get in touch on Twitter : @pixelastic