rewind a écrit 3416 commentaires

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Tu ne réponds pas à ma question. Je me doute bien que tu le fais pour une raison, mais je ne comprends pas laquelle.

    Pour l'instant, l'avantage énorme que je vois, c'est que la sauvegarde est triviale à faire si tu as bien séparé avant.

    Ensuite je pense que les problématiques de sauvegarde sont secondaires : quelle est le problème de sauvegarder une entité statique ? Si c'est la taille du fichier de sauvegarde, n'importe quel algo de compression te ferait gagner beaucoup.

    Oui mais ça veut dire que tu sauvegardes plein de choses inutiles. Si je pousse le raisonnement à l'extrême, tu vas te retrouver à sauvegarder tous les assets du jeu.

    Et justement non, utiliser une entité pour afficher le fond de carte ne crée pas d'exception : tout ce qui est visible est une entité avec un composant Affichage.

    Ce qui est le plus difficile, ce n'est pas d'afficher un truc, c'est de faire une sauvegarde du jeu.

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Je veux bien savoir lequel ?

    Il s'agit simplement de mieux modéliser ton application et de mieux comprendre les interactions entre les différentes parties. Si tu comprends mieux ce que tu fais, tu mieux utiliser des paradigmes plus fins et donc plus optimisés.

    Ben, tu peux aussi définir tes entités dans un fichier texte

    Tu peux. Mais ce n'est sans doute pas la meilleure façon de faire, à mon avis.

    Vu d'ici je dirais :
    * une entité avec un composant d'affichage pour afficher le fond de cartes
    * N entités avec les composants de gameplay pour les tuiles qui en ont besoin (et en option un composant d'affichage)

    Ton entité pour le fond de carte, elle ne te sert à rien. Parce que tu ne vas pas la sauvegarder, donc tu vas devoir la traiter de manière particulière parmi toutes les entités. Donc tu crées une exception pour rien puisque tu pourrais traiter le fond de carte à part et traiter toutes les entités de la même manière (on sauvegarde toutes les entités sans exception). Je ne vois pas l'intérêt.

  • [^] # Re: Page de DPS

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 4.

    Vraiment pas mal la page et surtout les liens qu'on y trouve. C'est chouette l'idée d'option jeu vidéo à l'université.

    Ce n'est pas vraiment une option, c'est un club, donc pas de notes, pas de pression, juste du plaisir. Mais ça fonctionne très bien, mieux qu'espéré ! On attendait entre 15 et 20 étudiants, et on en a plus de 60. Du coup, on va lancer 5 projets de jeu vidéo !

    Bon courage pour la suite, ça fait un bout de temps que je n'ai pas compilé Akagoria quand j'aurais re-déménagé je me remettrais à faire des tests ;-)

    Prends ton temps, il n'y a pas eu de changement sur Akagoria depuis un moment.

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Je ne comprends pas trop pourquoi tu t'embêtes à essayer de séparer arbitrairement ce qui est statique du reste.

    Ce n'est pas arbitraire, ça a du sens du point de vue de l'application globale et d'un jeu en particulier.

    Le fait que la masse ne change pas n'est pas lié au fait que la propriété 'masse' appartienne au composant 'physique'.

    Si. La question c'est : «est-ce que tu vas devoir sauvegarder la masse parce qu'elle change pour chaque entité ou est-ce que l'information de masse va venir d'un fichier de config pour toutes les entités ?» Dans le premier cas, il faut la mettre directement dans le composant, dans le second, elle est dans un fichier de config. Ça change la manière de charger et de sauvegarder si on est dans un cas ou dans l'autre. Et après, tu as l'intermédiaire, c'est-à-dire qu'un type d'entités peut partager un ensemble de configurations possibles que tu vas identifier dans un composant (avec un enum ou un entier par exemple).

    La logique que j'utilise pour mes composants c'est simplement d'y mettre toutes les entrées/sorties d'un système - au moins on voit clairement ce que manipule un système.

    C'est ce que je fais aussi, mais par exemple, mettre tous les tuiles du fond de cartes dans des composants, c'est con. Outre le fait que c'est sous-optimal pour plein de raisons, ça n'a rien à faire là. Et pourtant, le système qui gère l'affichage, il mange des composants avec des sprites donc il pourrait manger des tuiles.

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Ben par définition des composants. Après, j'essaie de creuser les concepts, donc je tâtonne, ce n'est pas toujours évident.

  • [^] # Re: entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 4.

    Voir la réponse en bas. Dans mon cas, ça ne change pas pour l'instant, donc c'est statique. Il est évident que pour worms, ça changerait donc ça serait à mettre dans un composant.

  • [^] # Re: entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 3.

    Normalement, un composant n'a aucune méthode, c'est juste une structure de données. Tout ce qui relève du code doit se trouver dans un système (ici, un système qui serait en charge du chargement et de la sauvegarde des données).

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Je suis pas d'accord avec ça. Tu peut vouloir gérer plus de choses. Le poids et la forme peuvent très bien évoluer, c'est justement ce que tu expliquait l'an dernier avec les balles qui acceptent des inputs. Tu crée des contraintes avec ces données statiques (qui peuvent potentiellement nuire à l'évolution du jeu).

    J'aurais dû dire «sont des données statiques pour l'instant». Mais tu as entièrement raison. Le truc, c'est de savoir ce qui va évoluer au cours du jeu ou pas. Si ça bouge, alors on le met dans un composant, sinon c'est une donnée statique. Et une donnée peut passer d'une catégorie à l'autre et dans ce cas, il faut modifier le ou les composants adéquats.

  • [^] # Re: entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 3.

    Oui, c'est un peu l'idée que j'avais en tête. Mais ce n'est parfois pas si simple. L'exemple que j'ai en tête et qui m'a causé beaucoup de souci, c'est la carte. C'est typiquement un truc statique donc chargé à part. Mais elle a des interactions avec des entités, par exemple pour les collisions. Un arbre sur la carte, il n'a pas d'état dans le jeu mais il a un corps qui apparaît dans le moteur physique. De même, le fond de carte. Au début, j'avais une entité pour chaque tuile et du coup, j'affichais tout avec le système en charge de l'affichage. Grosse erreur ! Les tuiles ne font pas partie de l'état du jeu ! Mais il faut quand même bien les afficher. Donc c'est le système en charge de l'affichage qui affiche la carte, puis toutes les entités qui ont le composant qui va bien pour être affichées, comme le héros par exemple. Et dans le cas du héros, le sprite fait bien partie de l'état du jeu, parce qu'il peut changer en fonction de l'animation. Bref, quand je dis que la frontière est floue entre les deux, je parle de ça.

  • [^] # Re: entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 3.

    Si, mais il faudrait le faire pour tous les composants, et même pour chaque champs de chaque composant. Ou alors, il faut mettre cette logique dans la fonction de sauvegarde qui pourrait avoir cette information mais ça complexifie la sauvegarde. On passe d'un truc simple comme ça :

    pour tous les types de composants
        pour tous les composants de ce type
            sérialiser composant
        fin
    fin
    

    Et pour le chargement :

    pour tous les types de composants
        pour toutes les sauvegardes pour ce type
            désérialiser sauvegarde
        fin
    fin
    

    À un truc complexe comme ça :

    pour tous les types de composants
        si le composant ne doit pas être sauvegardé alors continuer
        pour tous les composants de ce type
            pour chaque champs
                si le champs ne doit pas être sauvegardé alors continuer
                sérialiser champs
        fin
    fin
    

    Et la sauvegarde devient aussi plus sportive parce que, pour les champs non-sérialisés, il faut savoir comment les initialiser, et pour les composants non sérialisés, il faut les recréer à partir d'une autre source. Du coup, la procédure est plus complexe, à mon sens.

  • [^] # Re: Système à entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 3.

    Justement j'ai une question sur les systèmes à entité. Je pense avoir bien compris le découpage système/entité/composants, mais je me demande comment faire des systèmes multi-entités. Pour du jeu vidéo c'est par exemple comment limiter le nombre d'unités ou gérer des collisions. Est-ce qu'il faut créer des composants qui pointent sur des entités (par exemple une entité stat qui connaît la liste des entités unités) ?

    Alors, je ne suis pas sûr de bien comprendre la question, mais je vais essayer de répondre.

    Si la question est : est-ce qu'une entité peut «pointer» vers d'autres entités, la réponse est oui. Comme exemple, on peut imaginer une entité «Besace du guerrier» qui a un composant Container qui contient un tableau d'entités (le contenu de la besace). C'est comme avec des pointeurs sauf qu'on utilise ici les entités qui ne sont que de simples identifiants. L'avantage, c'est que ça se sérialise très bien.

    Après, pour les collisions par exemple, c'est un peu plus complexe, et ça ramène à la discussion du dessus. Dans l'idéal, le système qui gère les collisions n'a pas besoin de pointer sur les entités directement, il peut être assez autonome. Pourquoi ? Parce que l'état d'une entité par rapport aux collisions, c'est sa position et sa vitesse. En particulier, toutes les données physiques (formes, caractéristiques) sont des données statiques. Quand on modifie la vitesse (ou la position), on prévient le moteur physique, puis au moment où le système qui contient le moteur physique se met à jour, il fait sa petite simulation. Et à la fin, on met à jour les positions et les vitesses de toutes les entités. C'est une vision simplifiée mais ça donne une idée. Le moteur physique fait ses simulations dans son coin et le système se charge de faire la passerelle entre les entités et le moteur physique.

  • [^] # Re: entité

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Nous sommes bien d'accord : le problème, c'est bien la sauvegarde. Dans un système à entités, normalement, tu sauvegardes tous tes composants, de manière à retrouver exactement ce que tu avais quand tu as sauvegardé. Les données statiques, pour moi, elles doivent être à part, parce qu'on ne va pas les charger de la même manière ni depuis la même source. Mélanger les deux comporte le risque de complexifier la sauvegarde, ce qui serait un comble vu que c'est un des avantages des systèmes à entités.

    Mais je comprends bien ton point de vue, et je mesure la difficulté de tout séparer.

  • [^] # Re: Pardon my french

    Posté par  (Mastodon) . En réponse au journal Toutes vos base sont appartiens à nous. Évalué à 10.

    Si des complotistes renommés en parle, c'est que ça doit être vrai…

  • [^] # Re: Guerre contre le terrorisme

    Posté par  (Mastodon) . En réponse au journal "Le filtrage administratif, encore, vraiment ?" par Benjamin Bayart. Évalué à 8.

    Là il y a tout de même un point notable : la guerre en question n'a pas été commencée par l'Occident, et et nos pays se coordonnent pour aider les agressés. C'est à dire, les populations agressées, parce qu'on peut difficilement parler de pays agressés dans la mesure où il s'agit en partie d'une guerre civile. C'est très, très différent d'aller attaquer un pays étranger tout de même.

    L'Etat Islamique, c'est le résultat de toutes les guerres menés dans la région et pas loin depuis des décennies (Irak, Afghanistan, Syrie, Lybie). Ils ont toutes les armes qu'on a donné aux différents camps qu'on soutenait puis en fait non. Pour quel résultat ? Toujours plus de merde. On va s'arrêter quand ? La guerre n'est jamais une solution.

    De plus, l'armée que l'on cherche à attaquer, à savoir les combattants de l'“État” islamique, est coupable d'actes de barbarie et de ce qu'on qualifie de crimes contre l'humanité, il est donc bon d'agir pour qu'ils cessent et pour qu'ils répondent de leurs actes devant la justice. Le tout est d'agir pour cela sans faire encore plus de dégâts.

    Quand on voit tous les Etats qui ne reconnaissent pas le TPI, je me demande bien par quelle justice ils vont être traité.

    Pour prendre une comparaison, deux guerres mondiales ont été terminées par une intervention des États-Unis, intervention certes guerrière puisqu'on était en guerre, mais tout à fait louable, et sans laquelle la merde dans laquelle on était aurait continué.

    La propagande atlantiste fonctionne bien. Ce qui a permis la fin de la guerre (la 2è), c'est avant tout l'avancée de l'URSS sur le front de l'est. C'est ce qui a décidé les Etats-Unis à venir en Europe, pour ne pas la laisser aux mains de ces sales communistes, faut pas déconner. Il suffit de voir le nombre de morts et la chronologie pour le comprendre. Mais de nos jours, on ne parle même plus de l'Armée Rouge quand on évoque cette deuxième guerre mondiale.

  • # Ça pique les yeux !

    Posté par  (Mastodon) . En réponse à la dépêche Design et Game Design Libre. Évalué à 7.

    «algorythmique», ça pique un peu les yeux (dans «Formation Game Design et Programming» dans le programme). Et de manière générale, le site ne rend pas bien du tout sur mon Chromium, certains items du menu bavent sur la ligne suivante. C'est dommage pour une formation au web design.

  • [^] # Re: Noms de fonctions dans la bibliothèque standard

    Posté par  (Mastodon) . En réponse à la dépêche Sortie de PHP 5.6. Évalué à 5.

    Je me réponds à moi-même : ils y pensent (mais c'est encore à un stade très précoce apparemment)

  • # Noms de fonctions dans la bibliothèque standard

    Posté par  (Mastodon) . En réponse à la dépêche Sortie de PHP 5.6. Évalué à 5.

    Est-ce qu'il est prévu dans PHP7 d'harmoniser les noms (et le comportement) des fonctions de la bibliothèque standard ?

  • [^] # Re: avance ?

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E13 : un an, premier bilan . Évalué à 2.

    Il n'y a pas de fonction supprimer ?

  • [^] # Re: But du système

    Posté par  (Mastodon) . En réponse au journal Abolir les brevets ?. Évalué à 10.

    Je suis d'accord sur le principe avec ta remarque. Mais force est de constater que les brevets d'aujourd'hui sont incompréhensibles et ne permettent pas de reproduire correctement le procédé du brevet. Il y a plus de charabia juridique que de données techniques maintenant. C'est un problème.

    De nos jours, je pense que la loi pourrait imposer de lever le secret industriel dans certains secteurs, avec les mêmes arguments que pour l'OpenData, à savoir que ça devient un impératif démocratique de savoir précisément ce qu'on nous vend, histoire de ne pas avoir de surprise après.

  • [^] # Re: Séparateur de chiffre

    Posté par  (Mastodon) . En réponse au journal C++14. Évalué à 3.

    Depuis C++11, il y a même de telle variables dans la bibliothèque standard.

  • [^] # Re: Enlève ton masque !

    Posté par  (Mastodon) . En réponse à la dépêche Vivre du logiciel libre - MediaArea.net trois ans plus tard. Évalué à 2.

    Moi je n'ai pas trouvé cet entretien si bon que ça. Il y a quelques bons passages sur son expérience, mais c'est noyé au milieu d'une compilation de ses trolls préférés qui sont déjà saoulant quand on les lit dans des commentaires. C'est dommage de profiter d'une interview de ce genre pour ramener sur le tapis tous les poncifs qu'il nous sort sans arrêt. L'entretien aurait pu être plus intéressant sans ça et avec d'autres questions, comme par exemple quel genre de services attendent les entreprises dans ce secteur, quels sont ses concurrents, etc. Bref, sans doute quelque chose de plus professionnel, plus de Martinez et de moins Zenitram.

  • # Enlève ton masque !

    Posté par  (Mastodon) . En réponse à la dépêche Vivre du logiciel libre - MediaArea.net trois ans plus tard. Évalué à -6. Dernière modification le 02 septembre 2014 à 10:38.

    malheureusement, vu qu’un partie des personnes se disant libristes s’amusent toujours à opposer une supposée pureté d’un tout libre non commercial fantasmé au commercial ou à la cohabitation avec le non-libre, il a des peurs sur le libre à enlever, c’est un travail long

    Troisième question, on l'a déjà reconnu…

    je suis assez individualiste

    Sans déconner !

    J’ai essayé de mettre un maximum de trolls dans mes réponses, spécialement pour LinuxFr, lequel prendra le plus ? :-D

    Ça va, j'ai eu bon ?

  • [^] # Re: btrfs

    Posté par  (Mastodon) . En réponse au journal Marque page sur l'unification possible des systèmes Linux. Évalué à 1.

    Oui, ce qui m'étonne, c'est que pour un problème de l'espace utilisateur, on propose une solution du noyau. Parce que là, ça revient à se lier à un système de fichier, c'est très embêtant. Je pense qu'on pourrait faire le même genre de chose avec git, sans souci (une branche par config) puisque git a été conçu au départ par Linus comme un système de fichiers.

  • [^] # Re: Wahou

    Posté par  (Mastodon) . En réponse au journal Marque page sur l'unification possible des systèmes Linux. Évalué à 2.

    Une solution qui ne décolle pas, c'est une solution ratée.

    Ça dépend, si tu l'imposes… (koff koff… systemd… koff koff)</troll>

  • [^] # Re: Séparateur de chiffre

    Posté par  (Mastodon) . En réponse au journal C++14. Évalué à 10.

    Et parfois, ça coince, comme par exemple pour les vector<vector<int> > qui ne compilent pas sans le disgracieux espace entre les deux >.

    Et bien bonne nouvelle, depuis C++11, on peut écrire vector<vector<int>> et ça compile gracieusement !