Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 17 sur 17
  1. #1
    Bonjour les canards.

    Je m'excuse de vous déranger, mais j'ouvre un petit sujet pour vous parler d'un projet que je tente de mener à bien : un petit roguelike hack and slash à l'ancienne.

    Alors pour l'instant, le projet n'en est qu'à ses balbutiements, mais je voulais me motiver un peu en présentant mon travail à la foule.

    Alors pour l'instant, les travaux se concentrent principalement dans la génération aléatoire de labyrinthe, pour ceux que ça intéresse, je me suis principalement inspiré du premier algorithme que l'on peut trouver sur wikipedia, bien que je pense en implémenter d'autres à l'avenir.

    Bref, voila mon labyrinthe au départ :



    Simple implémentation de l'algorithme de base.

    Et après une petite couche supplémentaire pour rajouter des salles, voilà ou j'en suis :



    Salles et portes créées aléatoirement /o/ .

    Bref, j'espère poser assez rapidement une petite tilemap sur ce bordel pour le rendre plus sympathique et commencer à mettre en place les premiers éléments de gameplay.

    Je suis ouvert à toutes les critiques donc n'hésitez pas.

    Je tente aussi de tenir un blog sur le développement de ce projet, dont voici le lien. Vous pourrez trouver, via le plugin Unity, un générateur de Labyrinthe interactif.

    Voila, c'est tout, merci de m'avoir lu!

  2. #2
    Je te conseille de trouver un algo beaucoup plus simple parce qu'avec un labyrinthe comme celui-ci je pense pas qu'il y ait du monde qui jouera plus de dix minutes.

  3. #3
    Plus spécifiquement, ce sont les sans issues qu'ils faut minimiser au maximum pour la simple raison que le roguelike se base aussi sur un minimum de strategie ce qui implique un déplacement calculé et maîtrisé. Hors, si tu mets des sans issue à chaque coin de couloir, le joueur va pas jouer 3 parties a ton jeu.

    Il vaut mieux faire tourner un rond en joueur avec option de mini map éventuelle.

    Un très bon site pour les algos de labyrinthe

    http://www.astrolog.org/labyrnth/algrithm.htm#perfect

  4. #4
    Merci pour vous retour, j'ai pris en compte vos remarques et modifié le bordel en conséquence.

    D'ailleurs, merci beaucoup pour ce lien très instructif Elriks.

    Bref, pour avoir un labyrinthe un peu plus "jouable", j'ai implémenté le Recursive Backtracker, pour la simple et bonne raison que c'est l'algorithme qui génère le moins de "dead-end". Encore une fois, je verrai à l'avenir si je change/modifie l'algorithme.

    Bref, désormais j'arrive à des labyrinthes de ce genre :

    Aussi, je me suis un peu pris la tête à gérer 3 milliards de cas particulier, mais j'ai réussi à poser des textures sur mon labyrinthe via un peu de tilemapping, et en utilisant une tileset que l'on peut trouver ici

    Le résultat en image :

    Bon, évidemment, l'environnement est encore assez pauvre car je répète tout le temps les mêmes textures, mais j’ajouterai un peu de "grain" pour faire varier les textures utilisées, et je m'attaquerai également à l'intégration d'effets de lumières dynamique pour mettre en place un début d'ambiance.

    Mais la suite immédiate du projet, c'est de rajouter un personnage qui se déplace bien dans les limites du labyrinthes, et peut être des ennemis, via des algorithmes de pathfinding tel que A* et autres.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  5. #5
    Bon, ce que je poste n'est pas des plus excitant puisqu'il manque encore la partie fondamentale qu'est la détection des collisions, mais vous pouvez voir ici mes efforts pour réussir à intégrer les steering behaviors :

    http://www.landofthebytes.com/?page_id=420

    Les steering koikoukesse? Pour ceux qui, comme moi il y a une semaine, n'ont aucune idée de quoi je parle, et bien, il s'agit tout simplement d'un terme qui regroupe un ensemble d'algorithme, qui, une fois mis bout à bout, permettent de gérer le comportement d'unités en mouvement.

    Pour ceux qui veulent en savoir plus :

    http://gamedev.tutsplus.com/tutorial...ehaviors-seek/
    http://www.red3d.com/cwr/steer/

    Voila, c'était juste pour dire que je suis pas mort :D

    A noter que j'ai déjà du A* de prêt pour ensuite utilisé ces steering behaviors, mais bon, j'ai encore pas mal d'optimisation à mettre en place.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  6. #6
    Bref, je n'ai pas encore terminé d'implémenter les steering behaviors, cependant, j'ai pris le temps d'implémenter quelque chose que je voulais faire de longue date : les détections de collisions dans un environnement 2D (voir 3D) ...

    Bon, je sais, Unity dispose déjà des fonctions pour résoudre ce genre de problématique, mais bon, j'avais pas envie de bricoler alors j'ai préféré tout refaire à la main.

    Pour ceux que ça intéresserait, vous pouvez voir le résultat de mon implémentation ici http://www.landofthebytes.com/?page_id=427, et voici divers liens qui m'ont été utile :

    http://gamedev.tutsplus.com/tutorial...-axis-theorem/
    http://www.codezealot.org/archives/55
    http://www.metanetsoftware.com/technique/tutorialA.html

    Voila, à la prochaine, avec, je l'espère, un peu d'IA fonctionnel :D
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  7. #7
    J'espère que ça ne dérange pas trop que je mette à jour mon topic malgré le peu de réponse, mais je souhaitais mettre en avant quelques légères avancées dans le domaine de l'ia.

    Bon, je suis encore loin d'avoir quelque chose de fonctionnel, mais j'avance quand même à mon rythme dans toute cette mélasse.

    Vous pouvez voir ici mes efforts pour intégrer les steerings behaviors : http://www.landofthebytes.com/Steeri...ors/Index.html

    Au programme, boids (ou flocking), formations, et détection d'obstacles.

    Tout ceci reste encore un peu sommaire, mais je progresse!

    Voila, à plus, et hésitez pas à me poser des questions sur ces algorithmes si vous en avez.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  8. #8
    Salut, j'ai deja fait un labyrinthe aléatoire et je connais aussi pas mal le A*, j'ai fait un making-of sur mon jeu de labyrinthe ainsi qu'un tuto sur comment utiliser a* pour le pathfinding sur ma chaine youtube.

    Si tu veux, tu peux t'en servir pour avancer plus vite.

    A priori tu code sur unity donc tu vas retrouver tes petits, par contre je code en js donc si tu code en c# il faudra t'adapter.

    Bon courage.

  9. #9
    Merci pour ton message et pour l'aide!

    Par contre, j'ai également déjà du A* de fonctionnel, donc je n'aurai sans doute pas besoin de ton aide sur ce sujet. Par contre, je compte tenter d'aller un peu plus loin que du simple A*. J'hésite à implémenter le a star jump point search, et à lisser les chemins obtenus. Aussi, comme je vais avoir un terrain assez grand, je pensais passer un petit coup de Quadtree pour segmenter le terrain, et gérer 2 niveau de pathfinding.

    Mais bon, pour l'instant je suis encore avec mes steering behavior (il me reste à implémenter le behavior "path" et "queuing ", et je devrais ensuite pouvoir optimiser mon a* et brancher mes steering behaviors sur mon pathfinding.

    Bref, encore pas mal de taf en perspective :D
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  10. #10
    Oui c clair que tu t'est mise la barre haute.
    En ce qui concerne le pathfinding, tu peux directement, et sans code supplémentaire, créer des chemins aléatoires (regarde la composante alternative path), ainsi que "lisser" le chemin (composante funnel voir simple smooth).

  11. #11
    Coucou tout le monde. Un petit message pour préciser que je ne suis pas mort, et que je continue de travailler sur mon projet!

    J'en profite pour modifier le titre du sujet puisque le projet a désormais un nom "Steaming Steel".

    Aussi, vous pouvez voir l'état du projet en suivant ce lien : http://landofthebytes.com/SteamingSteel/Desktop.html (Unity requis).
    Voila!

    Comme vous pouvez le constater, j'ai actuellement réussi à utiliser une autre méthode pour générer un terrain, gérer les collisions entre le personnage et le terrain, insérer une première arme, et générer des ennemis (oui oui, les trucs roses c'est des ennemis).

    Bref, il me reste encore énormément à faire, mais les éléments commencent à se mettre en place, je posterai sans doute des articles avec des détails plus techniques pour ceux souhaitant savoir comment réaliser certains éléments!

    Et un petit screenshot pour ceux ne possédant pas Unity :


    Voila, merci et à plus!

    Edit : Sauf que je sais pas comment renommer un sujet ici :D

    Edit 2 : Pour ceux qui testent le build, zqsd pour les déplacements et clic gauche pour tirer
    Dernière modification par Cuthalion ; 24/10/2013 à 15h53.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  12. #12
    Bon, je m'excuse si je spamme un peu trop mon propre topic, mais c'était pour dire que j'ai réussi à intégrer mes steering behaviors à mes ennemis, ce qui veut dire que désormais ils se déplacent (bon, d'une manière très stupide, je vous l'accorde, j'ai encore pas mal de réglage à mettre en place) .

    Sinon, il se peut que le jeu "plante" à la première frame après avoir appuyé sur new game. Rafraîchissez la page si jamais ça devait arriver, désolé, je vais tenter de voir ce que je peux faire contre ce bug.

    http://www.landofthebytes.com/Steami...l/Desktop.html
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  13. #13
    Au programme cette fois :

    * Ajout d'une bordure autours du niveau de manière à ne pas aller dans le vide
    * Ajout d'un premier comportement aux ennemis : Une fois à portée, les ennemis vont se mettre à vous suivre
    * Modifications des règles de génération du labyrinthe d'un point de vue graphique
    * Ajout d'une "sortie", une fois que tout les ennemis sont mort, vous pouvez l'emprunter (c'est le truc gris sur fond blanc)
    * La sortie génère un nouveau niveau.
    * Les ennemis ont des points de vie



    Voila, encore pas mal de taf mais ça commence à prendre forme!

    A noter, il est possible de passer à travers certains passages en "diagonale" :D c'est lié au fait que je fais des tests de 8 connexités au lieu de 4, enfin voila!

    Le lien pour tester : http://www.landofthebytes.com/Steami...l/Desktop.html
    Dernière modification par Cuthalion ; 27/10/2013 à 00h37.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  14. #14
    Bon, même si je n'ai pas beaucoup de succès, je continue de mettre à jour ce sujet avec mes petites avancées :

    * Ajout d'un nouveau type d'ennemi : Lorsque ce dernier vous détecte, il emprunte une trajectoire circulaire autours de votre personnage et vous tire dessus.
    * Lorsqu'un adversaire meurt, il lâche derrière lui du métal (ou autre chose)
    * Petit effet de rebond lorsqu'un élément est looté par un ennemi
    * Le joueur peut attraper le métal
    * Affichage d'un compteur de métal
    * Modification de la génération de manière à avoir, en théorie, une zone de jeu principale relativement importante
    * Le métal sera une ressource que le joueur devra gérer pour améliorer ou construire de nouvelles armes à mesure qu'il progresse dans les niveaux


    Et euh, je crois que c'est tout pour aujourd"hui. J'ai aussi réussi à débugger un truc, mais forcément, d'autres ce rajoutent :/ Unity n'est d'ailleurs pas très pratique à ce niveau là, puisqu'il n'est, à ma connaissance, pas possible de faire du pas à pas pour suivre l’exécution du code.

    Bref, pour ceux qui voudraient tester ma build (pas toujours ultra stable ) , c'est toujours par ici : http://www.landofthebytes.com/Steami...l/Desktop.html
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  15. #15
    C'est sympa, le comportement des ennemis a l'air assez cohérent (J'ai quand même parfois l'impression qu'ils restent un peu bloqués).
    C'est bien de voir que ça prend forme peu à peu et que ça a bien évolué depuis le début.

    Bon courage pour la suite!

  16. #16
    Merci beaucoup pour le commentaire!

    Effectivement les ennemis ne sont pour l'instant pas ultra intelligent, ils ont tendance à rentrer la tête la première dans les obstacles, mais comme en théorie, dans le produit final, le joueur aura un champ de vision, ce genre de détail sera moins visible, même si je compte malgré tout améliorer le tout.

    Sinon, je m'excuse pour le manque d'actualité, j'avoue m'être pris une petite semaine de vacance ou je n'ai pas vraiment avancé mon projet :D .

    Néanmoins, j'ai repris le développement depuis lundi, et au programme :

    * Ajout de coffres (les trucs marrons) sur la carte qui peuvent être ouvert par le joueur pour obtenir différents bonus qui s'additionnent (il faut appuyer sur F pour ouvrir un coffre)
    * Ajout donc de divers bonus : Vitesse d'attaque, vitesse du projectile, capacité de rebond, taille, directions
    * Quelques corrections en vrac sur les ennemis et la génération de niveau : En théorie, il ne devrait plus y avoir d'ennemi paumé dans des murs ou en dehors de la carte.

    Bref, vous pouvez toujours tester le jeu ici si vous le souhaitez : http://www.landofthebytes.com/Steami...l/Desktop.html

    Les contrôles : zqsd pour les déplacements, clic gauche pour tirer, F pour ouvrir les coffres.

    Voilà voilà!
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

  17. #17
    Hello, tout le monde, c'est encore l'heure de spammer mon sujet ;D

    Au programme de cette mise à jour :

    * Système de bonus repensé. Seul 3 bonus subsiste : Power, qui augmente la puissance de l'arme, FireRate, qui améliore la cadence de tir, Special, qui permet d'améliorer la "particularité" d'une arme
    * Le bonus "Special" de l'arme principale augmente le nombre de directions dans lesquelles les projectiles sont propulsés.
    * Ajout d'une capacité spéciale sur l'arme, via le clic droit : Convergence des tirs dans la direction du curseur
    * Ajout d'une nouvelle arme (encore très wip mais bon ;D ) le shotgun : courte portée, grosse zone d'effet, tir capable de toucher plusieurs ennemis à la fois, recul des ennemis plus important que pour les autres armes.
    * Le joueur a désormais la capacité de "Dash" dans la direction du curseur. Augmentant ainsi sa vitesse de déplacement, et le rendant invulnérable (mais comme il est déjà invulnérable ... oui, promis, je m'occuperai de ça bientôt)
    * Corrections de bugs en vrac et diverses améliorations, les détections de collisions entre projectiles se font désormais à l'aide d'une "box" et non d'un simple point...

    Voila, pour changer d'arme, il faut appuyer sur les touches 1 et 2, et le dash s'active en appuyant sur la barre d'espace . Encore une fois, le prototype est consultable ici : http://www.landofthebytes.com/Steami...l/Desktop.html

    Voila voila!
    Dernière modification par Cuthalion ; 08/11/2013 à 16h30.
    Génération de labyrinthes et autres projets sur mon petit blog : http://www.landofthebytes.com/?lang=fr

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •