Un épisode qui n’en fini pas

La semaine du 22 au 26 août 2016 s’est concentrée sur l’épisode de Minecraft sur serveur. J’ai énormément avancé dessus et il me reste une séquence spéciale et la séquence de fin à tourner, doubler et monter. Par contre, la fin de semaine est toujours un peu plus difficile et même si j’ai pu beaucoup travailler jeudi, j’ai dû m’arrêter vendredi en raison de la fatigue mentale et de la chaleur. Il fait toujours aussi chaud aujourd’hui, et j’ai donc un peu de retard dans la rédaction et publication de ce compte-rendu. Je suis aussi moralement un peu affecté par des trucs que je lis ça et là sur Internet. Mais bon, je vais m’en remettre, comme d’habitude.

Je vais faire mon possible pour terminer cet épisode et le publier avant mon départ de mercredi en vacances. Je n’aurais probablement pas de dimanche, mais plus vite ce sera fait, plus vite je serais soulagé. Et vous pourrez surtout profiter de cet épisode qui je l’espère, vous fera passer un bon moment 🙂

Fatigue, doutes et déprime

La semaine du 15 au 19 août 2016 a été courte. Dés lundi, je me suis attelé à l’avancement de la réalisation de l’épisode de Minecraft sur le temple du Nether. Mais, j’ai dû m’y mettre très tard en journée, car je n’étais pas dans le meilleur état psychique. Puis, dés le lendemain, j’avais rendez-vous chez le psychiatre et je devais aussi préparer ma visite d’appartement du mercredi. Mon rendez-vous en rapport à mon trouble psychique m’a perturbé émotionnellement. J’ai eu besoin d’extérioriser de la colère, mais je ne me suis pas sentis mieux, au contraire. Je n’ai donc pas pu passer même une demi-heure sur mon épisode. Le lendemain, j’ai fait ma visite d’appartement, ce qui m’a satisfait au moins moralement, mais en rentrant, c’était le corps qui avait besoin de se reposer. Durant la nuit, le moral est retombé, et j’ai compris que mon état psychique refaisait des siennes.

DepressionJeudi, je me suis forcé à avancer sur l’épisode. J’ai tourné quelques images du début de la construction du temple, en commençant en retard en raison de la difficulté à m’y mettre. Finalement, j’y ai à peine passé une demi-heure et j’ai dû me résoudre à lâcher prise. Je me suis mis à angoisser et déprimer face au manque d’engagement des personnes qui voient ce que je fais. Mes partages sur Internet de ce blog, de mes jeux, de mes vidéos ne donnent très souvent pas de partage, de réactions, rien de la part de qui que ce soit. De plus, je gère un serveur Minecraft, celui de ma série justement, et je ne pourrais bientôt plus le financer, ni y consacrer de temps pour l’administrer. J’ai fais appel aux joueurs qui se parlent entre eux pour organiser des IRL entre eux, mais ne me répondent plus concernant la survie du serveur. Je n’ai pas vraiment les moyens aujourd’hui, et encore moins quand j’aurais un appartement à payer, pour continuer comme-ça, et avoir le sentiment d’être boudé par des personnes qui sont bien contentes de profiter du serveur n’arrange rien à mon moral.

Bref, devant le sentiment d’échec et l’impression d’être exclu (là je ne suis pas sûr que ce soit mon trouble qui s’exprime), mon moral a baissé plus encore et vendredi, j’ai passé la journée au lit. Des personnes qui me sont chères ont essayé de me remonter le moral, mais il est vrai, qu’elles sont tout aussi conscientes d’une réalité où les gens peuvent être incapables de se mettre à votre place une minute.

Les promesses d’une planète

Cette semaine du 8 au 12 août 2016 a encore commencé par 3 directs dans lesquelles je programme Demiurge. Les rediffusions sont toujours au même endroit sur ma chaîne, c’est à dire Programmation de jeux en direct 🙂
J’y ai optimisé un minimum le code du subchunk et ajouté une pseudo lumière pour mieux voir les formes des cubes. C’est un code très basique pour la lumière qui ne fonctionne pas pour les pentes. A défaut de mieux, je pourrais envisager d’utiliser un algorithme d’ombrage de Gouraud ou de Phong, mais je suis allé au plus simple possible. A ce stade, une méthode très naïve suffit largement.

Le reste de la semaine à été consacrée à l’expérimentation de la forme de planète ronde dont j’ai parlé la semaine dernière. Une anomalie apparaissait sur les vertex de coordonnées (x0, y, z0), produisant un trou dans le maillage du subchunk.

Les points (x0, y, z0) sont les seuls à ne pas être déformés de par leurs positions sur l'axe Y du centre de la distorsion.
Les points (x0, y, z0) sont les seuls à ne pas être déformés de par leurs positions sur l’axe Y du centre de la distorsion.

La raison était que dans la formule, je commence par calculer la norme du vecteur xz et plus tard je réutilise cette dernière comme diviseur pour calculer un coefficient pour les positions finales de x et z du vertex. Évidemment, si x et z valent zéro, alors la norme sera égale à zéro, et donc le diviseur sera à zéro aussi. Hors, on ne peut pas diviser un nombre par zéro, car cela donne un résultat infini 🙂 J’ai résolu cette anomalie, en restreignant le calcul des coefficients hors du cas (x0, y, z0) et pour ce dernier, les vertex restent fidèle à elles-même. C’est dans ce cas, en effet, que les point ne subissent aucune distorsion, puisque positionnées dans l’axe du centre de la pseudo-sphère ;p

J’ai posté sur Facebook et Twitter des images, en milieu de semaine, montrant le résultat des premiers tests de mon algorithme. Puis, j’ai avancé cette fin de semaine et en suis arrivé à ce résultat dont j’ai fais une vidéo 🙂

En ce qui concerne mon épisode de Minecraft sur serveur, j’ai décidé de m’y consacrer la semaine prochaine, dés lundi, et de passer à d’autres choses une fois terminée et publiée sur ma chaîne 🙂 Jeudi, j’ai dû me reposer un peu et n’ai passé que peu de temps sur mon expérience de planète. Il m’a donc semblé plus judicieux de ne pas travailler sur deux choses la même semaine 🙂

Programmation en direct, série Minecraft et planète

La semaine du 1er au 6 août 2016 a commencé avec 3 jours de code sur Demiurge en direct sur ma chaîne Youtube 🙂 Quelques jours avant, j’ai testé Twitch, puis Youtube live et c’est finalement le dernier qui s’est montré à mes yeux le plus pratique et adapté à ma très mauvaise connexion internet. Je n’ai pas une très bonne idée de ce que ça doit donner de regarder un de mes directs, mais je sais déjà qu’il y a en général à la fin un décalage d’une heure à peu près avant que le live puisse totalement être arrêté alors que j’ai arrêté de diffuser sur mon ordinateur. C’est énorme et je ne parle pas des quelques images qui parfois ne passent pas. Mais bon, si je ne peux pas vraiment vous proposer de venir me voir coder en direct mes jeux, vous pouvez regarder les rediffusions que j’ai rangé dans la playlist « Programmation de jeux en direct » sur ma chaîne 🙂

Bon, c’est très long, une vidéo dure en moyenne 3h, mais vous pouvez aller à quelques endroits pour regarder ce qui vous intéresserez le plus. Je ne suis pas encore décidé, mais j’ai dans la tête, l’idée de récupérer ces vidéos et de faire des versions raccourcis avec explications en voix-off et musique plus appropriée pour rendre le contenu plus confortable et utile 🙂 C’est une idée comme-ça, il faut que je vois si c’est possible dans mon emploi du temps.

La fin de semaine était consacrée à l’épisode Minecraft sur le temple du Nether. Je suis encore loin de la fin de la réalisation, donc cette fois je n’envisage pas de le sortir la semaine prochaine 🙂 J’ai avancé sur la séquence de recherche de ressources et crafting. C’est très long à faire, il y a beaucoup de matériaux nécessaires pour le temple, et en plus, il y a eu une coupure de courant jeudi qui m’a obligé à arrêter le travail plus tôt que prévu. Je parlerais du problème du crafting de grandes quantités de ressources dans cette séquence, mais vous verrez 🙂 Je sais en tout cas que j’aurais à terminer cette séquence la semaine prochaine et pourrais démarrer la construction du temple. Il restera deux séquences à faire pour vraiment finaliser l’épisode, donc patience :p

Enfin, cette nuit, je me suis endormis vers 3h du matin parce qu’une idée pour Demiurge me trottait dans la tête, et j’ai voulu faire des petites expériences de mathématiques. Je souhaite, lorsque le moteur du jeu sera suffisamment avancé, produire des planètes sphériques sachant que le monde de Demiurge est un espace cubique. Essayez donc de mettre des cubes ou des carrés sur la surface d’une sphère et vous comprendrez vite le problème :p

Distorsion en barillet
Distorsion en barillet avec un cache en forme de cercle pour créer l’illusion d’une sphère.

J’ai donc cherché comment traficoter l’équation paramétrique de la sphère pour faire une illusion de sphère qui permet de placer une grille carré dessus. Cette technique que j’essayais de reproduire et sur laquelle j’ai déjà fais des schémas et équations il y a un peu plus d’un an, s’appelle une distorsion en barillet. Vous prenez une grille et vous lui affectez une équation de son espace qui permet de faire ressortir un volume sphérique par déformation.
Sur Internet, j’ai trouvé un site permettant de faire des simulations d’équations paramétriques et j’y ai fais mon petit traficotage et finalement, je me suis rabattu sur l’équation d’une tore qui se rapproche le plus d’une planète.
x = (1+9*cos(theta))*cos(phi)
y = (1+9*cos(theta))*sin(phi)
z = (1+9)*sin(theta)
Et tout à l’heure, j’ai réfléchis aux avantages et inconvénients de la distorsion en barillet et de l’équation d’une tore. Plusieurs problèmes se posent comme le problème des distances en diagonal sur un monde constitué de cubes, par rapport à son aspect sphérique vue de l’espace, ou les déformations aux pôles pour une tore, même si cette forme les atténuent mieux qu’une sphère.

Géode en nid d'abeile (source Wikipédia)
Géode en nid d’abeille (source Wikipédia).

Je ne pense pas pouvoir éviter d’utiliser une illusion avec la distorsion en barillet puisque c’est très pratique pour voir l’horizon et les objets du décor se déformer en atterrissant sur ou en décollant hors de la planète. Par contre, j’ai eu l’idée d’utiliser une géode en nid d’abeille constituées uniquement d’hexagones. Une géode en nid d’abeille classique contient des hexagones et quelques pentagones.
J’ai donc ouvert un logiciel de dessin et me suis mis à griffonner des hexagones à base de pixels qui seraient en faite les chunks de forme cubique et vérifier si on pouvait les mettre côte à côte sans chevauchement des pixels. J’ai trouvé une forme qui me plait bien et fait une petite construction de carte pour ensuite tracer un cercle représentant la planète.

Recherches de formes pour des régions hexagonales constitué de cubes, sur une planète sphérique.
Recherches de formes pour des régions hexagonales constituées de cubes, sur une planète sphérique.

Le résultat, sans déformation volumétrique, me donne de l’espoir 🙂 Dés que l’occasion se présentera, je ferais quelques expériences. En attendant, dans le code de Demiurge, je dois arriver au stade d’un subchunk un minimum optimisé 🙂