Unity3D : gestion des bords de l’écran

Définition du problème

J’ai passé quelques temps à comprendre comment gérer la détection des bords de l’écran pour ne pas que mon gameobject en sorte.

Dans mon cas le gameobject dirigé par le joueur est un cube auquel on ajoute un BoxCollider, la caméra est fixe.

Dans Unity on gère la position d’un objet par son attribut position (un Vector3 donnant le positionnement du centre de l’objet).

Malheureusement pour moi le composant camera de Unity permet seulement de trouver la taille en pixels de l’écran (maCamera.pixelHeight et maCamera.pixelWidth) et donc je me suis mis à chercher un moyen de déterminer en pixel l’endroit où se trouve mon cube afin de savoir si celui-ci est en dehors ou en dedans de l’écran. En gros si mon cube est entièrement visible ou non !

De l’intérêt d’utiliser un BoxCollider

Pour déterminer le centre de mon cube ainsi que sa taille j’utilise les valeurs récupérables dans l’attribut bounds du composant :

//dans start()
joueurX = this.GetComponent<Collider>().bounds.size.x/2;
joueurY = this.GetComponent<Collider>().bounds.size.y/2;

//dans update()  centreJoueurX = this.GetComponent<Collider> ().bounds.center.x; centreJoueurY = this.GetComponent<Collider> ().bounds.center.y; 

Aux tests à effectuer

if (maCamera.WorldToScreenPoint(new Vector3(0,(centreJoueurY+joueurY),0)).y > pixelHeight) {
//on stop le déplacement
directionJoueur = 0;
this.gameObject.transform.localPosition += (-mouvementY * speed * Time.deltaTime);
} 
else if (maCamera.WorldToScreenPoint(new Vector3(0,(centreJoueurY-joueurY),0)).y  < 0) {
directionJoueur = 0;            this.gameObject.transform.localPosition += (mouvementY * speed * Time.deltaTime);
} 
else if (maCamera.WorldToScreenPoint(new Vector3((centreJoueurX+joueurX),0,0)).x > pixelWidth) {
directionJoueur = 0;             this.gameObject.transform.localPosition += (-mouvementX * speed * Time.deltaTime);
}
else if (maCamera.WorldToScreenPoint(new Vector3((centreJoueurX-joueurX),0,0)).x < 0) {
directionJoueur = 0;                                           this.gameObject.transform.localPosition += (mouvementX * speed  * Time.deltaTime);
}


Voilà pour le système utilisé actuellement, on peut bien entendu imaginer un système pour ne pas refaire les tests à chaque update() mais uniquement au moment voulu.

Vous avez dit inépuisable ?

Premier jet.

Cet article traite de la nécessité de se rendre compte d’une composante importante du monde. Nous appellerons cette composante nature. La deuxième notion importante abordée dans cette article est la notion de crise. La troisième notion dont je vais parler est celle d’énergie.

Je ne présenterais pas ici la composante nature, mais je vais par contre vous présenter les définitions de crise ainsi que celles d’énergie comme Larousse nous les présentes.

Crise

  1. Brusque accès, forte manifestation d’un sentiment, d’un état d’esprit
  2. Moment très difficile dans la vie de quelqu’un, d’un groupe, dans le déroulement d’une activité, etc. ; période, situation marquée par un trouble profond
  3. Manifestation violente d’un état morbide, survenant en pleine santé apparente
  4. Grave pénurie de quelque chose
  5. Familier – Enthousiasme soudain pour une action, brusque mouvement d’ardeur

Énergie

  1. Volonté tendue vers une action déterminée ; puissance, vigueur, force morale
  2. Puissance physique de quelqu’un, qui lui permet d’agir et de réagir
  3. Grandeur caractérisant un système physique, gardant la même valeur au cours de toutes les transformations internes du système (loi de conservation) et exprimant sa capacité à modifier l’état d’autres systèmes avec lesquels il entre en interaction. (Unité SI le joule.)

J’ai volontairement choisi ces définitions de crise et d’énergie pour vous parler de la composante nature en lien à ces deux notions. J’ai récemment commencé la lecture d’un livre en anglais traitant d’économie : Killing the Host: How Financial Parasites and Debt Bondage Destroy the Global Economy ( Tuant l’hôte : Comment les parasites financiers et l’esclavage de la dette détruit l’économie globale) de Michael Hudson. Cette lecture et plusieurs autres lectures ainsi que mon intérêt personnel pour l’avenir et le fonctionnement du monde dans lequel je vis m’ont poussé à me poser des questions et essayer d’y trouver des réponses.

La question que je me suis posé aujourd’hui de façon pessimiste concerne la prochaine crise : -« Quelle sera la prochaine crise à laquelle nous devrons faire face ? »

Les économistes jouent avec de l’argent, en bourse. L’argent joué en bourse sert à produire de la valeur, valeur confinée aux biens et services. Ces mêmes biens et services sont le propre du marché et sont vendus à  des clients. Les clients sont des personnes (vous, moi, nous). L’argent dégagé de la vente de ces biens et services sert à créer d’autre biens et services, etc. La boucle est bouclée !

Vous avez dit bouclée ? Mais – « qui fait tourner cette boucle ? » C’est là qu’intervient la première définition de l’énergie, volonté tendue vers une action déterminée. Prenons par exemple la volonté de construire une maison. Actuellement pour construire une maison on fait intervenir des acteurs, et des matériaux (services + biens).

Pour déterminer la valeur d’un service, ici, disons, un service demandant une action physique, par exemple monter un mur en brique on fait intervenir la deuxième définition de l’énergie, puissance physique de quelqu’un, qui lui permet d’agir et de réagir.

Mais qu’en est-il de la détermination de la valeur d’un bien ? Un bien, ici, les briques sont le résultat d’une énergie de transformation voir troisième définition de l’énergie et d’un service rendu par l’humain, transport, acheminement, etc.

Malheureusement pour nous cette troisième définition n’est pas des plus tendre avec notre mode de vie basée en grande partie sur la dérégulation, le consumérisme, le productivisme, l’extractivisme et j’en passe. Nous utilisons sans arrêts des sources d’énergies fossiles or, comme nous le rappel Larousse plus grande est l’énergie dépensée plus grande est sa capacité à modifier l’état d’autres systèmes avec lesquels il entre en interaction. Pour rappel – énergie : Grandeur caractérisant un système physique, gardant la même valeur au cours de toutes les transformations internes du système (loi de conservation) et exprimant sa capacité à modifier l’état d’autres systèmes avec lesquels il entre en interaction. (Unité SI le joule.) 

De plus on a un cheminement intéressant pour un exemple comme le pétrole se présentant sous cette forme :

  1. Des plantes et des animaux marins voient le jour puis meurent allant reposer au fond des mers.
  2. Le temps passe et les quantités de « matières » s’accumulent aux fonds des mers.
  3. Puis la vase vient recouvrir cette « matière »
  4. Avec encore plus de temps une couche de sédiments s’accumulent et compriment (énergie de compression) toute cette matière jusqu’à ce qu’elle se transforme en pétrole.
  5. Enfin le pétrole remonte à travers la roche poreuse et forme un réservoir.
  6. Une société pétrolière vient forer ce réservoir des millions d’années après pour récupérer ce système physique créé par la nature pour le vendre ensuite aux consommateurs.
  7. Le consommateur comme son nom l’indique va consommer l’énergie que nous lui vendons. Nous pouvons ici citer le principe de conservation de l’énergie. Ce principe rend impossible un mouvement perpétuel car aucun système physique réel n’est parfaitement isolé de son environnement, son mouvement perd alors de l’énergie sous une forme ou une autre (frottement, lumière, chaleur, etc).

Résultat clair pour nous ? – Nous sommes des consommateurs.

Vient alors la suite du questionnement. Qui créé vraiment ? – pour répondre à cette question un questionnement philosophique est demandé de votre part, cher et chère lecteur et lectrice. De qui ou de quoi sommes nous le fruit ?

Une réponse évidente peut-être tentée et celle ci m’en fait revenir à notre composante (élément constituant d’un ensemble complexe) qui n’est autre que la nature. Oui, si il y a bien un ensemble indissociable et dont nous pouvons appréhender en partie (au moins) et simplement le fonctionnement c’est bien la nature. De plus, il est pour ainsi dire impossible de nier que nous en provenons entièrement. Or comme nous provenons de cette nature il est alors évident que nous sommes une des composantes de celle-ci et donc que nous en dépendons.

Les aléas et la nature. Nous en venons peu à peu au sujet intéressant ! Youpi !

Alors, pour ceux qui n’aurais pas encore subit la première définition de crise présentée, c’est à dire le brusque accès, la forte manifestation d’un sentiment, d’un état d’esprit. Qui est une des formes de la manifestations d’une crise sociétale, celle ou les gens prennent conscience et finisse pancarte à la main, le jour, la nuit, debout ! (cf: nuit debout). Avec ceux là, vous, nous pouvons continuer.

La deuxième manifestation de la crise est tout aussi naturelle et provient de la nature elle même, celle-ci est une manifestation violente d’un état morbide, survenant en pleine santé apparente. On note ici le caractère imprévisible qui est associé à la crise par le mot « violente ». Mais aussi le mot morbide, qui relève de la maladie, la caractérise ou en résulte. Que fait-on avec un malade ? – Réponse évidente, on le soigne ou au moins on essaye.

Ne nous éloignons pas de la nature. Michael Hudson dont je citais l’ouvrage précédemment nous explique que lui même à commencer à s’intéresser à l’économie après sa rencontre avec Terence McCarthy, qui lui même explique de manière presque poétique pourquoi, historiquement, la plupart des crises ont lieu en automne lorsque les champs ont été déplacés.

A ce point de la réflexion vous pourriez vous arrêter de me lire et me dire que mon histoire est bien belle, mais que nous ne dépendons plus seulement de la nature, mais de beaucoup d’autres paramètres, que la crise n’est qu’un état passager, une maladie, qui diminue nos capacités d’actions. Et qu’en plus de cela, vous pourriez prétendre que nous avons dominer les crises agricoles à l’aide de cure à base de pesticides, en dopant les sols à l’aide d’engrais de synthèse, et d’outils de labours mécaniques.

À cela je vous répondrais -« Qu’en est-il d’un malade de longue date, que vous soignez à l’aide d’une pharmacopée épuisable, de plus en plus cher et détruisant sa diversité ? La vie appelle à la vie, la mort appelle à la mort, non ? » puis je vous laisserez réfléchir par vous même à la situation passée, actuelle, et à venir.

Toujours est-il que la crise est selon la quatrième des définitions que je vous propose une grave pénurie de quelque chose. Dont je vous laisserez imaginer les conséquences.

Conclusion de mon cheminement de pensées libres, la boucle de la consommation des consommateurs que nous sommes est actionnée par l’énergie disponible sur notre belle planète. Cette énergie est obtenue, stockée, puis restituée sous une forme ou une autre (frottement, lumière, chaleur, etc). D’après la loi de conservation de l’énergie, il est stipulé que l’énergie d’un système isolé ne peut varier. Quelle pourrait-être la question à se poser pour savoir si nos ressources sont inépuisables ? Suffirait-il de déterminer à quel point notre système est isolé pour déterminer la quantité d’énergie que nous épuisons par rapport à celle que nous gagnons ?

Questions ouvertes :

Si nous même provenons de la nature est-il possible de s’en dissocier pour éviter ses aléas ? (d’après vous, quelles pourraient être les raisons qui nous poussent à essayer de synthétiser jusqu’au steak que nous mangeons ?)

Créons nous ?

Créer, capter de l’énergie ? – Pour moi, actuellement, une des seules source d’énergie externe à notre système (la terre) est le soleil. C’est lui qui apporte une plus-value à notre système.

Dépenser de l’énergie ? – Sur terre chaque actions, chaque mouvements, chaque lumières émises est une dépense d’énergie. Si cette énergie dépensée dépasse l’énergie captée par notre système nous allons alors vers un épuisement de l’énergie.

Pour Stocker ? – Je vois différentes façon de stocker l’énergie. De la manière la plus naturelle, en laissant faire la nature (la vie) c’est d’ailleurs cette méthode qui nous a permis d’avoir du pétrole… Des manières plus compliquées comme par exemple synthétiser en peu de temps ce que la nature a fait pour nous en des millénaires (cette méthode s’avère inutile si vous utilisez des énergies naturelles déjà stockée pour la produire).

Les prix de l’énergie ? – cela va vous faire bondir, mais l’énergie ne coûte rien ! Pendant des millénaires et encore maintenant vous pouvez sortir profiter de l’énergie que le soleil nous offre (chaleur, vents, lumière, …). Ce qui coûte c’est la consommation d’énergie supplémentaire à celle acquise en temps réel, ainsi que l’extraction, le stockage, la transformation, et l’acheminement de l’énergie acquise par notre planète à travers le temps sous forme de pétrole, gaz, etc.

Combien coûte l’énergie de service ? – Selon moi l’énergie de service dépend de plusieurs paramètres tels que le mode d’acheminement, de production et le temps et l’énergie physique consacré à ce service.

Peut-on déterminer un coût pour l’énergie qui a créé la nature est ainsi déterminer le prix des biens ? – Le prix d’un bien est souvent déterminé par le prix des services inhérents à leurs extractions, transformations, stockages et extraction et non au temps et à l’énergie nécessaire à la nature pour leur création.

Le coût des services est-il inférieur aux coûts des biens ?  Pour qu’un humain rende un service il utilise nécessairement des biens (ressources) dépendants de son niveau de vie. Plus son niveau de vie est élevé, plus le prix de son service est élevé. Le bien qui lui a une valeur défini comme expliqué à la question/réponse précédente dépend plus de sa difficulté d’obtention et sa rareté.

En résumé : sur-consommation d’énergie => manque d’énergie inévitable => crise (maladie) => nature fragilisé, ne pouvant plus répondre à la sollicitation de ses membres => la boucle ne tourne plus => le système ne redémarre plus tant que personne ne trouve de solution pour éviter la sur-consommation.

Pour vous faire rigoler un peu cette conclusion qui est mienne est en contradiction totale avec la définition économique de la crise par Larousse qui n’est autre que : rupture d’équilibre entre la production et la consommation, caractérisée par un affaiblissement de la demande, des faillites et le chômage.

Donc le prochain article pourrait porter sur la sur-consommation. Quelle est-elle ? Comment survient-elle ? Comment la prédire ? Qui en sont ses acteurs ? Les parasites dont parlent le titre du livre de Michael Hudson sont-ils ces sur-consommateurs ?

Initiation à Node.js

Me voilà entrain d’apprendre à me servir de Node.js pour des projets étudiants.

Node.js permet l’utilisation de Javascript du côté serveur. L’avantage pour nous est d’utiliser un et un seul langage que se soit du côté serveur ou du côté utilisateur.

Petite liste des paquets que j’ai pu tester jusqu’à présent :

  • express – infrastructure web rapide pour Node.js, un des paquets les plus utilisés.
    npm install express
  • serve-favicon – permet d’ajouter très facilement un icône de favoris.
    npm install express
  • ejs – gestion de pages / vues (‘exemple.ejs’) dans lesquelles on peut ajouter du code js à exécuter. Ce paquet permet de mettre en place un site selon l’architecture MVC (Modèle / Vue / Contrôleur).
    npm install ejs
  • socket.io – permet la communication en temps réel (synchrone) entre le serveur et le client.
    npm install socket.io

Après cygwin passage à msys2

Il y a quelques temps j’ai commencé le projet de jeu vidéo clash of bûches sur Unity3D. Pour sa réalisation nous avions besoin d’utiliser un gestionnaire de sources (gitlab) mais nous avions aussi besoin d’un moyen d’utiliser toutes les fonctionnalités de git sur Windows. C’est pourquoi j’avais choisi cygwin qui offre des fonctionnalités similaires à Linux sur Windows. Me permettant d’installer les paquets propre à git et de les utiliser.

Aujourd’hui je me suis équipé d’une nouvelle station de travail. Une belle machine, silencieuse, que l’on peut débrancher, balader, qui permet de « développer coucher ». Et qui je l’espère va me permettre d’augmenter un peu mon activité sur l’ensemble de mes projets.

Malheureusement pour cygwin ma mémoire m’a fait souvenir du temps passer à cocher des cases et installer manuellement des paquets oubliés à l’étape des cases à cocher. Comble de malchance, nouveau dans Windows 10, préinstaller sur ma nouvelle machine avec sa guirlande de logiciels inutiles ainsi que ses paramétrages par défaut à modifier pour « un peu plus » de vie privée je n’avais pour ainsi dire plus trop de temps pour réinstaller le nerf de la guerre : git par le biais de cygwin !

msys2 le nouveau venu dans mon panier logiciel !

Étant à ce moment là en cours, j’ai demandé à mes voisins les plus proches ce qu’il avait à me proposer. La réponse n’a pas tardé « m6-2 ! », moi qui pensais que j’allais regarder la télé on m’a très vite épelé : m-s-y-s-2.

C’est maintenant que les choses sérieuses commencent, vous avez 2 minutes chrono pour :

  • Téléchargez msys2
  • Installez msys2 en double cliquant sur l’exécutable, suivant -> suivant ->
  • Ouvrez ou allez dans la console de msys2
  • Mettez à jour pacman le gestionnaire de paquets (conseillé)
    pacman -Sy pacman
  • Installez git
    pacman -Sy git
  • Vous pouvez dès à présent reconfigurer vos projets avec git !

CreateLink

Commandes / tips utiles
  • Créez un lien symbolique depuis le répertoire windows de votre projet vers l’emplacement racine de msys2
ln -s /c/Users/Visiom/Documents/Unity_Projects/clash_of_buches/ /clash_of_buches
  • Accédez à la racine de windows depuis msys2, en replaçant la lettre par la lettre définie sur votre système
    cd /c

JDD 2 : Des nouvelles de la forêt

ClashOfBuchesLe semestre étant pour moi terminé il est temps de faire un point sur l’avenir du projet !

J’ai pu travailler avec un camarade de promo sur le projet ce qui nous a permis d’avancer plus rapidement que si j’avais été seul mais aussi de partager nos connaissances acquises sur le court laps de temps qui était dédié à ce projet.

Depuis le dernier article, le projet a bien évolué et c’est ce que j’aimerais vous présenter aujourd’hui.

Clash of bûches notre projet, est un jeu basé sur le principe simple de la gestion forestière. Mais cette gestion ne se cantonnera pas aux seules terres virtuelles créées ou générées pour l’occasion. Dans notre jeu il sera question de faire croitre son empire du bois dans le monde entier en explorant plusieurs paysages connus comme inconnus.

mondeVous débuterez avec en poche quelques billets et une petite exploitation forestière que vous devrez gérer pour le mieux.

La semaine passée j’ai pu ajouter au jeu un système de pousse de la forêt. Et j’en ai fait un petit GIF pour illustrer mes propos :

ClashOfBûches3Comme vous pouvez le voir un camion et une route ont été ajoutés. Le camion permet de vendre le bois à un prix fixe à tout moment de la partie, quant à la route elle ne sert pour l’instant qu’à faire jolie. Je réfléchie au moyen de la rendre praticable par le camion ou tout autres véhicules.

La victoire de ce dimanche pour laquelle je n’ai pas d’illustration est la possibilité de sauvegarder l’état de la carte une fois générée et de la régénérer plus tard exactement dans le même état (taille, placement, type d’arbre, sol).

Malheureusement je n’ai pas encore réalisé le système de sauvegarde propre aux éléments de l’inventaire, et à l’argent gagné, et c’est pourquoi je vais retourner à mon programme.

Dans le prochaine article j’essayerais de vous parler de notre choix dans l’utilisation d’Unity ou de parler plus technique (programmation, intégrations des objets 3D, etc).