[WIP] CourtCircuit

Répondre
EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

[WIP] CourtCircuit

Message par EmileF » 06 Oct 2018 17:33

Bonjour à tous

Voilà le dernier né de mes créations,
Voulez-vous l'essayer pour me dire si l'idée vous parait bonne.
Et si vous avez une idée pour un nom ce serait super.

voilà le lien :
https://drive.google.com/open?id=1mHDYz ... 4mnBfSYDM9

Dans ce jeu il faut déplacer mon personnage dans un labyrinthe pour déclencher des interrupteurs (cabines) qui, si le circuit est bien raccordé, permet d'ouvrir des portails, ou de débloquer des cadenas.

Le circuit peut être modifié, ce qui permet de mettre en contact des cadenas ou des portails inaccessibles au départ, en cliquant sur les boules fushia.

C'est un jeu de réflexion, les premiers niveaux sont très simples pour comprendre les mécanismes, les niveaux suivants devraient être de plus en plus difficiles.

Image
Dernière édition par EmileF le 06 Oct 2018 18:50, édité 8 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [WIP] CourtCircuit

Message par EmileF » 07 Oct 2018 13:16

Bonjour,

Vous ne savez pas à coté de quoi vous passez.

Si vous êtes tant soit peu amateur de casse tête vous devriez essayer.

je ne sais que vous dire pour vous tenter

voici la dernière version
https://drive.google.com/open?id=1mHDYz ... 4mnBfSYDM9
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [WIP] CourtCircuit

Message par djulio74 » 07 Oct 2018 15:31

Salut.
J'ai testé ton gamePlay, les 5 premiers niveaux.
C'est en effet le genre de jeux qui rendrait vite accro c'est sur! ;)
tu devrait cependant laisser au joueur de pouvoir choisir la taille de la fenêtre . Je suis par exemple en 1440x900 en résolution, et la fenêtre est légèrement mangée en hauteur.

Le premiers niveaux sont en effet clair et simple, Mais plus ça se complique, plus je trouve difficile de se rendre compte du circuit exact a fermer. Les câbles ( en noir) se croisent sur le même plan. peut être changer la couleur des cables qui sont "alimenté" a partir de la cabane ou on se trouve. qu'on voit mieux quel nœud bloque.

Mais sinon pas mal, dés que j'ai un peu plus de temps j'essayerai d'avancer dans les niveaux ( me suis arrêté au 5)

Edit : ah mince il n'y a que 5 niveaux pour l'instant! ^^

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [WIP] CourtCircuit

Message par EmileF » 07 Oct 2018 15:57

C'est vrai que plus les niveaux se complexifient plus c'est confus.

Je suis en train de réfléchir à mettre tous les câbles et contacts au sol, pour éviter au maximum les superpositions.

Dans mon algorithme de recherche il m'est très difficile de colorer le circuit au fur et à mesure des connexions possibles, mais je pense le modifier pour arriver à ce résultat.

je pense aussi à supprimer les cadenas, et croiser les portails pour augmenter les possibilités.

En tout cas merci djulio74 d'avoir bien voulu me rapporter tes impressions.

Oui il n'y a que 5 niveaux pour le moment, mais vu les réflexions précédentes, je pense modifier le gameplay avant de créer d'autre niveaux. As-tu vu qu'il y a un éditeur de niveau?....

A bientôt.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [WIP] CourtCircuit

Message par djulio74 » 07 Oct 2018 16:03

Dans mon algorithme de recherche il m'est très difficile de colorer le circuit au fur et à mesure des connexions possibles, mais je pense le modifier pour arriver à ce résultat.
J'ai pas le code ( et je pense je ne comprendras pas de toute façon, lol) Mais du coup c'est la combinaison simple des "noeud" qui te permet de définir quel partail a ouvrir? et non le circuit empreinté?

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [WIP] CourtCircuit

Message par EmileF » 07 Oct 2018 18:19

Mon algorithme prend tous les contacts de la grille et se fie au contacts étant dans la même position pour avancer.
Quand il arrive à un contact concernant un portail il ouvre le portail.
Il liste au fur et à mesure les contacts qu'il a visité.
S'il n'arrive pas à un portail, il recommence au début avec le contact suivant en vérifiant qu'il ne soit pas dans la liste.
Mais mon algorithme n'est pas optimisé, je pense qu'en revenant en arrière jusqu'à un carrefour pour essayer un autre chemin je pourrai arriver à trouver un chemin unique et le colorer.

Merci de l’intérêt que tu portes à mon jeu.

Je voulais savoir s'il pouvait être plaisant et ta réponse m'encourage à continuer, même si c'est la seule.

Quand au code, je suis autodidacte, et jamais j'ai eu l'occasion que quelqu'un jette un œil sur un de mes codes pour me corriger, je me contente donc d'obtenir le résultat que je souhaite. Tu ne le comprendrais peut-être pas mais ce serait sûrement parce que mon code est incompréhensible et ça n'aurait rien à voir avec tes capacités.

Au plaisir.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [WIP] CourtCircuit

Message par djulio74 » 07 Oct 2018 18:43

ok, je vois a peu près comment tu gère ça, en effet plus difficile pour pouvoir colorer, si tu arrive a modifier cette approche, je pense ce serait un plus visuel pour la compréhension.
Il y a peut être d'ailleurs d'autre moyen d'aider a la lecture, et des plus simple a mettre en place peut etre.
Quand au code, je suis autodidacte, et jamais j'ai eu l'occasion que quelqu'un jette un œil sur un de mes codes pour me corriger, je me contente donc d'obtenir le résultat que je souhaite. Tu ne le comprendrais peut-être pas mais ce serait sûrement parce que mon code est incompréhensible et ça n'aurait rien à voir avec tes capacités.
Je suis tout autant autodidacte, donc te comprend tout a fait. J'ai mis longtemps aussi à oser partager mes code. :lol: Mais il est tout autant possible de partager sur les "façons de faire" ou les "approches" sans parler de code a proprement parler. ;)

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [WIP] CourtCircuit

Message par EmileF » 08 Oct 2018 08:19

Bonjour,

Oui, tu as raison

Je ne participe au forum que depuis peu, je suis venu il y a quelques mois pour poser une question, et ça m'a parut difficile d'avoir une réponse et la procédure était plus compliquée, ce qui m'a fait hésiter.

J'ai refait un essai dernièrement concernant le multiplayer, je n'ai pas eu de solution, mais ça m'a encouragé grâce à Alesk, d’ailleurs, de partager mes projet pour avoir l'avis du forum.

J'arrive mal à capter l'attention des autres, mais à chaque fois ça a été constructif.

Pour en revenir à mon sujet, voilà le code pour recherche la relation avec le portail ou le cadenas:

Code : Tout sélectionner

    public void ChercheChemin()
    {
        //Liste tous les contacts du jeu
        _contacts = GameObject.FindGameObjectsWithTag("Contact");
        ChercheWifi(_contacts);
        //print("il existe " + _contacts.Length + " contacts dans je jeu");

        //prepare lles lise pour les contact visités, les portails et les cadenas à déclencher
        chemin = new List<Contact>();
        Portails = new List<Portail>();
        Cadenas = new List<Cadenas>();

        //Parcours les contacts du jeu
        foreach (var item in Croix.Contacts)
        {
            //s'il est activé
            if (item.gameObject.activeSelf)
                //cherche si on peut avancer
                ChercheChemin(item.GetComponent<Contact>());
        }


        //print("Il y a " + Portails.Count + " portails activés");
        //Si on a trouve des portails à activer
        if (Portails.Count > 0)
        {
            foreach (var Portail in Portails)
            {
                Portail.Execute();
            }
        }
        //si on a trouvé des cadenas à activer
        if (Cadenas.Count > 0)
        {
            foreach (var Cad in Cadenas)
            {
                Cad.Execute();
            }
        }

        //si on n'a rien trouvé on envoie un petit message au joueur
        if (Portails.Count == 0 && Cadenas.Count == 0)
            GameObject.Find("Game").GetComponent<Game>().EnvoyerMessage("Pas de portail, ni de cadenas connecté.", 5);


    }

    //Pour mettre en relation les wifis entre elles
    void ChercheWifi(GameObject[] contacts)
    {
        //Parcpurs tous les contacts
        foreach (GameObject go in contacts)
        {
            Contact contact = go.GetComponent<Contact>();
            //si la valeur wifi n'est pas à 0
            if (contact.Wifi > 0)
            {
                //recherche dans la liste un autre contact qui à la même valeur Wifi
                //pour l'ajouter à la liste des autres contact en relation avec le contact courant
                foreach (GameObject go2 in contacts)
                {
                    if (go != go2)
                    {
                        Contact item = go2.GetComponent<Contact>();
                        if (item.Wifi == contact.Wifi && !contact.Others.Contains(item))
                            contact.Others.Add(item);
                    }
                }
            }
        }
    }


    //Fonction récursive pour lister tous les contact en relation
    void ChercheChemin(Contact contact)
    {
        //on ajoute le contact parametre dans la liste
        chemin.Add(contact);
        //on parcours la liste des contacts
        foreach (var go in _contacts)
        {
            Contact item = go.GetComponent<Contact>();
            //si le chemin ne contient pas ce contact
            if (item.gameObject.activeSelf && !chemin.Contains(item))
            {
                //Si les 2 contacts sont à la même position ou si les wifis sont de même valeur
                if ((item.Wifi > 0 && item.Wifi == contact.Wifi) || Vector3.Distance(contact.transform.position, item.transform.position) < 0.1f)
                {
                    //on l'ajoute
                    chemin.Add(item);
                    //on verifie si c'est le portail
                    if (item.Portail != null && !Portails.Contains(item.Portail))
                        Portails.Add(item.Portail);
                    //on verifie si c'est le cadenas
                    if (item.Cadenas != null && !Cadenas.Contains(item.Cadenas))
                        Cadenas.Add(item.Cadenas);
                    //et on recherche s'il y a un autre contact
                    if (item.Others != null)
                    {
                        //s'il y a un autre contact
                        foreach (var other in item.Others)
                        {
                            //et qu'il n'est pas déjà référencé
                            if (other.gameObject.activeSelf && !chemin.Contains(other))
                                //on continue la recherche
                                ChercheChemin(other);
                        }
                    }
                }
            }
        }
    }
Mais je suis conscient que cette approche n'est pas prévue pour colorer le chemin. Il faudrait que je supprime de la liste "Chemin" tous les contacts qui ne mènent nulle part. Je pourrais ainsi colorer le chemin.

Mais pour le moment je suis en train de reprendre toute la partie graphique pour mettre le circuit au sol afin de limiter les superpositions qui gênent dans les perspectives. Je crois que cela me permettra d'avoir un niveau moins confus.
Je corrigerai mon script afin d'éclairer le circuit, car c'est une excellente suggestion.

Merci pour tout.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: [WIP] CourtCircuit

Message par djulio74 » 08 Oct 2018 09:54

Je ne participe au forum que depuis peu, je suis venu il y a quelques mois pour poser une question, et ça m'a parut difficile d'avoir une réponse et la procédure était plus compliquée, ce qui m'a fait hésiter.
J'ai refait un essai dernièrement concernant le multiplayer, je n'ai pas eu de solution, mais ça m'a encouragé grâce à Alesk, d’ailleurs, de partager mes projet pour avoir l'avis du forum.
J'arrive mal à capter l'attention des autres, mais à chaque fois ça a été constructif.
Je pense pas que ce soit un problème pour capter l'attention, mais plutôt une baisse d'activité du forum je pense, il me semble quand même moins fréquenté qu'il y a quelques années.

Ok je vois un peu ton code, ou du moins ton approche. lol.
donc en fait tu recherche parmi tout les contacts ceux qui sont connecté, et en fonction desquels sont connecté recherche les chemin possible. Tu peux donc te retrouver avec des contact connecté mais pas de courant qui passe. ( connecté mis pas de façon direct avec la "cabane source").
c'est peut etre beaucoup de remaniement mais faudrait pouvoir avoir ( de façon hyper simplifiée):

- chaque cable/croix aurait une entrée, une sortie.

void DepuisCabane()

- nouvelle liste de cable (disons cable[] )
- partir du câble qui part de la cabane source ( ou le perso se trouve), l'ajouter à cable[].
- circuit() ;

void circuit() :
- récuperer la "croix" au bout du dernier câble de la liste
- tester juste la position de cette croix (contact (sortie last câble/entrée croix) = true/false)
---- true : recherche de câble pour que son entrée == sortie croix : si trouvé => l'ajouter a la list Cable[] => circuit()
---- false : stop. nouvelle recherche au prochain mouvement de croix =>
------- si on a modifié une croix de la liste des câble => DepuisCabane();
------- sinon circuit();

Comme ça a chaque passage de cabane, tu as une liste de cable, qui part de la cabane, et qui augmente au fur et a mesure des cantact sur le chemin du courant.

A voir si ça peut être gérable dans ton projet. ;)

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [WIP] CourtCircuit

Message par Alesk » 08 Oct 2018 11:06

Yo !

Emile, il ne faut pas te sentir trop frustré si tu ne reçois pas de réponses rapidement. Il ne faut pas le prendre pour une forme de dédain ou de manque d'intérêt, mais plutôt pour un manque de temps ou un planning chargé ;)
Tu fais partie des débutants "intéressants" (je sens que je risque de me faire des ennemis :p ) qui font des efforts énormes pour avancer et produire des prototypes malgré les difficultés.
Donc ne t'en fais pas si tu n'as pas de réponses immédiates, au pire tu en auras toujours après 2 ou 3 jours, car tes sujets sont toujours intéressants.

Pour ton souci de coloration de réseau électrique, tu devrait peut-être tout simplement utiliser du pathfinding.
Soit en utilisant les fonctions intégrées à unity et en les détournant un peu : https://docs.unity3d.com/Manual/Navigation.html
Soit en programmant toi même une fonction de pathfinding : https://www.youtube.com/watch?v=-L-WgKM ... PnKjfp9eGW

Et puis ça servira toujours pour d'autres projets ;)

Répondre

Revenir vers « Vos créations, jeux, démos... »