Je ne veux pas faire de publicité parce que ce sont des Français, mais c’est la première fois depuis des années que je vois un moteur de recherche que je trouve plus agréable que google.
Une personne a développé en JavaScript un émulateur complet de la Super NES : JSNES.
Cliquez ici pour le voir : http://fir.sh/projects/jsnes/
Si vous regardez le code source, c’est impressionnant : il a vraiment retranscrit les registres, et le code assembleur de la SNES.
Voici un extrait que j’ai trouvé assez épatant :
Voici quelques liens vers des erreurs 404 que j’ai trouvé très originales.
Si vous en avez d’autres, n’hésitez pas à les ajouter dans les commentaires !
Mon petit nez me disait que du côté du scripting ils avaient fait quelque chose de fort.
Je me suis trompé : ça n’est pas fort, c’est exceptionnellement fort.
En fait leur moteur de scripting, tenez vous bien, intègre un compilateur qui génère du code machine : oui, vous avez bien lu, le code est compilé à la volée !
C’est ce qui se produit déjà dans Trackmania 2 et mon petit nez me disait qu’ils avaient fait un boulot énorme, au vu de la rapidité avec laquelle mon script de labyrinthes était compilé puis exécuté.
Vivement que je puisse mettre la main dessus pour faire les maps MOBA de labyrinthes 🙂
Je vous fais part du message du directeur de steam, à vous d’en penser ce que vous voulez :
10 février 2012
Chers utilisateurs Steam et des forums Steam :
Des investigations sont en cours avec l’aide d’experts en sécurité informatique depuis l’intrusion dont nous avons été victime l’année dernière. Dans ma dernière communication à ce sujet, je décrivais comment les intrus avaient pu accéder à notre base de données Steam sans avoir trouvé d’évidence sur une captation d’information à partir de cette base de données.
Récemment, nous avons appris qu’il est probable que les intrus aient obtenu une copie du fichier de sauvegarde contenant les transactions effectuées sur Steam entre 2004 et 2008. Ce fichier de sauvegarde contenait les noms d’utilisateurs, les adresses email, les adresses encryptées de facturation et les informations encryptées des cartes bancaires. Ce fichier ne contenait pas les mots de passe Steam.
Nous n’avons aucune évidence nous permettant de penser que les informations bancaires encryptées ou que les adresses de facturation (également encryptées) aient été compromises. Cependant, comme je vous en informais en novembre, il convient de surveiller l’activité de vos cartes bancaires et/ou de crédit. Il est également une bonne idée d’activer Steam Guard sur votre compte Steam.
L’enquête poursuit son cours et nous travaillons avec les autorités compétentes. Certains états nécessitent un mode de communication plus formel et vous recevrez l’information en conséquence mais je souhaitais vous tenir informé de l’évolution de la situation.
Puis je l’ai ré-écrit. En Delphi (Pascal Orienté Objet, plus facile que tous ses concurrents (C++, Java, etc)).
Il générait des scripts « JavaScript » pour Photoshop. J’ai ainsi pu générer des labyrinthes immenses avec du Scripting Photoshop, mais j’ai rapidement vu les limites de ce dernier.
Alors je l’ai ré-écrit. En mieux, et beaucoup, beaucoup, beaucoup plus évolué. Plusieurs étapes de génération. Générateur de labyrinthes en C sous Linux, tout en ligne de commandes. J’ai donc dû apprendre vim, et je ne regrette rien, bien au contraire !
A partir de là, j’ai pu générer beaucoup de types de script :
J’ai commencé à générer des scripts Autohotkey pour Trackmania 1 : ici et ici.
Puis généré un petit jeu de mémoire, que vous pouvez voir ici.
Puis est sorti Trackmania 2. J’ai donc modifié mon générateur pour faire des scripts complets Trackmania : ici
Et comme pas mal de personnes ont trouvé ça sympa, voire certains ont carrément essayé de les terminer (plus de deux heures de route pour l’un), une personne a fait un petit article sur moi ici.
Voici la vidéo qui est originale, et vous pourrez voir évoluer mon script :
Voici, pour ceux qui ne le connaissent pas, un langage très récent (2011), fonctionnel, et lisible, mais entièrement nouveau, j’ai nommé (roulement de tambours) : « Funciton »
Voici un exemple de programme qui fonctionne, essayez de deviner ce qu’il fait :
(Note : ce n’est pas un dessin, c’est bien du texte, vous pouvez le sélectionner et le copier coller, ça fonctionne, essayez !) :
Vous avez peut-être vu que j’avais écrit un générateur de labyrinthes en C, qui créait en bout de course un fichier Autohotkey (là aussi je vous laisse vous renseigner). Ce fichier Autohotkey lançait Trackmania United Forever et automatisait la pose de blocs, et au final il y avait une course dans… un labyrinthe de blocs de course. J’avais donc modifié Trackmania afin d’en faire un outil pour jouer dans des labyrinthes !
Trackmania 2 est sorti, en version bêta, avec achat pour 0.01 € de moins.
Comme c’était une offre extraordinaire, j’ai sauté sur l’occasion.
Et dans Trackmania 2, ils ont fait très fort (même si ça n’est pas encore 100 % terminé, c’est déjà très abouti) : dans leur éditeur de maps, ils ont fait un langage de programmation qui leur est propre, une sorte de fils caché entre le JavaScript et XML, avec quelques attouchements de C et de « principes objet ».
Je trouve que ça n’est pas très lisible, et encore moins maintenable, mais bon, c’est pour un jeu, alors il faut pas en demander trop, surtout quand on voit qu’on n’est pas que joueur, mais qu’on peut être acteur !
Ce pseudo-langage de programmation s’appelle «ManiaScript».
Je me suis dit : je vais refaire mon générateur de labyrinthes, mais pour «ManiaScript».
J’ai donc commencé à préparer le terrain en «ManiaScript» : j’ai préparé des routines de poses de blocs, des routines pour poser les montées, etc. J’en ai profité pour faire une petite copie d’écran que je vous livre avec plaisir (cliquez dessus pour agrandir) :
Puis j’en ai profité pour me repencher sur mon ancien générateur, et je me suis dit : je vais le reprendre, afin de lui faire générer des scripts «ManiaScript».
C’est ce que j’ai fait, et au bout de deux soirées passées à tout ré-analyser ce que j’avais fait (même si je mets des tonnes de commentaires, mon générateur est en C pur, donc c’est très dur (pour moi en tous les cas) de me replonger dans le bain), j’ai enfin pu recompiler et générer quelque chose. J’en ai donc fait une copie d’écran que je vous livre avec plaisir (cliquez dessus pour agrandir) :
Et puis j’ai repassé toute une soirée à réussir à lier les deux. Le plus gros problème vient du fait que je prends les repères mathématiques «classiques» c’est à dire en vertical, Y, à l’horizontal X, et en profondeur Z. Dans Trackmania, le Y et Z sont inversés. Bonjour le casse tête mais je n’étais pas à ça près. J’ai donc réussi : j’ai fait une copie d’écran que je vous livre avec un bien plus grand plaisir que les deux précédents (cliquez dessus pour agrandir) :
La pose des montées se fait avant la pose des blocs principaux. C’est assez marrant à voir, et comme je suis gentil, je vous ai même fait une copie d’écran (cliquez dessus pour agrandir) :
Ensuite, j’ai voulu tester les limites de ma machine, et j’ai crée le plus grand labyrinthe possible pour Trackmania 2, et à mon grand plaisir, le jeu n’a pas explosé, comme il le faisait pour Trackmania United. Mattez moi ça (cliquez dessus pour agrandir) :
Trackmania 2 a une nouveauté extraordinaire : ils précalculent les ombres avec un réalisme époustouflant, et j’ai donc demandé de précalculer avec le maximum de précision (il y a six niveaux, et le plus détaillé prend plusieurs heures de calcul), et voilà ce que ça a donné (cliquez dessus pour agrandir) :
Ensuite, je me suis dit que les labyrinthes c’est bien joli, mais uniquement des blocs carrés, c’est pas très marrant. Donc j’ai décidé d’améliorer le tout, et j’ai trouvé un truc : après que le labyrinthe ait été posé par le script, j’ai imaginé rajouter en «ManiaScript» du code qui « décore » le labyrinthe. Par exemple, pour les tournants, j’ai mis des blocs de type « route », et j’ai ajouté un bloc « carré » pour terminer tous les cul-de-sac (cliquez dessus pour agrandir) :
Et puis je me suis aperçu que les blocs avaient la possibilité d’avoir des néons incrustés, et que les tournants étaient éclairés, j’ai essayé de voir ce que ça donnait en mode nuit, et c’est vraiment beau (cliquez dessus pour agrandir) :
J’ai recalculé le même labyrinthe afin que vous puissiez comparer avec et sans les améliorations (cliquez dessus pour agrandir) :
Et le même labyrinthe en mode nuit (cliquez dessus pour agrandir) :
Ensuite, j’ai trouvé d’autres types de blocs dont j’ai pu me servir pour améliorer encore le rendu, et faire des tunnels. Le rendu de nuit des tunnels est encore plus joli (cliquez dessus pour agrandir) :
Et puis les dernières captures, qui concernent le seul circuit que j’ai entièrement validé, sur douze étages (cliquez dessus pour agrandir) :
Et comble de joie, le dernier étage a en plus le tout dernier type de tunnels que j’avais implémenté, mais il ne sort que très rarement sur les labyrinthes qui ne sont pas très larges (celui ci fait 4×4) (cliquez dessus pour agrandir) :
Si vous parlez un petit peu Anglais, alors cette vidéo est faite pour vous :
Elle vous explique comment cracker les mots de passe Windows, comment utiliser le Wifi, collecter les paquets et les analyser afin de les cracker et de se faire une clé vous donnant l’accès au réseau, etc.
Tout est là, amusez vous bien :