Variable curieusement ignorée

Bien le bonsoir ou Bonjour chers développeurs de jeux vidéos…

Développeurs est un bien grand mot vu comment Game Develop nous facilite la tâche (je suis à peine issu du kit XNA de Microsoft donc par rapport à XNA, Game Develop est simple).

Pour moi, XNA est trop lourd voilà pourquoi je suis passé à un outil, cet outil est Game Develop.

Seulement, après avoir épluché l’aide et terminé avec succès le tutorial, je me suis mis à modifier deux trois trucs dans ce qui a résulté du tutorial. C’est à dire le jeu: Galaxy Wars.

Bref, mon souci est d’autant plus incompréhensible car (selon moi et ma logique) la variable que j’ai ajouté devrait fonctionner (cependant, je ne suis pas du tout bien placé pour dire n’avoir commis aucunes erreurs car je me suis lancé depuis peu sur Game Develop).

Le tutorial a été suivi à la lettre.
Mais dans ce qui suit, voici mes modifications, elles n’ont eu lieues QUE sur l’édition des évènements, deux trois valeurs modifiées et rajout d’une variable à un objet:

Comme une image en dira plus que des mots, voici donc un screenshot.

Le problème:

  • Le chronomètre “Apparition” ne se déclenche qu’une fois (que le Vaisseau soit vivant (enVie = Vrai) ou que le Vaisseau soit mort (enVie = Faux)).
  • La variable enVie - selon le deboggeur - ne change pas si le Vaisseau est détruit par un des objets “Mechant” qui spawne aléatoirement sur l’aire de jeu.

La logique voudrait:

  • Que le chronomètre se remette à zéro (au lieu de planter) si l’objet “Vaisseau” est pas encore supprimé… (on se demande même POURQUOI ça passe par la condition de la variable égale à Vrai UNE seule fois AU MOINS si par la suite cette même variable semble être ignorée)
  • Que la variable enVie de Vaisseau soit placée à Faux dès qu’un Mechant entre en collision avec l’objet “Vaisseau”… ce qui ne se fait pas, le Vaisseau disparaît (supprimé) mais la variable ne dédaigne pas se modifier par la valeur: Faux

Merci à ceux ou celles qui arriveraient à me dépêtrer de cette situation pour le moins illogique (à mes yeux je répètes).

Bon… C’est génial ce forum, je poses une question et 2 minutes plus tard je fixe ce “bug” qui était en fait un “bug de compréhension” (après m’être arraché la tête 1 heure AVANT de l’écrire et donc de tester moult idées qui fussent vaines…)

Game Develop m’a jeté le sort “Confusion” en fait.

Voici ce que je faisait comme test de condition/action:

CONDITION: “Tout les objets” => “Variables” => “Variable d’un objet”, [[[JE configures ET valides]]], ce qui affichait ensuite: “La variable “enVie” de Vaisseau est = à Faux”
ACTION: Mettre en pause le chronomètre Apparition

ET en fait… problème, j’ai confondu (sigh) avec ceci qui fut l’épée de Rédemption qui me sauva du Serial Planteur:

CONDITION: “Tout les objets” => “Variables” => “Texte d’une variable d’un objet”, [[[JE configures ET valides]]], ce qui affichait ensuite: “Le texte de la variable “enVie” de Vaisseau est = à Faux”
ACTION: Mettre en pause le chronomètre Apparition

Et pour la modifier de Vrai à Faux, j’ai aussi effectué les modifications suivantes en éditant:

ACTION: “Toutes les actions” => “Variables” => “Modifier une variable d’un objet”, [[[J’AVAIS configuré ET validé]]], ce qui avait affiché ensuite: "Faire =Faux à la variable “enVie” de l’objet Vaisseau

DONC EN éditant par ceci:

ACTION: “Toutes les actions” => “Variables” => “Modifier le texte d’une variable d’un objet”, [[[J’AVAIS configuré ET validé]]], ce qui avait affiché ensuite: "Faire =Faux au texte de la variable “enVie” de l’objet Vaisseau

Et là ça a fonctionné comme je voulais.

Maintenant… J’ai quelques questions que j’adresse à quiconque saurait m’aiguiller vers une réponse qui sera satisfaisante et concise.

  1. C’est quoi la différence entre: ‘Variable d’un objet’ ET ‘Texte d’une variable d’un objet’ VU QUE les éléments à configurer pour ajouter la condition sont identiques.
    (bien que j’ai effectivement remarqué que le bouton à côté de Valeur/Texte change), je suis aussi développeur PHP, pour moi le contenu d’une variable, c’est la valeur, d’où j’ai de suite choisi " Variable d’un objet".), je penses que le nom devrait être différent, m’enfin mon problème est résolu là dessus. (Surtout que le texte une fois ajouté, peut porter à confusion, ainsi que la fenêtre qui s’affiche pour créér les valeurs initiales des variables qui sont appellées: Valeur et non Texte (voir mon screenshot))

  2. C’est quoi la différence entre: ‘Modifier une variable d’un objet’ ET ‘Modifier le texte d’une variable d’un objet’ VU QUE les éléments à configurer pour ajouter la condition sont identiques.
    (bien que j’ai effectivement remarqué que le bouton à côté de Valeur/Texte change), je suis aussi développeur PHP, pour moi le contenu d’une variable, c’est la valeur, d’où j’ai de suite choisi " Variable d’un objet".), je penses que le nom devrait être différent, m’enfin mon problème est résolu là dessus. (Surtout que le texte une fois ajouté, peut porter à confusion, ainsi que la fenêtre qui s’affiche pour créér les valeurs initiales des variables qui sont appellées: Valeur et non Texte (voir mon screenshot))

  3. C’est Hors-Sujet, mais j’aimerais juste savoir: pour la gestion réseau de Game Develop - je ne l’ai pas encore regardé je précise -, j’ai lu que c’était pour Envoyer des données (donc pas pour en Recevoir si?) Ainsi cela ne peut servir qu’à établir des statistiques ou des classements en ligne pour nos jeux, question adressée à 4ian pour celle là :slight_smile:

MERCI même si je me suis aidé tout seul.

Merci aussi à 4ian pour ton super logiciel, étant développeur PHP apprendre XNA m’aurait demandé un temps de furieux, tandis que là je peux me consacrer de l’un à l’autre SANS trop de perte de temps.

J’avoue que la différence entre texte/valeur est un peu floue.
Une variable ( Que ce soit une globale, de la scène ou d’un objet ) dans Game Develop peut recevoir du texte ou un nombre, sans qu’il y ai besoin de le préciser. Ainsi, si tu utilise les actions/conditions qui changent ou testent la valeur d’une variable, ce sera le nombre qui sera testé. Si tu utilise les actions qui changent le texte d’une variable, tu manipulera le texte de la variable.

Si jamais tu utilise une action/condition qui manipule la valeur de la variable alors qu’il y a du texte dedans, Game Develop tentera de convertir le texte en un nombre. Mais dans ton cas, la conversion de “Vrai” ou “Faux” en un nombre doit donner dans les deux cas 0.
Pour le moment, les variables emploient cette “pseudo” facilité, mais il est possible qu’on puisse dans les versions futures leur affecter un type ( Nombre, texte, tableau ), auquel cas Game Develop refusera d’utiliser une variable ne correspondant pas à l’action.

En tout cas, je te conseille d’utiliser tant que c’est possible des nombres pour les variables. En utilisant par exemple 0 pour Faux et 1 pour Vrai.
Et n’hésite pas à utiliser le debugger ( Bouton à coté de Jouer/Mettre en pause la scène ) pour vérifier les données des variables/objets.

Pour le moment, la partie Réseau est très succincte ( Pas de possibilité de création de jeux en ligne par exemple ). Il est possible d’envoyer des données à une page web, données qui seront envoyées dans l’URL de la page et qui pourront être récupérées par un script PHP ( Avec intégration néanmoins d’une vérification d’erreur. Il est par exemple possible de soumettre des scores en ligne avec cette méthode ).
A part ceci, une action pour Télécharger un fichier est aussi disponible.

Eh bien, ce fut une réponse (plusieurs en fait) qui m’ont enfin expliqué la différence entre ces deux termes.

Par contre, (étant issu du C# et du PHP) en ce qui concerne ceci (ce que tu a écris):

C’est une excellente idée mais dans ce cas pour éviter de déstabiliser les utilisateurs plus anciens de (versions plus anciennes donc) Game Develop, il faudra ajouter une sorte de “fonction” : Transtypage.
EN gros, modifier un type (array (Tableau donc)) par un type string (Chaîne dans ce cas)).
Ce transtypage consisterait à ajouter une virgule entre chacun des éléments d’un tableau puis bien entendu de ressortir le résultat en simple texte.

Pourquoi?

Car passer de PHP (qui n’a pas de codage strict pour les variables et leurs valeurs, enfin quand même plus strict que Game Develop actuellement qu’on se le dise)
à C# (qui lui a un codage strict et qui peut carrément nuire à un code si l’on ne respecte pas ce codage strict en ce qui concerne les valeurs et types de variables)

Eh bien, j’ai mis un temps d’adaptation avant de percuter le système des variables dans C# ayant fait jusqu’à présent que du PHP.
Ce qui pour certaines personnes voulant essayer (soit-disant) un logiciel simple de création de jeux (Game Develop) vont finalement éviter ce logiciel qui leur paraîtra trop compliqué dans la gestion des données.

C’est mon avis hein.

La rétro compatibilité avec les anciens jeux sera bien entendu conservée.
Je verrai plus le système comme une “non obligation”. Les variables pourront toujours être déclarées “à la volée” comme actuellement et sans typage strict, mais il sera aussi possible de modifier leur type dans la liste des variables pour forcer leur utilisation en tant que nombre/texte/tableau par exemple.