Communauté

Novice : Je program...
 
Notifications
Retirer tout

Novice : Je programme un jeu, mon odyssée

1 Posts
1 Utilisateurs
0 Reactions
8 Vu
Sansucre
(@sansucre)
Eminent Member
Inscription: Il y a 1 an
Posts: 26
Début du sujet  

Novice : J'ai une idée, alors je programme un jeu

Bonjour,

Avec pour connaissance quelques légères notions de programmation en java et un peu de pratique en vba, je décide l'année dernière de programmer un jeu, j’avais une grossière idée du résultat en tête.

Étant un employé, je m'y attelle essentiellement et tôt le matin avant le boulot ou certains soirs. J’ai d’abord tenté en java. Après des premiers pas encourageants, j’ai été confronté à mon manque de connaissance. En y ajoutant un peu d’huile de coude, de nombreuses recherches Google, j’ai pu, un peu, avancé en cherchant un tutoriel adapté à mon besoin et à mon niveau. Mais arrivé à un moment, finalement, pas si éloigné du départ, je me suis retrouvé bloqué par mon impossibilité, par manque de compréhension et de contenus pédagogiques, a adapter des exemples à mon cas. Je manquais de connaissances pour construire les étapes nécessaires aux résultats voulus, et je ne trouvais pas les explications.

Au bout de 6 mois, frustré, j’ai dû faire une pause, je ne comprenais pas pourquoi c’était si difficile, pour si peu de résultat, ça n’était pas logique, d’autant plus qu’après de nombreuses heures de code je n’avais pas l’impression d’avoir vraiment progressé.

Alors j’ai décidé de tout revoir : le Java, et les cours, tutos, que j’avais à disposition, n'étaient pas adaptés à mon projet aux vues de mes capacités. A force de faire des recherches google et youtube je recevais certaines vidéos ayant pour sujet la formation à la programmation, dont celle de David. Étant déçu de Java, j’ai commencé à regarder ses vidéos concernant le Lua … et à m’y essayer.

Au bout de quelques heures de pratique, j’ai décidé que je coderai en Lua et je me suis abonné à GameCodeur. Les explications claires, avec des résultats pratiques à chaque étape de cours, m’ont convaincu.

Au bout d’un an de Lua, j’ai toujours le même projet, je me considère toujours comme novice, mais je suis satisfait.

Voici quelques lignes sur mon projet et ce que je réalise :

Je souhaite créer un jeu 2D en vue du dessus, évoluant dans des labyrinthes. Les labyrinthes doivent s’auto-générer à chaque niveau, pour rendre chaque partie unique.

J’ai créé le code du labyrinthe et dessiné mes tuiles des murs(pas satisfaisant pour un résultat visuel final, mais très bien pour avoir un rendu en cours de programmation), mes parois sont du basalte, j’ai rapidement dessiné des espèces de cercle tordu censé représenter mon perso principal, une cellule.

Puis, j’ai codé le déplacement de mon perso dans le labyrinthe, avec les collisions, j’ai programmé le défilement des images de mon perso, pour l’animer un peu. J’ai programmé une entrée, une sortie, permettant de passer d’un niveau à un autre, où chaque niveau est un nouveau labyrinthe.
Mon labyrinthe est de type parfait, ce qui ne me satisfait pas, je trouve les possibilités de fuite des personnages limitées : je programmé un cassage de mur aléatoire après la création du labyrinthe.

J’ai ajouté un, puis des ennemis, je les ai aussi animés. J’ai créé un semblant de menu avec 3 boutons cliquables dont un faisant commencer la partie.

Les choses sérieuse allait commencer pour moi : programmer les déplacements et états des ennemis :

J’ai intégré 2 méthodes de déplacement automatique pour mes ennemis à mon labyrinthe : une s’inspirant du déplacement des fantômes de pacman (« GhostFinding ») et une méthode de PathFinding. Puis je les ai modifiés pour que le rendu du déplacement soit pixelisé et non en case par case.

Ensuite j’ai programmé plusieurs états pour les ennemis tel que l’exploration, la fuite, la recherche façon chasseur : précise elle se fait au pathfinding, une autre recherche à « l’oreille » peu précise ce servant du Ghostfinding et d’autres encore , il doit y en avoir un peu plus d’une dizaine, dont des états pour le fight et la défense, ce qui m’a pris beaucoup de temps. Cette étape n’est pas terminée loin de là, mais satisfaisante.

Entretemps je me suis aperçu que ma gestion des collisions prenant en compte les bug de latence ne fonctionnait pas alors que j’y ai passé pas mal de temps aussi, le bug n’est pas bien géré : je m’y attèlerai plus tard, ça se déplace en tout cas.

Je reviens à la structure de mon labyrinthe : je veux que les couloirs puissent évoluer en cours de niveau, des objets de décors puissent apparaître créant des murs, et d’autres murs puissent se détruire. Je dessiné l'obstacle qui devra apparaître et le place sur mon laby : ça ne va pas, c'est très moche. La taille de l'obstacle, pourtant adapté à celle du mur, rend l'obstacle ridicule. Je tente de doubler la taille de mes images de murs, les murs seulement, les personnages gardent leur taille, le rendu visuel est meilleur,mais je viens de créer de nombreux problèmes dans mon code, déjà conséquent, liés à la nouvelle taille des images des murs dans les calculs de positions et de déplacement. Soit il me faut revoir tout une très grosse partie qui fonctionnait bien, soit … je trouve une solution : je garde la taille initiale, mais dans la liste contenant la grille du labyrinthe je double les murs, seulement les murs, je galère un peu, dû au problème des valeurs attribuées à une liste qui quand elles sont copiées puis modifiées, modifie aussi la valeur d’origine, la valeur n'étant pas réellement copiées, c’est l’emplacement de la valeur qui est copiées, mais j’y arrive : le rendu me plaît et ça marche.
Alors je code l'apparition aléatoire de l'obstacle dans le labyrinthe, et comme cela risque de créer un labyrinthe avec des couloirs fermés : je code un contrôle d'accès aux cases et si l'accès est compromis alors le code doit trouver des murs à casser pour rendre l'accès possible. Pas sans galère mais ça marche et c'est là où j'en suis aujourd'hui.
La masse de travail restant à accomplir me semble énorme mais réalisable.
A la fois frustré et motivé, mon projet a progressé mais est encore loin de l'allure qu'il devra avoir.
Il me reste encore tant à faire.


   
Citation
Share:

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.