Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
Publicité
|
|
Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Salut à tous, Comme je le disais sur le topic de RatedJosh, j'avais pour projet de faire des vidéos axées sur la programmation. Il me manquait le support de base, à savoir un jeu en tant que fil rouge sur lequel articuler l'ensemble de ces vidéos. Les supports pour les vidéos et/ou les résultats à obtenir seront mis à disposition gratuitement sur GitHub. Le but ne sera pas "d'obliger" les personnes à programmer la même chose que moi mais aussi de donner des idées ou des astuces pour partir sur un projet dérivé. J'ai commencé à esquisser un planning de vidéos. Il devrait faire l'objet d'un bon nombre de vidéos pour les rendre suffisamment digestes. Il ne sera pas question de sortir des vidéos de 3h de programmation ! Je vous présente à l'avance le planning auquel j'ai pensé et s'il y a des sujets qui méritent plus d'explications selon vous, n'hésitez pas à me le signaler. Tout est bon pour expliquer les choses et si quelque chose est mal compris pour vous, ça peut aussi l'être pour les autres !
- A. Présentation générale sur ce qu'est un langage de programmation (voir ici : https://www.youtube.com/watch?v=4iavWsg6vpY )
- B. Les bases de la programmation (langage C# pour ensuite aller vers la programmation dans Unity) :
- Installation de l'environnement de travail (Visual Studio Community sous Windows - existe aussi pour MacOS)
- Présentation rapide du langage C#.
- Notions de base : variables, calculs simples, conditions, boucles, fonctions, etc.
- Mini-projet : programmation d'un chifoumi en ligne de commande en Python.
- C. La programmation orientée objet (POO pour les intimes, toujours en C#) :
- Notions avancées : classe et structure, attributs, méthodes, objet, références, héritage, composition, etc.
- Initiation à l'architecture logicielle : diagramme de classe, design pattern, bonnes pratiques, etc.
- Mini-projet : programmation d'un jeu de rôles (RPG) en ligne de commande.
- Défi : programmer le chifoumi de la partie B en orienté objet.
- D. Découverte de Unity
- Installation et lien entre Unity et Visual Studio Community, documentation sur Unity.
- Tour rapide de l'interface graphique, options et paramètres, Asset Store, export d'une application, etc.
- Créer des assets adaptés à un jeu vidéo dans Blender (lowpoly, notion de niveau de détail, ...).
- Importer des assets 3D créés dans Blender (comparaison des formats OBJ, FBX et glTF).
- Premiers scripts C#.
- Fonctionnement d'un GPU (étapes de rendu, c'est quoi un "shader", ...).
- [Suite à mieux définir : animations, entrées clavier/souris, gestion de la caméra, gestion des scènes...]
- Mini-projet : programmer un jeu en 3D à la troisième personne à gameplay asymétrique (de type Among Us).
Chaque point ne fera pas nécessaire l'objet d'une vidéo. Ça va naturellement se mélanger même s'il y aura peut-être quelques passages de "cours magistraux" sans trop d'application concrète. J'essaierai d'en faire le moins possible parce que ce n'est pas forcément très fun à regarder. Je trouve que l'exemple et la pratique apprennent mieux que de longues explications. Par exemple dans la partie B, on programmera un chifoumi avec des explications sur ce qu'est une variable, ce que ça contient, ce qu'on peut faire avec... ainsi de suite avec les conditions, les boucles, les fonctions. Il en sera de même pour la partie C avec la programmation d'un autre mini-jeu non graphique. Vous pouvez noter que j'ai proposé chaque fois des jeux de type différent en guise de mini-projets. J'aimerais que cela permette aux personnes qui suivront ces vidéos de mélanger ces projets. Pourquoi pas reprendre ce qui a été vu pour coder le jeu de rôles basique et en faire un RPG 3D dans Unity à partir du mini-projet pour Unity ? A priori je vais entamer le "tournage" ce week-end. J'aimerais en produire quelques une en avance pour les publier petit à petit et me laisser du temps pour la production des suivantes. Donc elles ne vont pas arriver tout de suite. J'ai tout de même ouvert ce topic pour récolter d'éventuels retours par celles et ceux qui seraient intéressés de suivre ces vidéos. Comme je le disais au début du post, si jamais vous aimeriez qu'un sujet soit abordé ou que vous voudriez qu'un des points mentionnés soit assez longuement expliqué, n'hésitez pas à me faire remonter l'information ! 
Contribution le : 31/03/2022 22:31
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 20/05/2015 22:02
Post(s): 312
|
Hello Bibi09, Je n'avais pas vu ton topic désolé... Tu as tout mon soutien 
Contribution le : 03/04/2022 18:55
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Coucou Josh ! Merci beaucoup, ça fait très plaisir.  J'ai commencé des préparatifs pour la première vidéo dont le code du jeu "Chifoumi" final. Là j'essaie de voir comment expliquer facilement les principales bases d'un programme comme point d'entrée. Les variables, les conditions, les boucles et les fonctions pour commencer. Ça risque de ne pas être très pertinent si on sait déjà un peu coder, il faut cependant bien permettre à tout le monde d'accrocher les wagons ! Plusieurs vidéos sur Youtube le font mais en se basant sur un langage spécifique, et différent de C#, ou d'une façon que je n'aime pas trop. Je vais tâcher de faire ça d'un point de vue général avec dans la foulée un exemple en langage concret (C# et peut-être d'autres comment Python).
Contribution le : 03/04/2022 20:11
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Hola ! Je viens pour faire une petite mise au point. Clairement je me dis que l'enregistrement de vidéos n'est pas compatible avec mon emploi du temps actuel. Je suis rentré dans une phase assez intense de travail afin de préparer une démo avec les HoloLens 2 pour des salons. Résultat : je fais des journées assez longues, heureusement on a des horaires flexibles !
Du coup, je vais tout simplement commencer par faire un support écrit qui est bien plus rapide à réaliser. J'y joindrai plus tard des vidéos qui reprendront le contenu écrit. De toute façon les deux formats me semblent utiles et complémentaires. Peut-être qu'elles prendront le format de Shorts sur YouTube, ça sera à définir quand ça sera possible à faire.
Contribution le : 14/04/2022 10:17
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 19/03/2016 15:30
De Belgique
Post(s): 2030
|
Pour être efficace, je te propose de contacter xanatos67. Tu y trouvera sa chaine youtube, je pense que vous avez la même vision et peut-être que vous pourriez vous répartir les tâches.
Contribution le : 15/04/2022 10:25
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Hello, ça fait un bail mais ça commence à prendre forme !  J'ai repris la totalité de la base que j'avais écrite. Je n'aimais pas la façon dont j'abordais certains sujets et/ou pour expliquer le fonctionnement de l'ordinateur en plein milieu du code. Donc, je refais tout d'une page quasiment blanche. Quasiment car je suis parti d'un document que j'avais écrit il y a de longs mois déjà où je faisais un historique des outils de calcul (j'en avais partagé le début sur le Discord de meltingman à l'époque). J'ai complété ce document jusqu'à aboutir à l'époque actuelle. Puis de là, ça permet d'expliquer/vulgariser le fonctionnement du CPU et de la RAM. Pour finir, un historique incomplet de certains langages de programmation qui ont marqué une étape importante et/ou qui sont de nos jours encore très populaires. Voici la page du site : https://hardware-x-software.github.io/CSharp/Il reste de la mise en forme à finaliser mais le contenu me plaît. Toutefois si des personnes voient des erreurs dans le texte, n'hésitez pas à me le faire remonter pour corriger ça. Vous le verrez, pas encore de code puisque j'ai effacé complètement l'ardoise. Même si j'avais des notions sur certains points abordés, cette introduction m'a pris énormément de temps. Il m'a fallu faire pas mal de recherches pour améliorer mes connaissances ou les rectifier, bien comprendre le fonctionnement d'éléments complexes pour l'expliquer aussi simplement que possible, etc. Maintenant que l'introduction présente à la fois des langages et le fonctionnement des principaux éléments de l'ordinateur pour la programmation, il va être possible de partir sur comment programmer !
Contribution le : 11/07/2022 14:41
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 19/03/2016 15:30
De Belgique
Post(s): 2030
|
Salut Bibi09, Je vais prendre le temps de lire l'introduction et je t'apporterai des retours. Un point que je trouve dommage en ayant parcouru en diagonale, et qui peut être en lien avec ce que tu expliques, est que tu n'as pas cité le "premier jeu vidéo", Tennis for Two (faussement comparé à Pong), réalisé avec un oscilloscope. Je te mets deux liens comme source: https://espritgamer.com/le-premier-jeu-video/https://fr.wikipedia.org/wiki/Tennis_for_Two
Contribution le : 12/07/2022 09:05
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Salut Redstar, Merci pour ton retour. Je note ta remarque pour voir s'il serait possible de faire un historique des programmes réalisés avec/pour ces machines. Tu veux sans doute parler plus spécifiquement de l'évolution des jeux vidéo, des techniques de programmation et des GPU. Ce serait quelque chose de particulièrement intéressant à proposer ! Ça me semble être une suite logique avec ce que j'ai déjà fait pour l'intro, mais je n'y avais pas du tout pensé à ce stade-là !
Encore merci pour ton retour !
Contribution le : 12/07/2022 10:39
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 19/03/2016 15:30
De Belgique
Post(s): 2030
|
Salut bibi09,
J'ai terminé de lire ton introduction.
Avant de commencer, j'ai repéré des fautes de frappe et "des moments de fatigues", je te les rapporte pour que tu aies une rédaction au top:
----------------------- ...Bien que Pascal voulait corriger sa première pascaline en la simplifiant...
...Le code Baudot permettait de représenter chaque caratère...
...Une unité arithmétique et logique, aussi appellée ALU en anglais,...
...de missiles ballistiques Minuteman II, puis le célèbre programme de, entre les missions ballistiques et spatiales,...
...électroniques. De meme les instruments ...
...à une autre entreprise de produire des clones de ses processeurs car IBM exigeait de ses clients deux sources d'approvionnement. C'est ainsi qu'AMD a...
...grand public ainsi que leur jumeaux dédiés aux professionnels...
...AMD introduit son premier processeur x86 indépendemment d'Intel,...
...Les performances des processeur multicœurs...
...Apple lance les puces M1 Pro et M1 Max encore plus puissantes et le M2 sort en 2022 plaçant la barre toujours plus haute...
...soustraction, division et mulitplication) sur les nombres...
...unités arithméthiques sont quant...
...synchroniser l'ensemble : à chaque cycles, les milliards de...
...(cache L1). Le registres ferment la marche en ne faisant que quelques octets...
...conçues jusque là sont dédiées à une résoudre un problème spécifique...
...il fallait constuire une nouvelle machine...
...magnétique et les a identifié de façon unique avec un code...
...Les classe peuvent être héritée et mises en relation...
...C++ pour symboliser l'amélioration du langage C et s'enrichie de ...
...vont proposer plusieurs paradigmes qu'il se possible de mélanger dans un même... -----------------------
Pour la partie technique: Ton introduction est enrichissante, moi qui suis technicien je comprends ce que tu expliques, mais ça me semble trop long. Je veux dire par là que je me suis mis dans le rôle de la personne qui désire apprendre Unity et il se pose la question "ok, mais en quoi cela va-t-il m'aider dans le développement ?".
Je t'avoue que j'ai eu des moments d'ennuis, à cause du fait qu'il y a beaucoup d'actrices et d'acteurs qui ont façonné l'histoire et textuellement, c'est long, même si bien expliqué.
Par exemple, le cache du processeur: ok, il y a 3 niveaux et la mémoire diffère des modèles. Ce que tu apportes permettrait de déterminer quel processeur j'ai besoin pour réaliser de l'infographie ou du gaming mais est-ce un élément important qui va m'aider à programmer de manière optimale ? En cas de problèmes techniques, est-ce que ces connaissances me permettront d'expliquer la raison ?
Garde à l'esprit que ton fil conducteur, c'est Unity et son apprentissage. Tout ça pour dire que si l'introduction fait fuir le lecteur, il va passer à côté de la partie qui l'intéresse et tu risques de ne pas être efficace à travers ton introduction.
Ça reste mon avis, j'espère que tu collecteras d'autre avis pour avoir quelque chose qui convient le plus possible à qui tu t'adresses.
Contribution le : 14/07/2022 10:22
|
|
|
Re: Apprendre à programmer avec Unity |
|
OverdOzed 
Inscrit: 23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3184
|
Hello Redstar, merci pour ton retour.
Avant de commencer à voir comment aborder le sujet de la programmation, j'ai cherché pas mal de tutoriels. Beaucoup partent bille en tête pour expliquer ce qu'est une variable, un tableau, une fonction... Les pires, et ils sont nombreux, sont ceux qui fournissent un code prémâché que l'utilisateur doit simplement recopier sans réfléchir. C'est le genre de chose que je veux absolument proscrire de mes articles. Le lecteur doit être acteur, il doit réfléchir constamment. Je pense qu'une personne qui n'est pas assez curieuse sur le fonctionnement d'un ordinateur ne pourra pas apprendre correctement à programmer.
La programmation a cela de compliqué que n'importe qui peut l'apprendre dans son coin. Il est donc très et trop facile d'acquérir un semblant de connaissances sur le sujet et de partir du mauvais pied, de prendre de très mauvaises habitudes et de passer complètement à côté de certains automatismes bénéfiques. Or, on le sait, les mauvaises habitudes sont très difficiles à effacer.
Je suis fondamentalement contre la société actuelle que "nous" (l'Humain) avons développée au fil des décennies, où tout doit aller vite, être immédiat. J'aime personnellement prendre le temps de faire les choses et de les faire bien. L'apprentissage par explication ne peut pas être instantané, en quelques clics ou quelques minutes. Je ne vois pas pourquoi il faudrait que j'aille directement droit au but en passant sur des notions importantes sous prétexte que le lecteur n'en verrait pas le bénéfice immédiat.
Le but de cette intro est en effet de fournir un bagage minimal. Déjà, comment en est-on arrivés à avoir nos ordinateurs actuels ? Quel cheminement, quels objectifs, bref pourquoi a-t-on des ordinateurs ? A travers ces questions, je souhaite attiser la curiosité du lecteur. Pour le dire autrement, l'inciter à se cultiver sur le domaine qu'il veut découvrir. Quand on veut apprendre à faire quelque chose, il est indispensable de s'intéresser un minimum à l'outil qu'on va utiliser. C'est peut-être long et barbant mais si on n'accepte pas de lire un texte qui fourni clef en main un historique, je pense qu'on prend déjà une mauvaise voie.
Concernant le fonctionnement du CPU, attention à ne pas passer à côté du nom du site et du message sur l'accueil. Il me semble donner le ton dès le départ : j'y parle de programmation mais aussi de matériel ! Et là encore, c'est ma façon d'aborder l'apprentissage de la programmation. Il me semble impératif d'avoir un bagage minimal - ici il est très succinct - sur le fonctionnement d'un processeur et de la mémoire pour le programmer correctement. Sans ça, on peut faire prendre l'habitude de mal faire certaines choses. Comme je le disais, mon but est de correctement cadrer pour éviter au maximum la prise de mauvaises habitudes.
Tu me demandes à propos du cache du processeur : "est-ce un élément important qui va m'aider à programmer de manière optimale ?". Justement, si j'en parle, c'est que la réponse est "oui". J'en parle ici car ça fait la suite logique avec le sujet des registres abordé. J'essaie d'optimiser la fluidité de mon propos en évitant au maximum les aller-retours pour le lecteur. Quand j'en aurai besoin, il me suffira de proposer aux personnes qui en auraient besoin d'aller lire ce paragraphe sans être obligé de faire une coupure dans mon explication de la programmation.
Je peux très bien dire qu'il est mieux de lire un tableau 2D colonne par colonne en C#. Point. Mais pourquoi ? Et si on ne l'explique pas, est-ce que le lecteur va s'en souvenir et faire attention dans ses programmes suivants ? Si maintenant j'explique que le C# est un langage dit "row-major", c'est-à-dire pour lequel les données d'une même ligne dans un tableau sont contiguës en mémoire. De plus, quand on accède à une donnée, le processeur charge aussi les autres données proches dans son cache pour anticiper une utilisation prochaine. On comprend mieux alors que lire les données colonne par colonne (donc successives en mémoire) est le plus optimal pour avoir un code efficace, car le processeur n'a pas besoin d'aller chercher encore des données qu'il n'a pas. Et par la même occasion, que toutes les structures de données (tableau, liste...) ne sont pas à utiliser n'importe quand et n'importe comment selon la situation.
Pour bien comprendre ma vision de la didactique, je travaille énormément sur la fluidité des chapitres et les suites logiques des thématiques abordées. Il m'est absolument impossible de parler d'un tableau de données sans expliquer comment fonctionne la mémoire, et il ne m'est pas possible d'expliquer la mémoire sans parler du processeur. Sinon j'aurais l'impression de brûler des étapes ou de ne pas pouvoir approfondir autant que possible les choses. Si dans la majorité des langages, on utilise l'indice 0 et non 1 pour le premier élément d'un tableau, ce n'est pas pour rien. Et ça, soit on laisse le lecteur dans l'ignorance totale, soit on ne peut pas l'expliquer si on n'a pas au préalable expliqué l'histoire des ordinateurs et leur fonctionnement.
Enfin, des langages comme Python ou C# sont certes des langages de haut niveau, éloignés des considérations matérielles. Cependant, ils héritent d'une histoire commune à tous les langages de programmation. Il me semble là encore nécessaire de bien comprendre que tous les langages, qu'ils soient récents ou non, abstraits ou non, ont tous des points communs pour des raisons purement historiques en s'inspirant les uns des autres, pour palier les faiblesses de leurs prédécesseurs, etc.
Donc pour résumer, AMHA, il m'est impossible d'expliquer **correctement** la programmation sans entrer a minima dans des détails techniques. Ou bien je laisse plein de vides que la personne cherchera - au mieux si elle est curieuse - à combler par elle-même et peut-être mal si elle ne trouve pas des explications claires à ses questions.
Je suis bien conscient que ma philosophie ne plaira pas à tout le monde. Cependant, comme je le disais il m'est impossible de faire les choses à moitié sans aller au fond des choses pour bien expliquer le pourquoi du comment. Cette introduction est certes longue, sans doute que d'autres personnes ne verront pas a priori le lien avec la programmation. Le "vite fait, mal fait", ce n'est pas dans ma méthodologie. Je suis cependant persuadé que ceux qui daigneront poursuivre la lecture comprendront que tout est lié pour faciliter leur apprentissage ; que tout ce qui est écrit jusqu'à présent est intimement lié à des notions qui seront vues et expliquées au moment de programmer. Ce n'est qu'en comprenant le pourquoi du comment que le lecteur pourra mémoriser et donc avancer efficacement dans son apprentissage.
Contribution le : 14/07/2022 17:20
|
|
|
Sujets récemment répondus |
|
|
|
Qui est en ligne
140 utilisateur(s) en ligne (dont 69 sur Forums) Membre(s): 0 Invité(s): 140 plus... Nouveaux membres
Dernier Ajout
Evènements à venir
|