Attention à Fred

Roman Science Fiction

Bonus

Cette page se consacre aux temps actuels sur Terre. 

Sommaire


Jouer tout de suite

Jeux d'arcade en Javascript "Canvas" (années 80)

Venez dégommer quelques aliens sur ce petit Defender sans prétention quoique très jouable et peu goumand en CPU. La patine des machines de l'époque a fait l'objet d'un soin particulier. Sorti à l'origine sur console, il a été porté en js à des fins didactiques pour apprendre à coder un jeu d'arcade. Le code est commenté.


Defender javascript par Kevin Pickell, modifications par Lionel Herzog. 

 

Arrivé 10 années plus tard dans les arcades, Arkanoid est un casse-briques évolué au graphisme plus travaillé que les versions antérieures.

Arkanoid développé en Js en 2007


Un pinball (Flipper) Canvas très particulier écrit par Ms sans doute pour montrer, quelque chose... Quoi qu'il en soit, son design est unique et son code source est facile à afficher.

Flipper sur bloc


Arrivé quelques mois avant Defender, Asteroid est le premier de sa génération de jeux d'arcades sur processeur 8 bits. Mu par un processeur 6502 de Rockwell (comme Comodore 64, Oric, ...) et entièrement programmé en assembleur sur un écran vectoriel qui tient plus de l'oscilloscope que de la télévision, il incorpore le génie du début des années 80. Contrairement au Defender ci-dessus, cette version a été portée de l'assembleur 6502 vers Javascript ce qui présage une consommation MAXIMUM de CPU. Par contre, c'est bien le jeu original tel qu'il était dans sa console et non pas une reproduction.

Attention à la consommation CPU !

Asteroid original émulé en Javascript


Le site de son auteur regorge d'information sur l'émulation javascript qui est un vrai défi technique. Javascript est bien implémenté dans les navigateurs mais son interprétation du code à la volée et sa résolution tardive des types en font l'un des langages les plus lents actuellement. Lenteur qu'on peut contourner en optimisant le code pour exploiter son étroite imbrication dans le document, ses librairies d'affichage les plus affûtées du moment, tâches qu'un émulateur ne peut pas remplir correctement.


Jeux en Javascript "WebGL" plus performants

C'est justement à cause de la relative lenteur qu'on va essayer d'optimiser le langage en exploitant les librairies HTML 5. La plus importante pour animer un écran est WebGL.

Malgré les distances prises par les deux premiers éditeurs mondiaux avec le groupe Khronos qui en est à l'origine, WebGL apporte sur le navigateur les fonctions d'OpenGL ES , y compris sur mobile et tablettes. La nouvelle API qui hérite d'OpenGL ES s'apelle désormais  Vulkan et fédère des acteurs aussi importants qu'AMD et ARM. Les graphiques sont accélérés même en l'absence de GPU et le code Javascript n'a plus besoin de gérer l'affichage ce qui lui permet d'accéder au plein écran et de se concentrer sur l'heuristique pour aller beaucoup plus vite. 


Nombreux jeux utilisant WebGL sur WebDesignerTrends

Mah Jong 3D pleine fenêtre réalisé en Spiderbasic









Le coin des développeurs

Pure Basic

Des liens vers un petit analyseur de signal et un lecteur Midi au graphisme inspiré des séquenceurs arriveront bientôt ici. En attendant, voici le langage fétiche de l'auteur :


PureBasic de Fantaisie Software

Compilateur développé en France par Frédéric Laboureur. Extrèmement rapide, produisant des exécutables compacts qui fonctionnent sans setup. Son IDE se lance en une seconde, son débugger source est complet, il accepte l'assembleur dans le code en lui apportant les variables basic avec leur garbage collection. Irremplaçable pour les petits morceaux de soft ultra performants, temps réel, traitement de signal (exemple à venir).

Né sur Commodore Amiga (version Amiga disponible en open source sur le site), il a gardé l'esprit pionnier des GFA basic, STOS, ..., tout en trouvant sa place sur les machines actuelles 64 bits, Windows, Mac, Linux.

Sa communauté est très active, peuplée de grands professionnels répondant aux débutants comme à leurs pairs.

Plus qu'un langage, c'est une expérience de vie pour quiconque veut s'affranchir de la jungle mainstream et profiter d'innombrables ficelles introuvables ailleurs. 


Spider Basic

Du même éditeur, Spider Basic utilise la même syntaxe que Pure Basic pour produire des applications Web après conversion en Javascript. Spider Basic apporte la compatibilité Web à Pure Basic. Un développeur Purebasic pourra "recompiler" son application et fonctionner immédiatement sur tout device compatible web , téléphone, tablette, TV connectée ou machine exotique.

SpiderBasic de Fantaisie Software

L'objectif est que le travail de développement en Purebasic pourra fonctionner avec peu de modification sur presque toutes les machines en Javascript.

L'intéret de Spiderbasic ne s'arrête pas à bibliothèque de programmes déjà développés en Pure. Il constitue une formidable base de travail pour un développement Web avec IDE, débugger et tous les modules présents dans ces deux plateformes.


















Programmation WebGL

La célèbre plateforme de Hackatons CodinGame utilise WebGL pour afficher ses terrains de jeu mais ne propose de programmer que les IA qui sont mises en compétition pour trouver la meilleure.










Ingénierie à distance. Software science dans le cloud

C'est une tendance forte. Les logiciels qu'on utilise au quotidien migrent l'un après l'autre dans le navigateur web. On voit apparaitre des traitements de textes sophistiqués, des logiciels de dessin et  toutes sortes de bases de données, que leur visuel soit texte ou graphique, tout migre. Le web ressemble de moins en moins à une suite de pages, il se métamorphose en interface universelle. 

Les éditeurs y ont intérêt : Aucune boite à distribuer, moins de versions différentes, de mises à jour, le web fonctionne déjà partout, de la montre connectée au studio de cinéma en passant par les innombrables bureaux...
L'utilisateur aussi, on peut utiliser un logiciel en un seul clic, sans installer quoi que ce soit, partager son travail sans se préoccuper des supports physiques, des fichiers...

Il y a peu, on disait encore que c'était lent, lourd, ou peu adapté à telle discipline. La suite a prouvé le contraire dans bien des cas.


Quid des ingénieurs ?

Ils manipulent de grands volumes de données sensibles avec du logiciel ultra spécialisé dont la finesse d'analyse conditionne notre qualité de vie voire notre survie. Les écrans de logiciel d'ingénieur sont des synthèses sophistiquées , courbes dynamiques, modèles 3D réactifs à la souris où d'un clic, on affiche les propriétés elles mêmes synthétisées sous forme de graphique réactif et ainsi de suite... La tolérance aux erreurs d'appréciation est critique, la loi en précise quelques contours, les applications web couvrent désormais tous ces besoins et apportent des solutions issues de domaines connexes auxquelles personne n'avait pensé avant. Travail en équipe asynchrone, groupes coordonnés de contributeurs sans limite ni de taille ni géographique, solutions multi-éditeurs, simulations, intelligence artificielle, accès aux super-calculateurs, bases de données, jurisprudence... Chacun de ces points justifie à lui seul la migration du software dans le cloud.

Voici quelques pistes pour ceux qui s'intéressent au développement de ces solutions en maitrisant déjà les techniques de développement classiques.


Entrée sortie des données

Electron web

Electron est un navigateur web (basé sur
chromium) auquel a été ajoutée la logique
nécessaire pour rendre les applications
web locales. Ouvert et fondé sur node.js,
il est notoirement utilisé par

  • Visual Studio Code, éditeur
    de code open source de Microsoft
  • Slack, application de messagerie
    interne pour équipes
  • Nuclide, IDE ouvert pour le déve-
    loppement Web et mobile natif,
    basé sur Atom
  • La version bureau de WordPress
  • La version bureau de GitHub
  • (non-exhaustif...)

Site officiel

En français sur Wikipedia

Désormais, les programmes proviennent de plusieurs sources indépendantes. Un morceau de software vertical maintenu par une société très spécialisée va s'insérer dans une logique pré-existante (cf.  solutions de paiement en ligne). Un ingénieur spécialisé peut donc approfondir l'expertise qu'il propose sans devoir prendre en charge l'entièreté du secteur où il exerce. La logique du web doit  faire la jointure avec les applications existantes.

A l'aube du web, on disposait des formulaires pour faire intéragir les pages entre elles en passant par le serveur :

Dans ce cas simple et encore très utile, l'information (souvent du texte) est transmise sous forme d'argument en suffixe de l'url https://url?arguments, ou pour une meilleure sécurité, par la  méthode POST qui rend les données invisibles sur la ligne d'url et ne limite pas leur volume.

Lorsque un formulaire est validé en cliquant le bouton Submit, le serveur retourne une page html dynamique qui rend compte du bon déroulement des opérations.  Charge à la page appelante de définir où s'affichera l'information. HTML5 améliore cet affichage grâce aux balises DIV renseignées postérieurement au chargement de la page et à Javascript. C'est rustique, robuste, mal sécurisé (https obligatoire), mais conforme aux vieux standards du web 1.0, avant qu'AJAX ne rende les interfaces fluides. La souplesse d'HTML5 peut s'en accomoder modifiant uniquement un cadre de la fenêtre en cours... Coté serveur, les modules de code doivent renseigner une base de données qui assurera le réaffichage de la page en cas d'interruption de la connection, laquelle ne dépand pas des développeurs. L'intégrateur devra fournir un accès à la base d'affichage à tous les modules, soit en écriture directe soit, plus probablement, par l'intermédiaire d'objets N-tiers.


W.L.amp

Beaucoup plus simple qu'Electron et moins contraignant pour ceux qui ont déjà développé pour le web, WAMP propose d'installer simplement un serveur Apache sur la machine de l'utilisateur avec ses modules php et MySql .
L'application tourne alors sur le serveur et le
client partage la même machine.
Contrairement au navigateur qui n'a aucun droit sur le système, Php peut exécuter le logiciel installé sur la machine et retourner les résultats au navigateur.

La sécurité des transmissions est devenue un sujet majeur et les logiciels professionnels sont des cibles sensibles au point que le Pentagone a publié sur ces questions et que les militaires ont de plus en plus leur mot à dire sur le transport des données.  Outre les méthodes AJAX orientées IHM, HTML 5 propose d'ouvrir un socket vers le serveur en utilisant son propre protocole :  WebSocket.

Néanmoins, les communications dynamiques en javascript reposent largement sur AJAX et sa méthode httpRequest qui prend en charge les protocoles sont XML et JSON. Les transmissions synchrones par socket ip peuvent rendre les échanges plus fluides mais sont encore relativement récentes.  

Cet article de HTML5 Rocks sur les webSockets est un point de départ pour moderniser drastiquement la communication entre pages. Il mérite une place dans les favoris : Cette méthode ayant vocation à fluidifier les échanges, notamment lorsque on doit uploader de grands volumes, il faut se familiariser avec son fonctionnement avant de concevoir les applications qui doivent être (re)pensées pour les sockets.


Introducing WebSockets: Bringing Sockets to the Web

websocket.org



L'approche Spider Basic

Spider Basic propose d'écrire l'application
web comme son homologue classique sur
machine de bureau. Les exemples donnés
installent un desktop multifenêtre dans le
navigateur où les contrôles se comportent
un peu comme ceux de Purebasic.
On retrouve donc toutes les habitudes
acquises sur logiciels classiques avec une
étonnante fluidité d'affichage. 

Exemple du système électrique européen

Chaque application mettra alors en oeuvre sa logique d'affichage et son comportement singulier en utilisant librement des techniques issues de mondes complètement différents dont voici trois exemples aux objectifs identiques quoiqu'issus de méthodes d'affichage très éloignées : 











Monitoring de productions électriques nationales

Pléthore d'outils souvent gratuits


Maqetta screen
Maqetta
designer d'interface HTML5 open source écrit en HTML5. Ce projet a été abandonné mais reste fonctionnel.

Graphismes JS Canvas très réactifs quoique sensibles aux changements de taille d'écran :

Production électrique française en temps réel


Graphismes vectoriels au format SVG indépendants de la taille d'écran :

Production électrique allemande en temps réel


Rendu plus exotique mélant artistiquement des contrôles développés par un indépendant et d'anciennes techniques bitmap :

Production électrique anglaise en temps réel









Génie logiciel

Attention à Fred a été réalisé avec les logiciels suivants

  • Blender 3D
  • GIMP
  • Word
  • ManuelBastioniLab

Simulations 2D (scènes d'action en navette)

  • C#
  • Quelques modèles de collision empruntés à Magus qu'on peut rencontrer au détour d'une ligne de chat sur codingame. Merci à lui.. Les collisions 3D proviennent du Blender Game Engine qui n'existera plus dans la version 2.8 de Blender. Apparemment remplacé par un logiciel spécifique nommé Armory 3D, lequel devrait hériter les super-pouvoirs de BGE (c'est une image).

Je serai plus loquace sur ces logiciels prochainement.







Vue d'artiste d'un asteroide


Accueil




Lire le livre chez EDiLiVRe
©2018-10 - aafred.com
wbase.net