Devlog #4 – Amélioration de mes outils + Mini cours !

14 réflexions au sujet de “Devlog #4 – Amélioration de mes outils + Mini cours !”

  1. Salut,
    C’est sympa de partager et d’expliquer ton code.
    J’ai trouvé ça clair et facilement transposable grâce au schéma.
    En plus, c’est le genre de routine qui peut servir dans beaucoup de jeux.
    Merci.

  2. Hey salut doumdoum, merci de ton retour. J’ai fais de mon mieux pour permettre à un maximum de gens de me comprendre, content de savoir que c’est suffisamment clair.
    Merci à toi d’avoir lu 🙂

  3. Bonjour HydroGene, merci pour l’idée, c’est sympa comme animation. Je suis encore loin du C# mais j’essaierai de faire ça en LUA quand j’aurai un petit moment.
    Je pense que j’essayerais avec l’ajout d’une plage pour une réinitialisation aléatoire du timer, pour voir si on arrive, avec un rythme irrégulier, à augmenter l’impression que quelqu’un est en train de taper le texte.

    Bon code !

  4. Salut Carpi, merci d’être passé 🙂

    J’ai remarqué que pas mal d’entre vous (qui lisez mes devlogs) sont encore en Lua, j’ai essayé de généraliser au maximum ce que j’ai fais en C# pour que ça marche quel que soit le langage (Un peu comme nous fais David au final, mais je suis très loin d’y arriver avec autant d’aisance).

    Un rythme irrégulier c’est franchement pas bête comme idée, comme quoi il y a encore des choses à creuser là dedans.

    Si jamais tu as besoin d’aide (ou même si quelqu’un d’autre lis cette réponse), je suis sur le Discord de Gamecodeur, n’hésitez pas à me taguer dans vos messages ou de m’envoyer un message privé, si je peux me rendre utile c’est avec plaisir. Je peux toujours le refaire en Lua. Que ce soit pour ce système de dialogue ou tout autre chose, ça ne me dérange absolument pas, on est ici pour s’améliorer, on est tous à la même enseigne 🙂

  5. Salut Carpi,

    Bonne idée.

    Peut-être que tu pourrais changer la durée du timer à la rencontre d’un signe de ponctuation (virgule, point etc.) , et du coup cela collerait plus avec le mode « dialogue » ?

  6. Salut Hydrogene,
    merci d’avoir partagé ta solution sur le défilement de texte, c’est vraiment bien expliqué et franchement, une solution toute simple que tu nous a présenté là.

    Comme j’étais dans l’atelier sur les interfaces graphiques, et que je m’étais donné comme objectif de produire un défilement de texte, j’ai donc volontairement omis de lire ta solution pour produire la mienne avant et la comparer. Je l’explique brièvement dans mon dernier Devlog et j’ai inclue les fichiers sources dans mon fichier .zip.

    La différence entre les 2 méthodes est la suivante : ta méthode donne un défilement caractère par caractère, tandis que ma méthode donne un défilement plus continue (pixel par pixel). Je crois tout de même que ta méthode donne un effet plus intéressant.

    J’ai juste eu un problème avec ta méthode, c’est que dans Lua, quand on utilise la fonction string.sub() pour aller chercher la prochaine lettre à afficher, et bien quand il y a des accents, ça plante parce la fonction string.sub() ne reconnait pas ces caractères… Il y a possiblement un moyen de contourner ce problème mais je ne l’ai pas trouvé… à part d’enlever les accents de mon texte.

    beau travail

  7. Salut Syllius, merci de ton retour, je suis content (et ça me rassure) que mon explication soit compréhensible par bon nombres d’entre vous 🙂

    Je n’avais jamais penser à un défilement pixel par pixel, tu m’apprend quelque chose !

    Pour ton souci, je me suis bien casser les dents à essayer de te trouver une solution. Effectivement le string.sub pose un souci pour les accents car, apparemment si j’ai bien compris, la fonction string.sub ne permet de récupérer que des caractères présent dans la table ASCII qui sont inférieur à 128 (ce qui correspond aux chiffres,lettres majuscules/minuscules classique) et au-delà de 128 ce sont tout ce qui dit accents et symboles, et string.sub n’arrive pas à les chercher tout simplement car ça dépasse la capacité qu’il peut renvoyer.

    Pour résoudre ce problème, il faut réussir à récupérer et convertir le byte (avec string.byte()) obtenu à la lecture de la lettre accentué en son string correspondant. Ce n’est vraiment pas facile (du moins à mon niveau), j’ai dû y passer quelques heures là dessus sans avoir trouver de réel solution. A la place, j’ai un « camouflage » qui permet d’afficher des « é » mais ça pose encore énormément de souci car même des « ç » ou des « è » sont remplacé par un « é » car c’est le même byte qui est lu. Je te met le code ici (à placer dans le if timer < 0), mais c'est très mauvais !

    — On récupère le byte du caractère qu'on doit lire :
    local byteValue = string.byte(text.FullString,text.Position,text.Position)

    — Représente le caractère qu'on va insérer dans la chaine courante :
    local subString = string.char(byteValue);

    — Si la valeur du byte vaut 195 ça veut dire qu'on tombe sur un "é"
    — On doit incrémenter 1 fois la position du curseur virtuel car ce symbole dépasse 128 dans la table ASCII
    if (byteValue == 195) then
    subString = "é"
    text.Position = text.Position + 1

    end

    — On revient à quelque chose de classique en insérant le caractère dans la chaine courante :
    text.CurrentString = text.CurrentString..subString
    text.Position = text.Position + 1

    Ce n'est pas une solution à proprement parler mais c'est celle qui à le mieux fonctionner dans mes essais. Je vous ai dit dans le devlog de ne pas hésiter à me demander de l'aide et voilà que quand je dois le faire, je suis confronter à un mur et je n'y arrive tout simplement pas. ça m'apprendra à vouloir faire le malin…

    Je vais quand même continuer à chercher un peu de mon côté mais je ne te garanti rien. Je pensais que passer du C# au Lua serait facile, mais je me trompais !

    En tout cas, il n'y a effectivement aucun problème si on enlève les accents, le tuto fonctionne parfaitement (ouf c'est au moins ça)

    Je m'excuse de ne pas pouvoir faire plus pour t'aider dans l'immédiat, mais si je déniche quelque chose de plus intéressent, je te le ferais savoir. Merci de m'avoir prévenu de ce souci !

  8. Un truc comme ca devrait marcher :

    phrase =  » TEST ALLO UN DEUX TEST TEST »
    longueur = #phrase
    for i =1,longueur do
    lettre = string.char(string.byte(phrase,i))
    end

  9. Je suis persuadé d’avoir essayer quelque chose dans ce style là sans succès.

    Il faudrait essayer mais remplacer phrase par quelque chose comme ça : phrase = « éééèçéêêêê » pour être sur que ça ne pose aucun problème avec les accents lorsqu’on affiche le texte dans un love.graphics.draw, car si dans la phrase il n’y en a pas, et bien il n’y a pas de souci non plus ^^

    Merci d’être passé cehem, la solution doit être proche (ou même déjà ici) 🙂

  10. Avec Monogame pour lire les caractères accentués il faut le spécifier dans le spritefont (en ajoutant une région supplémentaire dans le XML de ce fichier pour dire qu’on autorise le font à accéder à des caractères spéciaux). J’ai testé, et oui, ça fonctionne nickel sans aucun souci car je ne passe pas par une méthode string.sub() ou un équivalent à cela du C#, j’utilise la concaténation en pure et dur (en faisant maChaine = maChaine + monCaractère), je suis donc certains d’ajouter 1 caractère à chaque fois.

Laisser un commentaire

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.