IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NxEngine Discussion :

[BETA TEST] Requetes & Co


Sujet :

NxEngine

  1. #1
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut [BETA TEST] Requetes & Co
    • Chargement des objets.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Sprite LightSprite1 = new Sprite(Engine.Contents.Load<TextureFlat>("graysun"));
                  Sprite LightSprite2 = new Sprite(Engine.Contents.Graphics.Textures["graysun"]);
      Je ne suis pas d'accord pour m'amuser à chaque fois à vérifier si c'est déjà chargé ou pas : le Load devrait vérifier si la texture a déjà été chargée ou pas ( tu stockes tout dans un dictionnary et c'est performant )
    • particleEmitter
      particlePointEmitter et ParticleLineEmitter ont pleins de propriétés en commun ils devraient dériver de BaseParticleEmitter par exemple ca rendrait plus rapide l'ajout de nouveaux emitter ?
    • Concentration de particules
      Je souhaites faire des particules qui aparaissent autour d'un point puis se dirige vers lui :
      j'ai pensé implémenter IParticleEmitter et mettre la direction dans GenerateDirection() or je ne peux pas puisque je n'ai pas la position de la particle que je traite.
      Donc a priori je vais créer un particleProcessor auquel je vais devoir fournir la position d'origine de l'emitter.
      Je ne sais pas, ca devrait nécessiter moins de boulot : à la place de setDirection et setPosition une fonction setParticle qui permet de faire les 2 en même temps ca serait mieux ? enfin bien évidemment c'est spécifique à mon cas et je n'ai aucune idée si ca peut servir dans un autre but donc si personne d'autres n'a de probleme c'est que ton système est ok
      {EDIT} j'ai procédé comme décrit et pas de problème c'est rapide à mettre en place.
      Par contre pour l'emissionforce un minimum à définir serait pas mal.

    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  2. #2
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    1) Oui c'est un point qui se discute. je suis tout a fait d'accord avec toi sur le principe, c'était d'ailleurs une fonctionalité incluse dans les versions précédentes, mais la limitation ici est la suivante :
    Si tu charges la texture "graysun" et que tu la modifies pour une raison x ou y a chaque fois ce sera cette texture modifiée qui sera retournée par la fonction Load<> ce qui est pas top. Disons que ca enlève une possibilité de modifier les textures dans le runtime.

    2) C'est surement vrai il faut que je vois ca

    3) L'emitter n'a que pour but d'émettre la particule, il ne contrôle absolument pas la particule durant sa vie. GetPosition retourne donc la position initiale d'une particule et GetDirection sa direction initiale. Ces fonctions sont appelées par le ParticleSystem lors d'une requête de création de particule.
    Les processeurs eux contrôlent bien la particule durant sa durée de vie. Par contre je ne vois pas pourquoi tu dois passer la position de l'emetteur au processeur

  3. #3
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    1- Dans ce cas là un boolean optionnel à la fin si l'on veut recharger et le tour est joué.

    3-
    L'emitter n'a que pour but d'émettre la particule : Oui il lui donne la direction initial et donc il devrait être capable de diriger les particules vers le centre de l'emitter.
    Et bien dans le processor je n'ai pas réussi à recupérer la position de l'emitter je l'ai donc passé en argument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     class ParticleConcentrationProcessor : ParticleProcessor
        {
    
            // Fields
            IParticleEmitter ParticleEmitter;
    
            // Methods
            public ParticleConcentrationProcessor(IParticleEmitter ParticleEmitter)
                : this(ParticleEmitter, ParticleProcessorTimer.AlwaysActiveTimer)
            {
            }
    
            public ParticleConcentrationProcessor(IParticleEmitter ParticleEmitter, ParticleProcessorTimer Timer)
                : base(Timer)
            {
                this.ParticleEmitter = ParticleEmitter;
            }
    
            public sealed override void Initialize(Particle Particle)
            {
                Particle.Direction = ParticleEmitter.Center - Particle.Position;
                Particle.Direction.Normalize();
    
                
    
                if (Particle.Speed < 0.5f)
                    Particle.Speed = 0.5f;
            }
    
            public sealed override void Process(Particle Particle, float DeltaTime)
            {
                Vector3 newDirection = ParticleEmitter.Center - Particle.Position;
                newDirection.Normalize();
    
                float length = (Particle.Direction - newDirection).Length();
    
                if (length > 0.5f)
                    Particle.CurrentLifeTime = Particle.LifeTime;
    
            }
    Oui je sais je teste à chaque frame la distance au centre afin de le supprimer alors qu'il serait mieux de mettre le bon particle.lifetime à l'initialisation.
    Mais lorsque j'ai fait Particle.LifeTime = Particle.Direction.length / Particle.Speed;
    ca n'a pas fonctionné correctement :/
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  4. #4
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    1 - Oui mais c'est un peu plus compliqué que ca de fait de la vitualisation des procédures d'importation et du système de codec. C'est faisable largement je pense mais il faut que j'y réfléchisse.

    3 - Je comprends ton soucis. En fait tu reproche à l'emitter le fait qu'il assigne une position et une direction lors de la naissance de la particule sans lien particulier entre ces 2 composantes. C'est bien ca ?
    Dans ce cas pourquoi ne pas faire un émetteur qui dans le "GetPosition" initialise également la direction dans une variable locale, laquelle variable sera retournée dans la fonction "GetDirection" ?

  5. #5
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    c'est bien ca

    Euh concernant ta méthode je trouve ca assez moche dans la mesure où il faudrait forcément appeler GetPosition avant ca releve + du bricolage ; comme je le disais si ca ne pose probleme que dans mon cas ce n'est pas un probleme en soit

    Par contre au niveau du code posté tu peux m'éclairer sur pourquoi si je mets :

    Particle.LifeTime = Particle.Direction.length / Particle.Speed;
    dans l'initialisation
    Ca ne fais pas disparaitre la particule quand elle arrive à destination? ( et que donc je suis obligé de faire mon test dans l'update)
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  6. #6
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    De toute façon GetPosition et GetDirection seront appelés à la naissance d'une particule quelque soit le cas de figure et dans cet ordre. Tu n'as donc aucun besoin d'appeler quoi que ce soit. Dans mon esprit ca donnerais un truc de ce gout la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private Vector3 PointCible;
    private Vector3 MaDirection;
    
    GetPosition()
    {
        Vector NouvellePosition = ...
        MaDirection = NouvellePosition - PointCible;
        return NouvellePosition;
    }
    
    GetDirection()
    {
        return MaDirection;
    }
    ----------

    Pourquoi veux-tu mettre à jour le Lifetime de la particule ? Je comprends pas bien le but de ta commande.
    Cette variable indique la durée de vie de la particule.
    Indique moi ton but en faisant cette opération, je pourrais surement mieux t'aiguiller ensuite

  7. #7
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Oui oui je voyais bien ce que tu voulais dire mais je trouve tout de même que ça fait bricolage

    -------------------------
    Oui effectivement je n'ai pas était très clair
    Les particules vont se diriger vers le centre de l'emitter et doivent être détruite dès qu'elle l'atteigne : il faut donc changer leur durée de vie en fonction de la distance et de leur vitesse.
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  8. #8
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    MoDDiB tu vas être content, j'ai fini d'implementer le contrôle des matériaux des modèles via les nodes... enfin il me semble que c'est toi qui m'avait demandé ca

    Je fais mes tests pour l'instant et cela semble bien fonctionner.

  9. #9
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Citation Envoyé par funkydata
    MoDDiB tu vas être content, j'ai fini d'implementer le contrôle des matériaux des modèles via les nodes... enfin il me semble que c'est toi qui m'avait demandé ca

    Je fais mes tests pour l'instant et cela semble bien fonctionner.
    Oui oui c'est une bonne nouvelle
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  10. #10
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    pour cause de Split screen sous windows en 1280x1024 et de jeux qui ne fonctionnent plus j'ai du desinstaller les drivers de ma carte et passer à des drivers pas si vieux que ca : janvier 2006 : même bug qu'au tout début tous les objets de bases ne sont plus visibles (cube et particules) je vais tenter et retenter de trouver des drivers viables mais si les models s'affichent correctement c'est sans doute qu'il y a un léger problème au niveau des objets de bases non ?
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  11. #11
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Citation Envoyé par MoDDiB
    pour cause de Split screen sous windows en 1280x1024 et de jeux qui ne fonctionnent plus j'ai du desinstaller les drivers de ma carte et passer à des drivers pas si vieux que ca : janvier 2006 : même bug qu'au tout début tous les objets de bases ne sont plus visibles (cube et particules) je vais tenter et retenter de trouver des drivers viables mais si les models s'affichent correctement c'est sans doute qu'il y a un léger problème au niveau des objets de bases non ?
    Pas si vieux que ca 1 an et demi c'est déjà pas mal je trouve pour des drivers.
    Bon enfin, ceci dit, il est certain qu'un problème se pose la dessus et honnêtement j'ai du mal à comprendre pourquoi la géométrie générée ne s'affiche pas alors que la géométrie chargée oui. Surtout que ces 2 méthodes utilisent des classes communes
    Alors oui, il doit y avoir un léger problème, mais ce qui est le plus ennuyeux je dirais, c'est que de tous les béta testeurs, tu es le seul a avoir ce problème.
    Alors même si je pense qu'en effet cela n'est pas normal, ton pc/drivers y sont surement quand même pour quelque chose
    On essayera de resoudre ca par quelques tests ce week-end, si tu es dispo.

  12. #12
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Citation Envoyé par funkydata
    Pas si vieux que ca 1 an et demi c'est déjà pas mal je trouve pour des drivers.
    Bon enfin, ceci dit, il est certain qu'un problème se pose la dessus et honnêtement j'ai du mal à comprendre pourquoi la géométrie générée ne s'affiche pas alors que la géométrie chargée oui. Surtout que ces 2 méthodes utilisent des classes communes
    Alors oui, il doit y avoir un léger problème, mais ce qui est le plus ennuyeux je dirais, c'est que de tous les béta testeurs, tu es le seul a avoir ce problème.
    Alors même si je pense qu'en effet cela n'est pas normal, ton pc/drivers y sont surement quand même pour quelque chose
    On essayera de resoudre ca par quelques tests ce week-end, si tu es dispo.
    Oui je suis totalement sur que le problème vient surtout de mon pc mais bon si ca arrive à moi ca arrivera forcément un jour à quelqu'un d'autre.
    Donc oui je suis dispo ce week end
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

Discussions similaires

  1. [Système] Beta-test détection de proxy
    Par BeRoots dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2009, 11h27
  2. [Joost] invite pour beta test
    Par grabriel dans le forum Films & TV
    Réponses: 50
    Dernier message: 17/05/2007, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo