cr Conférence hybride Mobile Paris 15: Cordova, PhoneGap, Ionic2, Angular2, javascript...
Deux confs de prévues pour ce meetup :
-Florian de chez Bam qui présente comment faire du jeu vidéo avec du javascript
- Alex Muramoto de la team ionic nous fera à l’occasion de ngEurope une présentation des nouveautés ionic 2
Javascript et cross-platform video game
Le blog de Florian http://florianrival.com/
Les slides de Florian http://slides.com/florianrival/javascript-games
Jeux desktops, tablettes, navigateur, consoles…
On peut faire des Jeux videos 2D
Florian travaille à BAM avec Ionic1, 2, react-native et sur son temps libre edveoppe Gdevelop ry DEvap. A fait un kickstarter fin juin. Avait déjà une base de jeu. Periode de 30 jours kickstarter. C’est surtout du marketing car tout le monde est fan de cette boule de poils.
A demandé 100000 euros, ils ont eu 148 000 Euros.
1 seul repo. Moteur de jeu, cocos2D ou pixi.
1 developpeur, 1 designeur, plus 1 zicos qui fait l’audio.
@florianlival
Lil bub le chat super connu sur internet tire tout le temps la langue, 3 millions de vues.
On va s’interesser à la creation du jeu lil bub’s hello earth, qu’il crée avec le proprio du chat sur kickstarter
1 moteur de jeu, games engines
HTML5, créer un jeu dans un navigateur : CANVAS, et WEBGL
Moteurs
pixiesJS
Impact, mais pas open sources, et
Html5gameengine.com
Lilbub est fait avec pixi.js
Est-ce que je vais le porter sur mobile ? Oui avec Cordiva et la webview, UIWebview sur IOS, ou chrome ou navigateur par defaut sur android
Webkit/webview sur IOS, ou Corsswalk chrome sur Android.
Des fois des soucis de perfs, car navigateur.
Idée : app native et tout rendu avec une API canvas reeimplementee
Cocoon.js
est la réimplementation des canvas et webview. Pas opensource et pas de compilateur en ligne. On abandone
Mais il existe Ejecta ! Helas ne fonctionne que sur IOS.
Electron
Sur desktop, appli mac, linux, windows : electron = node + chromium version libre de chrome(v8) . C’est github, slack… Utilisé pour lilbub.
Hybrid game engines :
COCOS2D = native rendering + JS engine.
Moteur javascript de firefox.
Rendu natif, on n’utilise pas l’api de canvas, ca tourne partout
Electron = prendre chrome et le packager.
Une question? Posez-la ici
AAA game engines, unity, unreal engine
Lourd : Unity avec C# ou Unreal engine avec C++
Emscripten recupère les soures C++ et les compile pour les rendre fonctionnelles sur navigateur.
Sur quelle console développer son jeu en javascript/HTML5 ?
Sur la Wiiuu ?
WiUU c’est chrome/safari avec des api en javascript. Un jeu en javascript HTML5 peut tourner de base sue la WII, il faut jsute s’inscrire auprès de nintendo. 2000 dollars, branchement sur un PC
.
Une question? Posez-la ici
Sur la XboxOne ?
Sur la XBOXone, les apps cordova sont supportées avec l’UWP, mais pas testée.
Sur la PS4 ?
C’est mort, pas HTML5 compatible et il faut utiliser le SDK Sony qui coute un bras.
Et pour l’audio dans tout ça?
Pour HTML5, Howler.js c’est top
Openual
Javascript performance for games
Rendu, affichage, logique, physique, et utilisation de la mémoire.
Une question? Posez-la ici
ET le rendu dans tout ça?
Desktop, webgl, ca booste
Pour ioS, webgl, depuis ios8, ca va vite
Pour Android, webgl est dispo dans les webviews
Pour les consoles, la wiuu, c’est que du canvas, pas de support webgl
Sur la Xbox, c’est bof.
Performance brute de javascript ?
Compilation juste à temps ? Les optimiseurs dans les moteurs javascript, quand une fonction est appelée plusieurs fois avec les memes parametres, cette fonction va etre optimisée en code natif pour etre accélérée. Sur desktop, Chrome V8 le fait bien, firefox… Edge vient de l’implementer.
Sur IOS oui, webkit webview. Mais les moteurs de jeux sur IOS ne peuvent pas faire du JIT.
Que safari et WKWebview le font
Sur Android, oui, sur Chrome parfait. Le seul souci, c’est qu’Android avec 8 cœurs lents, comparé à un iphone 7. Impact des performances.
Voir lien the state of javascript on androir on 2015
L’importance du garbage collector
Avoir le plus de FPS possible. S’il n’y a plus de références sur cet objet en mémoire non utlisé, on le détruit.
Le souci c’est que le garbage collector prend du temps machine quand il arrive. On a un sentiment de lag, il faut eviter ca.
Avoid garbage. Exemple de suivi de souris : on crée plein d’objet, 60 fois par secondes, on cree 4 objets. On crer rapidement des miliers d’objets.
L’idée c’est de ne pas créer d’objets et de stocker par exemple des tableaux dans des propriétés de fonctions. C’est le but d’utiliser un tableau statique par exemple. On utilise les mêmes cases mémoires en gros.
On n’a plus de garbage.
On réutilise les tableaux déjà existants.
http://www/scirra.com how to write low garbage real time javascript
Une question? Posez-la ici
La technique des « pools d’objets »
Exemple, des tirs en rafale sur l’ennemi : il y a plein d’objets, car plein de munition.
Pareil, on met les objets dans un tableau, et on le remplit et on contrôle que le tableau se vide et se remplit en fonction du besoin. On fait des echanges entre des liste d’objets actifs/inactifs.
Voir
Tiny.cc/bub-game
Alex de San rose qui nous présente IONIC 2
Combien de personnes ont osé créer une app avec ionic2 ? Pas mal ! Bravo !
Le 6 decembre, à l’occase de dotJS, il y aura l’équipe Phonegap et qui présentera les nouveautés des plates formes phonegap et cordova.
Si des gens veulent partager de l’experience, des frameworks, etc. Ca nous interesse pour les meetups.
PUB : application « Namatata » développée par une agence, cherche un dev associé. Techno : IONIC hybride.
Colin, CO localize appli qui fait gagner de l’argent, sur IONIC, recherchent de nouveaux devs pour enrichir l’équipe.
Application
Bouzidi aziz, app intelligence, startup secteur porteur, et cherche un ou 2 developpeurs pour l’accompagner sur ce projet avec investissement
Max, dirige une agence et fait de l’ergo. Cherche Compétences dev et design.
CTO Kepler, B2T, cherche devs angular 1, cherche des seniors.
Une question? Posez-la ici
IONIC2 « Such better, such framework »
Alex Muramoto
Dev advocate @ ionic
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
@alexmuramoto
Github.com/amuramoto
IONIC what is ionic, mobile framework
Built with angularJS
Written n typescript
Open source, MIT, we can use it commercial or not
Built on Web/Brower standards
Ionikframework.com
Ionic2. Awesome
Angular2/Typescript
Ready for « progressive web apps »
Awesome comunity, 25k+ javascript & angular community
Top 50 projects
Official IDE : Visual Studio Code
200K+ installs NPM par mois
Github.com/driftyco/ionic
Companies popular :
Adobe, diesel, microsoft, cisco…
Ionic2 rc = release candidate
Installation :
Npm install –g ionic
Ionic start myApp –v2
UI components
Like ionic 1
Sliders, layouts menus, badges, ranges, grids, action sheets, datetime, menu…
Better framerate on animations than ionic1
All components suit guidelines of native devices : they look like native components !
Styling & theming : CSS + Sass, easy to override, variables based, 80+ mixins, 25+ utility attributes
« VSS3, Sass »
Cross platform styling, conoform with platforms starguides
STilll performance obsessed
Native scrolling
60 fps transitions et animations
Hardware accelerated animations
Optimized for touche vents
Lightining fast app and page loads
Angular2, really fantastic
Cmoponent baser
Simpler syntax
Dependency injection, makes life easier (scope…)
Une question? Posez-la ici
Designed from the ground for mobile
Typescript is a superset of javascript, ES6 support, type checking, improves tooling.
Write typescript, it compiles to javascript
It’ a microsoft project, but it’s really fantastic ! Life changer !
Improves tooling, better code, mass refactoring easier
Different of Angular2
Syntax is more familiar
Import classes from…
End of scopes
Easy components :
Ion-searchbar
Ion-range
Ion-datetime
Ion-tabs
Ion-grid
…
Grid layout
Une question? Posez-la ici
AOT compiling, ahead of time compiling
From run tome to build-time compilation
« Tree shaking » , transpilng at build time
Faster app launches, 8 times faster that Ionic1 !
Smaller bundles
Faster app launch
Faster Component loading
Wkwebview
Wkwebview Nitro = fork of webview but very performant !
Bit.ly/ionic/wkwebview
JIT machine code
Native scroling
Faster rendering
Faster compute
Latest device aPIS
Une question? Posez-la ici
Ionic Native
Access Native Device Apis
Wraps Cordova plugins
Written in Typescript
Adds Promises/Observables
Framewok Agnostic
Github.com/driftyco/ionic-native
Observables !
Plugins for Sms ; 3Dtouch, NFC, In-app purchase, Sim card, Geolocation, accelerometer, subscriptions, SQLite, push notifications, geofencing, device info Badge/toas..
Ionic cloud , ideal for notifications
Rappel : on ne pourra jamais construire une application IOS sur une machine Windows. Steve Jobs l’a interdit pour des siecles !
Free for developers !
10K Push noifications
5K app updates
100 Native builds
Unlimitd users…
Ionic.co/cloud
« Code once, run eveywhere »
One team. One codebase. Every platform.
The PWA, progressive web-apps
Ioic Apps are progressive web apps
Do you want a web app ? A hybrid app ? a native app ? ALL-IN-ONE
Pwa.ionic.io
Bit.ly/ionic-pwa-talk
Une question? Posez-la ici
Tutorial 15 minutes demo to build an app with Ionic2
Une application qui trouve les restaurants autour de nous. Geolocalisation. Avec recherche possible des restaurants avec criteres : les meilleurs vins…
Sublime text
- Www folder
Repertoire app, bootraped at boot time
Repertoire theme, avec variables.scss
Repertoire pages, repertoire hom, avec des css et des templates classiques
Home.scss
Page de garde : genre index : « Home.ts »
Import….
Import…
Une question? Posez-la ici
@Component, the selector, le nom de la page dans laquelle on injecte les données
Une classe avec un constructeur :
Export class Homepage
Constructor(…
Fonction request : la fonction qui fait le request
Let url
Let query
Search term
http request
test sur navigateur : localhost :8101
pages/home sont l’équivalent des templates
home.html
ngFor au lieu de ngRepeat
on rajoute les lignes avec le binding ion-row avec les {{restaurant.name}} etc. qui vont permettre l’injection de dependance dans le DOM
hop on rajoute les colonnes avec ion-col au lieu de ion-row
Hop un plugin cordova geolocalisation.
Hop une searchbar avec <ion-searchbar>
On bind la valeur au modele avec ngModel, avec la syntaxe : [(ngModel)]
Utilisation des ion-icon , soit la librairie open source cross platform !
Deploying on a device, ok. USB debugging
In IOS more complicated, code sign .IPA on xcode… And apple developper account
In IOS9, without apple developer account ! REVOLUTION ! Merci apple J
Ionic run ios –device
Une question? Posez-la ici
Des questions?