De la 3D avec pyglet

Salut à vous, chers amis multi-dimensionnels !!

En ce moment, j’entrepose et je documente sur mon compte github tous mes trucs de code. J’ai commencé par les plus récents, et je remonte progressivement dans le temps et dans mes joyeux souvenirs.

Mais c’est un peu fastidieux, et pas très valorisant car je ne fabrique rien de nouveau. Je me suis donc offert des petites vacances créatives au milieu de ce travail d’archivage, ce qui a résulté en une démo 3D, faite avec python + openGL + pyglet.

screenshot_cube

screenshot_icosahedron

Et devinez quoi ? Je l’ai entreposée et documentée sur mon compte github !
https://github.com/darkrecher/Geode-Sweeper

Certes, y’a pas grand chose. On peut tourner autour d’un objet (un cube arc-en-ciel ou un dodécaèdre, au choix), et c’est tout. De plus, je n’ai pas fait d’exécutable. Pour tester, vous devrez installer le bataclan nécessaire.

Je vais me garder ce machin sous le coude dans le futur but de concrétiser une idée de jeu absolument géniale : un démineur sur une géode. D’où le nom du repository : Geode-Sweeper.

Je ne vous en dis pas plus, mais pour vous faire patienter, voici des nichons géodésiques.

lara13

Avant, je ne voulais jamais parler publiquement de mes créations tant qu’elles n’étaient pas finies. Mais je me suis rendu compte que c’était un peu idiot, d’autant plus que quand je parle, c’est principalement dans le vide. J’ai donc décidé de décrire mes créations dès le début de leur création (ha ha ha). Le souci, c’est que Geode-Sweeper, je l’ai non seulement pas fini, mais carrément même pas commencé.

Donc je ne peux pas vous en dire plus. Pour vous faire repatienter, voici des fesses en polygone.

The-10-Most-Ridiculous-Victoria-Secret-Fashion-Show-Costumes

Ce blog vous a habitué à un bien meilleur patrimoine concernant les images érotiques. Pour me rattraper et vous faire rerepatienter, voici une jolie codeuse python.

python_girl_boobs

Sans transition :

Jacques Chancelle et tombe

Comme vous le savez, Jacques Chancelle est mort.

Je ne sais pas exactement qui est ce mec, et je dois avouer qu’il ne m’intéresse pas plus que ça. Mais ça m’a rappelé un souvenir rigolo.

Il y a environ 25 ans de ça, je me distrayais avec un jeu vidéo nommé « Tera », catalogué, déjà à cette époque, dans la catégorie « vieux et un peu pourri ».

screenshot du jeu vidéo Tera, de Loriciel

Lorsqu’un des personnage mourait, un texte indiquait en bas de l’écran : « Machin chancelle et tombe… ». Je-sais-plus-qui avait alors dit « haha, Jacques Chancelle, lol ! ». (Enfin à l’époque on disait pas encore « lol », mais l’idée est là, m’voyez).

Du coup, j’avais créé un personnage du nom de « Jacques », et on s’était trop lolé quand il a mouru, car le jeu a dit : « Jacques chancelle et tombe ». Hahaharg !!

Ici et maintenant, devant vous, je jure que lorsque le Revenu de Base Inconditionnel sera mis en place en France, je rejouerai à ce jeu, j’en décortiquerai les mécanismes, et publierai la solution dans un article de blog. Et alors, on retiendra de Jacques Chancelle sa contribution sérendipitesque à ce superbe jeu qu’est Tera.

Ouais et Bonne Année sinon.

Galaxy 55 : script de récupération des prix

Edit 2013-11-19 : le jeu Galaxy 55 a été mis en jachère pour une durée indéterminée. Cet article n’est donc plus d’actualité. Je le conserve ici, car tout ce que je dis est éternel.

Salutations aux capitalicubistes qui me lisent !

Aujourd’hui, un article de geek avec du code dedans. Mais pas du python. Nous, dans le blog de Réchèr, on n’est pas que des machines à pythonner, on est aussi des êtres humains, avec un cœur, un foie, des ovaires et/ou des couilles. (On est surtout un mec tout seul avec des petites voix dans la tête).

Bref, ce que je vous propose, c’est

Du javascript DTC (Dans Ta Console)

Une fois n’est pas coutume, mais plusieurs fois est ; la société Motion Twin a créé un chouette jeu. C’est « comme Minecraft, mais dans l’espace », et ça s’intitule Galayx 55. Le joueur y explore des planètes diverses et variées. Minage, extraction, récolte et recherche de constructions témoignant d’une civilisation perdue sont de mise. Je ne vous décris pas tout en détail, d’autres sites feront ça mieux que moi, et avec moins de commentaires débiles en rouge pour sous-entendre que je suis fou et que je voudrais que tout parte, non que tout reste, non que tout parte mais que le reste reste, prolétaritude du dictatioriaaaaaaaaaaaaahhhhh !

Ce jeu comporte un marché d’échange de cubes. Un peu comme Wall Street, mais sans les hippies qui l’occupy. (Tiens d’ailleurs, il en est où ce mouvement ? Faudra que je le moteur-de-recherchise, à l’occasion). Les joueurs y font des offres d’achats, de vente et des transactions. Tout cela est bien biaux.

Il y a juste un problème d’interface : on peut consulter les prix pour chaque type de cube, un par un, mais il n’y a pas de récapitulatif global!

Il y a aussi quelques soucis dans l’affichage des courbes.

Alors vous êtes là, avec vos planètes comportant des centaines de cubes, vous « kiffez » l’exploitation intensive de la nature dans le but bien légitime d’amasser de l’argent, vous êtes prêt à tondre des hectares entier de forêt luxuriante pour votre luxe, mais vous ne pouvez pas savoir quels cubes se vendent le mieux. Mince alors.

Heureusement, je suis là.

Disgression : j’ai mis le mot « kiffer » entre guillemets juste pour m’amuser à faire le type qui parle pas djeun’s mais qui essaie quand même de parler djeun’s tout en ayant bien conscience qu’il sait pas le faire, et qui prend tout cela au second degré. Je fais du second degré sur du second degré. D’ailleurs, pour être vraiment clair sur mes intentions, j’aurais du mettre les guillemets entre guillemets. Ça aurait donné quelque chose comme ça : ‘ »‘kiffer' »‘. Sauf que WordPress bidouille mes guillemets pas comme je veux. Bon, passons.

Galaxy 55 est un jeu comportant des arbres et des barrières en bois, comme ce qu’on voit en arrière-plan de cette image.

Je me suis lancé dans la réalisation d’un bout de javascript automatisant la récupération des prix. Comme j’y connais pas grand-chose à la programmation web en général, je me suis dit que ce serait sûrement faisable sous la forme d’un gros tas de code à copier-coller comme un bourrin dans la console du navigateur. J’y suis parvenu.

Je ne m’en suis rendu compte que plus tard, mais j’ai vraiment eu du bol. Ça a pu fonctionner ainsi grâce au fait que la recherche des cubes, leur sélection et la récupération des prix se font par des requêtes Ajax.

(ici, il faudrait mettre une image d’un bidon de lessive Ajax, mais ce serait tellement convenu. Je vous l’épargne, d’accord ?)

Les requêtes Ajax ne changent pas l’URL, ce qui signifie qu’il n’y a pas de méga-reset de la page web qui aurait tué dans l’œuf l’exécution de mon gentil script. Oui, mon script s’exécute dans un œuf et il vous emmerde.

Et donc ça marche. Mon code, après quelques instants de moulinage, finit par logger dans la console le tableau complet des cours et des prix. Pour savoir comment s’en servir, vous pouvez consulter, au choix

Faites-en bon usage, jeunes parallelépipédocapitalistes !

Les trucs que j’ai pas réussi à faire dans ce script

Des requêtes jQuery qui ne se bloquent pas

Une petite partie de jQuery ?

Une petite partie de jQuery ?

Doit y avoir un truc qui m’échappe avec cette cochonnerie. Je tape $(« div#best_ask span.tgt ») dans la console et j’obtiens un tableau contenant un élément. Jusqu’ici tout va bien.

Sur la même page, je lance mon script comportant cette ligne de code, et elle me renvoie null.

Je me dis qu’il faut peut-être attendre que les ajaxeries en cours soient terminées. Je met la ligne dans une fonction SetTimeout, qui se relance tant que le truc obtenu est null. Le bastringue se coince dans une boucle infinie. Merci, au revoir, et passez-moi une brouette de commandes getElement [ById / sByTagName / sByClassName ].

Continuer mon script sur une autre page

Lorsque je suis parvenu à logger le tableau dans la console, je me suis dit que ce serait cool de l’envoyer automatiquement à un site de pastebin. C’est là que je me suis heurté au problème non vu précédemment, grâce au gros coup de bol.

Ça paraît évidemment pour ceux qui font du web depuis l’époque où leur mère suçait encore des bites, mais pour moi, ça ne l’était pas. Je vais donc vous l’écrire en gras : La plupart des infos en mémoire (variables, fonctions à exécuter après un timer, etc.) sont oubliées lorsqu’on recharge la page ou qu’on change d’URL.

Ce n’est pas une limitation technique, le navigateur fait exprès d’être amnésique de la sorte. Il s’agit d’une sorte de mesure de sécurité, appelée la « Same Origin Policy », ou quelque chose comme ça. Il y a bien une instruction javascript pour changer de page, mais lorsqu’on l’exécute : pouf ! Mémoire-de-poisson-rouge power !

Rien à voir, sinon le mot "cube".

Rien à voir, sinon le mot « cube ».

Les « vrais » sites web, pour conserver leurs informations, utilisent des cookies dont ils gavent votre navigateur. Il est certainement possible de concocter rapidement une de ces délicieuses friandises, mais ça n’aidera pas mon pauvre script dans sa pauvre console. Il va de toutes façons se stopper en changeant de page.

La solution serait d’utiliser un plug-in comme GreaseMonkey, qui peut cuisiner ses propres cookies en interne, et exécuter différents morceaux de javascript dans différentes pages. J’en aurais donc un morceau dans la page Galaxy 55, un autre dans celle du pastebin, et les données se transmettraient grâce à un cookie commun. (kou-ki-kom-1).

Sauf que je n’ai pas envie de mettre tout ce bazar en place, d’abord parce que j’ai la flemme, et ensuite parce que ce serait moins portable. Le script tel qu’il est actuellement n’a rien besoin d’autre qu’un navigateur. Pas de singe graisseux à installer, ni tout autre tralalas.

Je veux que ça reste super simple à utiliser, que n’importe quel joueur puisse l’exécuter et rediffuser publiquement les prix afin d’en faire profiter tout le monde. J’ai dit.

Autre petite chose concernant Galaxy 55

Pour aller d’une planète à l’autre, on dispose d’un vaisseau, à concevoir soi-même comme on veut.

 Y'avait trop de cube dans l'image précédente. Pour compenser, voici des courbes.

Y’avait trop de cubes dans l’image précédente. Pour compenser, voici des courbes.

Ce vaisseau doit respecter diverses contraintes : étanchéité, accès à l’ordinateur de bord, accès au transmuteur, etc. Comme je suis un grand scientifique, je suis parvenu à créer le plus petit vaisseau acceptable possible. Le détail de ces recherches cruciales et sérieuses est publié dans le forum (http:// twinoid.com/fr/tid/forum#!view/96|thread/11814458).

Le vaisseau possède également une valeur de vitesse, qui semble être calculée en fonction du nombre de cubes. J’ai trouvé la formule exacte. Mes expériences empiriques et les conclusions théoriques qui en découlent sont décrites dans le sujet du forum sus-mentionné. Distinction suprême pour mon travail de chercheur, cette formule de vitesse est reprise dans la revue scientifique Twinpedia (http:// www. twinpedia.com/galaxy55/donnees_mathematiques).

Mes nouveaux l’amis de l’internet

Pour trouver la réponse à mes questions existentielles sur le javascript et les pastebin, j’ai eu recours à mes nouveaux l’amis de l’internet. Ils s’appellent Sam et Max et ont un blog super (http:// sametmax.com/).

Allez-y les voir, je les «’» »«’»kiffe«’» »«’». Voici une photo d’eux, avec un troisième ami indéterminé.

 Photo prise à la soirée-anniversaire de celui du milieu.

Photo prise à la soirée-anniversaire de celui du milieu.

Je vais essayer, dans les semaines qui viennent, de leur proposer des articles sympatoches sur le python ou autre. C’est toujours bien de squatter un peu le blog d’autres gens, ça permet d’amener du flux de cerveau dans le mien.

J’en profite également pour remercier Roro, un autre l’ami de l’internet, qui m’a introduit (avec vaseline) au blog de Sam&Max. Il n’a pas de site ni de blog ni de truc comme ça, alors je vais juste le remercier publiquement ici.

Merci !!!

Merci !!!

Et merci à lui pour plein d’autres trucs !!