Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 34 sur 38 PremièrePremière ... 2426272829303132333435363738 DernièreDernière
Affichage des résultats 991 à 1 020 sur 1125
  1. #991
    La bande passante pour stocker du code sur github sera très faible, mais les assets bouffent par contre.. Si t'es un peu bricoleur, tu peux sans doute setup un serveur git sur ton NAS ou un raspberry pi! T'auras toute la puissance du source control et 0 coùuts

  2. #992
    J’ai une question sur les jobs : dans les codes exemples de Unity, ils font le job dans le jobhandle et passe les actions de traitement après le .complete() tout ça donc dans la même frame.

    Mais on peut lire aussi que suivant le temps d’exec du job, ça peut prendre plus du temps d’une frame et qu’il faudrait en fait plutôt lancer le job dans une frame et attendre avec isCompleted que le job soit réellement fini avant d’appeler le .complete pour utiliser le résultat.

    Est ce la bonne pratique d’avoir toujours la méthode d’attente des résultats même si ça peut finir dans la même frame ou est ce que c’est marginal de gérer justement ce décalage de rendu entre plusieurs frames ?

  3. #993
    Citation Envoyé par LDiCesare Voir le message
    Question animation:
    Est-ce que quelqu'un a une technique permettant de s'assurer qu'on a fini de jouer des animations?
    Contexte: Je fais un jeu avec du combat tour par tour. C'est pas physics-based.
    Je veux arrêter le tour d'un personnage contrôlé par l'ia soit au bout de 0.5s si elle fait rien, soit après qu'elle ait joué ses animations (e.g. je lui dis bouge puis attaque donc elle doit enchainer des animations suivant la séquence idle-move-idle-attack-idle).
    J'arrive à savoir si mon AnimationController est en train de jouer une animation, et si cette animation a une transition. Donc en théorie, je devrais être capable de me rendre compte que je suis dans l'état idle final. Sauf que si je fais ce test dans un Update() et que les animations n'ont pas encore commencé à jouer, je suis peut-être encore dans l'état idle de départ.
    Bref, vu que le contrôle de l'animation passe par des coroutines donc des threads différents du thread où je contrôle la logique, j'ai l'impression de ne pas pouvoir contrôler finement ce que je veux.
    Comme j'attends toujours au moins 1/2s. histoire que le joueur voie que tel personnage a joué sans bouger ni attaquer, je m'épargne un peu le problème mais je suis pas convaincu par ma solution.
    Quelqu'un a déjà eu affaire à ce genre de problématiques?
    Ok, hier je l'ai utilisé.
    Tu peux utiliser "isPlaying" pour savoir si une animation spécifique se joue encore.
    Sinon, en relisant mon code, j'utilisais la longueur du clip pour attendre que la suite du code se déclenche (c'est clip.lenght un truc du genre).

    A la rigueur, tu peux également compter le nombre d'idle qui se termine. Admettons que tu dises "quand le compteur d'idle arrive à 4, de toute manière tu vas finir le tour, et remettre ce compteur à 0" d'après ce que tu dis, ça peut marcher, au pire le joueur attendra 4 idle d'affilée si ton PNJ ne bouge pas et n'attaque pas. Tu peux même mettre deux compteurs, un compteur global d'animation pendant le tour, et un compteur spécifique à Idle. Si par exemple le compteur global = compteur d'idle =2, ça veut dire qu'il y a eu deux idle d'affilée et à la rigueur tu peux finir le tour directement.

    Sinon, moi de mon coté, j'ai enfin créé une mini IA qui prend des décisions et lancent des sorts à partir de leur propre grimoire. C'est trop bien, je suis trop fier. Alors là, pour mon Roi Champignon, il utilise qu'un sort qu'il lance de manière aléatoire avec 10% de chance pour invoquer des spores et avoir des minions (qui spawn aléatoire sur le navmesh ...) Mais ça m'a débloqué plein de truc dans ma tête.

    J'ai enfin compris également comment ça marchait les deux cameras. Les trucs de ouf que ça peut faire (comme voir à travers les murs, utiliser du post processsing sur des objets spécifiques...).

    Et... J'ai également appris que l'asset de banque de sons que j'avais acheté, avait ripé des bruitages d'un gros acteurs de sound design. Et ça me fait tellement chier... Faut que je remplace tous les sons qui utilisent cet asset (C'était Ultimate Sound quelque chose).

  4. #994
    Citation Envoyé par Molina Voir le message
    Et... J'ai également appris que l'asset de banque de sons que j'avais acheté, avait ripé des bruitages d'un gros acteurs de sound design. Et ça me fait tellement chier... Faut que je remplace tous les sons qui utilisent cet asset (C'était Ultimate Sound quelque chose).
    Ultimate Sound FX Bundle ?
    Ultimate Game Music Collection ?

    c'est quoi cet histoire ?
    Y'a un problème avec ces bundles ?

  5. #995
    Citation Envoyé par SalsifiNoir Voir le message
    Ultimate Sound FX Bundle ?
    Ultimate Game Music Collection ?

    c'est quoi cet histoire ?
    Y'a un problème avec ces bundles ?
    Je te dis ça ce soir. Mais oui, il semble qu'ils ont piqué des sons de Hollwood Edge (de Sound ideas).

    Du coup... Je me tate à dépenser 250 balles pour me payer une licence... et au moins j'aurais les bruitages de vieux films des années 90 de manière legit.

  6. #996
    De quel bundle on parle exactement et quels sont les accusations exactes ?
    Parce qu'il y en a des pelletées de collections d'assets sonores sur le Unity Asset Store.

  7. #997
    Ultimate-sound-fx-bundle , de la société Sidearm Studios a été accusé d'avoir emprunté des sons, notamment d'animaux, de sound ideas : https://assetstore.unity.com/package...151756#reviews

  8. #998
    Et on respire bien fort ici puisqu'on n'a pas acheté celui-ci.

  9. #999
    C'est moche : j'avais tout fait à partir de ce bundle ou presque et je sais même plus faire la différence avec les autres bundles à part à rechercher les noms de fichiers pour savoir si ça appartient à l'un ou l'autre... ils pourraient au moins préciser ce qui est valable et KO.
    Bon donc ça veut dire que pour éviter tout risque faut forcément basculer sur autre chose

    Sinon y'a moyen de noyer toute la contrée et de justifier l'absence de sons

  10. #1000
    Eh merde moi aussi j'ai ce bundle et je m'en sers super souvent, y'a plein de choses dedans.
    ça devient mon problème si j'utilise des trucs que j'ai acheté légalement mais qui ont en fait été créés illégalement ?

  11. #1001
    Ca reste du droit d’auteur et ça se répand dans tous les trucs qui l’utilisent donc c’est pénible.
    Après y’a sans doute matière à switcher de bonne foi sur des trucs récents en republication en changeant le matériau audio.

    Après les plus vieux trucs, combien vont trouver/chercher le son qui pose problème ? Une suppression de l’appli ou autre ça doit dédouaner un dev de bonne foi en cas de litige.
    Et c’est pas comme si c’était le dév qui pompait direct…

    C’est même l’Unity Store qui devrait envoyer un message à tous les acheteurs pour prévenir.

  12. #1002
    Sur ce sujet des droits, et lorsqu’il n’y a pas de souci dans un asset qui est vendu : je ne comprends pas bien le Standard Unity Asset Store EULA sous lesquels sont la plupart d’entre eux. Il y est précisé que :

    3.5
    Unless you have been specifically permitted to do so in a separate agreement with Unity and except as permitted under the Unity-EULA, you agree that you will not use, reproduce, duplicate, publicly display, publicly perform, copy, modify, adapt, translate, prepare derivative works of, distribute, transfer, license, sublicense, rent, lease, lend, sell, trade, resell, or otherwise commercialize or monetize any Asset that you have licensed from the Unity Asset Store for any purpose.
    (et ailleurs encore dans le doc).


    Mais euuhhh, alors, on peut ou on peut pas les utiliser pour les intégrer dans une appli, que l’on va distribuer et même potentiellement vendre ?

  13. #1003
    Ben si.
    C'est l'asset lui-même qui ne peut pas être revendu/réutilisé etc...
    Par exemple si tu fais un jeu en open source avec des assets et qu'on te demande le code source, tu devras alors retirer tous les assets de l'Asset Store de ton codebase avant de le distribuer.

    Tu as beaucoup de jeux commerciaux crées sous Unity qui utilisent des assets du Store, certains s'en vantent d'ailleurs.

    Ceci dit il y a exceptionnellement des limites (utilisable uniquement en non commercial/éducatif), mais elles sont clairement indiquées sur la page de l'asset : https://support.unity.com/hc/en-us/a...mmercial-game-

  14. #1004
    Citation Envoyé par SalsifiNoir Voir le message
    Ca reste du droit d’auteur et ça se répand dans tous les trucs qui l’utilisent donc c’est pénible.
    Après y’a sans doute matière à switcher de bonne foi sur des trucs récents en republication en changeant le matériau audio.
    Ouuaaais mais dans ce cas c'est mission impossible d'être sûr de la légalité de toute la chaine. Je veux dire, un artiste peut très bien avoir volé l'instrument avec lequel il a composé les musiques que t'utilises, dans ce cas ça peut se retourner contre toi aussi ?
    Je pensais que si toi, t'avais acheté le truc légalement, t'étais protégé. Si on vient te titiller, tu montres ta licence, et tu refiles la patate chaude à celui qui t'a fourgué la licence. Non ?

  15. #1005
    J'aurais plutôt tendance a penser que c'est du domaine du recel, surtout si tu le fais en toute connaissance de cause.
    En l'occurrence les dindons de la farce sont bien les clients qui ont acheté l'asset en toute bonne foi et qui maintenant ne peuvent plus l'utiliser (tout ou partie) à cause du fait que certains effets sonores étaient volés.

  16. #1006
    Pour la comparaison avec le vol d'instrument, c'est pas pareil.
    La propriété intellectuelle, ça dit que tu dois avoir payé l'auteur pour pouvoir stocker ou distribuer son oeuvre. Si celui à qui tu as acheté l'oeuvre ne l'a pas fait, tu es fautif aussi.
    Donc, oui, tu l'as dans l'os dans ce cas précis, mais tu peux aussi te retourner contre le "voleur" et exiger des dommages et intérêts. En théorie du moins.

  17. #1007
    Sur un autre sujet..

    où publier son jeu s'il fait plus de 5 GO ? (Il en fait 15Go, mais doit y avoir la moitié qui doit être de la merdouille que je devrais effacer quand j'en aurais la force).
    Itchio, c'est 1go max voire 2 si on envoie un mail. Mais on peut le mettre gratuitement, et le distribuer gratuitement avec un peu de don. Et pour un jeu 100% français, voilà, c'est cohérent.
    Pour Steam... C'est payant, c'est long et compliqué. Et il faut mettre un prix (ou le mettre gratuitement sans possibilité de don). Et puis surtout.. à ma connaissance, je n'ai jamais vu de jeu purement français (sans traduction) sur Steam. Enfin, pour moi, c'est forcément de l'anglais ou chinois.

    Et là, c'est surtout pour que je puisse le mettre sur un serveur, et pouvoir le télécharger simplement quand je voudrais tester mon jeu sur une autre machine (notamment la steamdeck...). Même pas pour le rendre public.

    Du coup, je suis un peu emmerdé.

  18. #1008
    T'as pas de drive chez Google ou MS ou autre?

  19. #1009
    Ben en fait... j'ai rien dit.

    Mon projet unity fait 15 Go, mais le jeu ne fait que 1,8 Go, et en zip je peux encore réduire à 0,5 Go ...

    J'avais jamais fait gaffe avant... Désolé, fausse alerte !

  20. #1010
    Eh oui c'est le dossier du build qui compte, pas le dossier du projet Unity.

  21. #1011
    Salut

    J’aimerais avoir votre avis sur des tutos structurants pour améliorer sa façon se programmer et, d’une manière générale, d’utiliser Unity.

    Je suis encore complètement... pas très bon pour programmer , mais je commence à voir quand le formateur propose des approches plus ou moins bien codées.

    J’ai suivi, avec plaisir, une partie des formateurs et formations suivants : TutoUnity.fr, Formation Unity et C# : Développeur de jeux vidéo 2023 (Anthony Cardinale), et Maîtriser Unity et le C# | Guide Complet Développeur (Jean-Philippe Parein). Je dis avec plaisir, par ce que c’était globalement très bien fait. Mais je vois bien quand l’approche est pas aussi carrée qu’elle devrait l’être. Alors, pour continuer, et sans pour autant vouloir monter le niveau (j’ai encore beaucoup à apprendre là où j’en suis), qu’est ce que vous me conseilleriez comme chaînes ou formations vidéos qui insistent particulièrement sur les bonnes pratiques (que ce soit en terme d’approche en programmation, qu’en optimisation du résultat obtenu avec Unity) ?

    Aujourd’hui, je suis tombé sur la chaîne de Tarodev, et ça me parait vraiment bien.

  22. #1012
    A ta place, j'essaierais de ne pas trop théoriser, ça sent un peu la procrastination ton truc.

    Coder c'est rigolo, vas y un peu au feeling. Prototype des trucs. Tu vas très vite réaliser que ton code s'avère difficile à concevoir, ou à maintenir. Un problème récurrent dans le gamedev que tu rencontreras par exemple, c'est de pouvoir découpler des objets techniquement alors qu'ils interagissent entre eux dans ton game design (deux solutions que j'aime bien pour ça : l'approche systémique, et un event system bien foutu). Bref, tu vas mettre en lumière des problèmes, et là tu pourras chercher une solution et elle restera vraiment gravée dans ta mémoire car elle aura résolu un vrai problème sur lequel tu t'es creusé la tête.
    Et en bonus, ça te permettra de structurer ta formulation du problème que tu rencontres, ce qui est un excellent exercice en programmation, pour y trouver une solution sur google.

    Je me rend compte que je donne toujours le même conseil : Go for it, tu résoudras les problèmes plus tard.

  23. #1013
    Ah ah ! Tu n’es pas tendre ! Non mais, c’est pas tant pour échapper au boulot de me plonger dans le code, ça je le fais, c’est pour mettre en place des bonnes pratiques, maintenant que j’en maîtrise mieux la compréhension.
    Ça a un côté rassurant de savoir qu’on travaille avec des bases solides (pas parfaite, je comprends bien qu’il y a 1000 et une façon de programmer).
    Ça n’est pas incompatible avec ce que tu dis : je vais pas me reposer sur des lauriers de bouts de codes, je vais continuer à m’y plonger et suer sang et eau pour avancer, mais ça me permettrait d’aller + loin.

    Est-ce que tu pourrais expliquer ce que tu entends par « l'approche systémique, et un event system bien foutu » ? Ça me fait penser à un autre tuto que j’avais suivi, de Imphenzia, et où il y avait un système de state (voir le code ci-dessous, pour un casse-briques) que j’avais vraiment apprécié : ça rend tout + clair (et c’est justement ça que je disais dans mon précédent message : ce type de codage c’est vraiment structurant pour moi.

    Je comprends les formateurs qui vont au + vite et au + simple, et ça m’a beaucoup servi pour commencer à comprendre les bases d’Unity, mais maintenant ça me perd un peu je dois dire...


    Spoiler Alert!
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;

    public class GameManager : MonoBehaviour
    {
    public GameObject ballPrefab;
    public GameObject playerPrefab;
    public Text scoreText;
    public Text ballsText;
    public Text levelText;
    public Text highscoreText;
    public Text levelCompletedText;

    public GameObject panelMenu;
    public GameObject panelPlay;
    public GameObject panelLevelCompleted;
    public GameObject panelGameOver;

    public GameObject[] levels;
    public static GameManager Instance { get; private set; }

    public enum State { MENU, INIT, PLAY, LEVELCOMPLETED, LOADLEVEL, GAMEOVER }
    State _state;
    GameObject _currentBall;
    GameObject _currentLevel;
    bool _isSwitchingState;

    private int _score;

    public int Score
    {
    get { return _score; }
    set
    {
    _score = value;
    scoreText.text = "SCORE : " + _score;
    }
    }

    private int _level;

    public int Level
    {
    get { return _level; }
    set {
    _level = value;
    levelText.text = "NIVEAU : " + _level;
    }
    }

    private int _balls;

    public int Balls
    {
    get { return _balls; }
    set
    {
    _balls = value;
    ballsText.text = "BALLES : " + _balls;
    }
    }

    public void PlayClicked()
    {
    SwitchState(State.INIT);
    }

    void Start()
    {
    Instance = this;
    SwitchState(State.MENU);
    // PlayerPrefs.DeleteKey("highscore"); // On efface le highscore précédent
    }

    public void SwitchState(State newState, float delay = 0)
    {
    StartCoroutine(SwitchDelay(newState, delay));
    }

    IEnumerator SwitchDelay(State newState, float delay = 0)
    {
    _isSwitchingState = true;
    yield return new WaitForSeconds(delay);
    EndState();
    _state = newState;
    BeginState(newState);
    _isSwitchingState = false;
    }

    void BeginState(State newState)
    {
    switch (newState)
    {
    case State.MENU:
    Cursor.visible = true; // On affiche le curseur souris
    highscoreText.text = "MEILLEUR SCORE : " + PlayerPrefs.GetInt("highscore");
    panelMenu.SetActive(true);
    break;
    case State.INIT:
    Cursor.visible = false; // On supprime l’affichage du curseur souris
    panelPlay.SetActive(true);
    Score = 0;
    Level = 0;
    Balls = 3;
    if (_currentLevel != null)
    {
    Destroy(_currentLevel);
    }
    Instantiate(playerPrefab);
    SwitchState(State.LOADLEVEL);
    break;
    case State.PLAY:
    break;
    case State.LEVELCOMPLETED:
    Destroy(_currentBall); // On supprime la balle
    Destroy(_currentLevel); // On supprime le niveau (on n’a plu besoin de ce GO)
    levelCompletedText.text = "NIVEAU " + _level + " TERMINÉ";
    // Level++; // On rajoute 1 à niveau
    panelLevelCompleted.SetActive(true); // On affiche Niveau x Terminé
    SwitchState(State.LOADLEVEL, 2f); // On passe à l’état de prochain niveau dans 2 s
    break;
    case State.LOADLEVEL:
    if (Level >= levels.Length)
    {
    SwitchState(State.GAMEOVER);
    }
    else
    {
    _currentLevel = Instantiate(levels[Level]);
    SwitchState(State.PLAY);
    }
    break;
    case State.GAMEOVER:
    if (Score > PlayerPrefs.GetInt("highscore")) // Si score > à l’info highscore dans le registry de Windows et autres plateformes
    {
    PlayerPrefs.SetInt("highscore", Score);
    }
    panelGameOver.SetActive(true);
    break;
    }
    }

    void Update()
    {
    switch (_state)
    {
    case State.MENU:
    break;
    case State.INIT:
    break;
    case State.PLAY:
    if (_currentBall == null)
    {
    if (Balls > 0)
    {
    _currentBall = Instantiate(ballPrefab);
    }
    else
    {
    SwitchState(State.GAMEOVER);
    }
    }
    if (_currentLevel != null && _currentLevel.transform.childCount == 0 && !_isSwitchingState) // On compte le transform des enfants du Level (càd les briques : astuce !)
    {
    SwitchState(State.LEVELCOMPLETED);
    }
    break;
    case State.LEVELCOMPLETED:
    break;
    case State.LOADLEVEL:
    break;
    case State.GAMEOVER:
    if(Input.anyKeyDown) // Si on appuie sur n’importe quelle touche (et même clic souris)
    {
    SwitchState(State.MENU);
    }
    break;
    }
    }

    void EndState()
    {
    switch (_state)
    {
    case State.MENU:
    panelMenu.SetActive(false);
    break;
    case State.INIT:
    break;
    case State.PLAY:
    break;
    case State.LEVELCOMPLETED:
    panelLevelCompleted.SetActive(false);
    Level++; // On rajoute 1 à niveau
    break;
    case State.LOADLEVEL:
    break;
    case State.GAMEOVER:
    panelPlay.SetActive(true);
    panelLevelCompleted.SetActive(false);
    break;
    }
    }

    }

  24. #1014
    Tu veux de la bonne pratique ? Maîtrise parfaitement la POO. Fais des tests unitaires et bosse le gang of four. Quand tu as fini ça, tu bosses le pattern ecs, et quand ça c'est bon. Tu apprends par coeur les bases du fonctionnement d'opengl (ou autre backend graphique, c'est juste que c'est le plus simple) ainsi que le fonctionnement de unity. Pareil pour le c#. Ensuite, tu regardes et ou participe à des conférences sur c#, unity et le code dans le jeu vidéo. Ah et pratique et pratique encore. Essaie des choses, tu vas trouver des astuces et tes propres code tout seul.

  25. #1015
    Bon, ok, ok, j’ai encore 2 000 années lumières de travail quoi !

    Merci pour vos retours !

  26. #1016
    Ouais désolé, mais comme dit précédemment, te prend pas trop la tête à faire des trucs "propres", fait des trucs qui marchent déjà

  27. #1017
    Promis ! (c’est vrai que ça marche pas toujours ce que je fais)

  28. #1018
    Citation Envoyé par honu Voir le message
    Ah ah ! Tu n’es pas tendre ! Non mais, c’est pas tant pour échapper au boulot de me plonger dans le code, ça je le fais, c’est pour mettre en place des bonnes pratiques, maintenant que j’en maîtrise mieux la compréhension.
    Ça a un côté rassurant de savoir qu’on travaille avec des bases solides (pas parfaite, je comprends bien qu’il y a 1000 et une façon de programmer).
    Ça n’est pas incompatible avec ce que tu dis : je vais pas me reposer sur des lauriers de bouts de codes, je vais continuer à m’y plonger et suer sang et eau pour avancer, mais ça me permettrait d’aller + loin.

    Est-ce que tu pourrais expliquer ce que tu entends par « l'approche systémique, et un event system bien foutu » ? Ça me fait penser à un autre tuto que j’avais suivi, de Imphenzia, et où il y avait un système de state (voir le code ci-dessous, pour un casse-briques) que j’avais vraiment apprécié : ça rend tout + clair (et c’est justement ça que je disais dans mon précédent message : ce type de codage c’est vraiment structurant pour moi.

    Je comprends les formateurs qui vont au + vite et au + simple, et ça m’a beaucoup servi pour commencer à comprendre les bases d’Unity, mais maintenant ça me perd un peu je dois dire...

    Pour apprendre à vraiment coder comme un dieu, c'est sur le bouquin que tu trouveras tes réponses. Les bonnes pratiques, en fait tu les apprendras petit à petit quand le moment sera venu quand par exemple tu te rendras compte que ton code est intenable et que pour changer un truc ça va être l'enfer. Dans ce cas, tu vas commencer un autre projet et te promettre que plus jamais recommencer cette même erreur.
    Ou alors quand il faudra implémenter une logique assez particulière et faudra bien apprendre une nouvelle méthode.

    La bonne nouvelle, c'est que ça va te sortir des tutos et devenir plus indépendants. La mauvaise, c'est que tu peux te retrouver dans des impasses et beaucoup pleurer.

  29. #1019
    J'ai essayé d'adapter tous les aspects du principe SOLID à mon projet après en avoir appris plus là dessus et certains d'entre aux ne sont clairement pas applicables sans devoir refactoriser totalement le code du coup j'ai laissé tomber

    Comme dit mieux vaut avoir un truc qui marche plutôt que quelque chose de super propre.

    Après il n'est pas exclu que j'applique le principe à mon projet en cours une fois qu'il est terminé et fonctionnel mais pour l'instant je ne trouve pas ça pas super important (même si ça peut me poser des problèmes plus tard, au moins je suis au courant ).

  30. #1020
    A propos des tests, quelqu'un a des billes sur des frameworks/outils de tests unitaires ou de tests d'intégration dans Unity?
    Pour le moment, j'ai rien du tout en termes de tests auto dans ce que je fais, sachant que c'est quand même pas mal d'UI ça me dérange pas trop pour l'instant, mais viendra probablement un moment où je voudrai(s) en faire, et les systèmes de GameObject et autres Monobehavior que tu n'instancies pas comme ça risquent de poser souci.

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
  •