rewind a écrit 3425 commentaires

  • [^] # 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é à 2.

    url ?

    ici

    ça n'a l'air de rien, mais mettre tout le monde d'accord sur une licence libre est important, cela devrait être fait au départ (même si c'est un peu pénible, cela fait partie du jeu…).

    Entièrement d'accord.

    Pour aller plus loin : http://faq.tuxfamily.org/CommunicationLibreGame/Fr (commentaires les bienvenus, il y a quelques poncifs assénés, pouvant demander quelques détails même si c'est complet pour le domaine).

    Je vais mettre un lien sur cette page depuis le site du club, ça peut servir ;)

  • [^] # 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é à 3.

    Ouais enfin, déjà avoir des jeux jouables à la fin, ça sera une bonne nouvelle. C'est l'objectif : finir les jeux. Après, si les jeux vivent leur propre vie, très bien. Si les étudiants veulent l'améliorer l'année suivante, pourquoi pas. Bref, on va avancer et voir ce qui se passe.

  • [^] # 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é à 6.

    Attention à la licence !

    Ils ont eu droit à une mini-formation sur ça à la première séance (dispo sur le site) ! Après, je vais veiller à ce que tout soit carrés à ce niveau là.

    N'hésite surtout pas à nous faire part de ce qui sortira de la Dead Pixel Society, des fois qu'un jeu intéressant mais abandonné par les étudiants soit repris par une communauté ou que le fait de voir que son jeu est appréciés par d'autres pousse les étudiants à continuer.

    On a fixé les projets mardi dernier, ça s'annonce bien, les étudiants sont motivés. J'espère que les 5 projets arriveront au bout (et je vais tout faire pour ça). Et oui, j'en reparlerai parce que c'est une expérience très intéressante, même humainement.

  • [^] # 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 semble limiter le concept et non pas le pousser à bout, en ayant de choses figées ainsi tu perd l'avantage de la flexibilité des systèmes à entité

    J'essaie d'épurer le concept, d'en tirer la substantifique moelle. Je ne pense perdre aucun avantage pour l'instant, mais j'explore une façon de faire qui pourrait au contraire offrir plus de clarté et de possibilités. Je ne dis pas que ça va réussir et que c'est la bonne manière de faire. Peut-être que je vais me planter complètement, mais je pense que ça vaut le coup d'essayer. Et pour l'instant, comme je l'ai dit, je suis mitigé. Dans cette optique, je réfléchis beaucoup aux liens entre les systèmes à entités et la gestion des événements qu'on retrouve dans quasi toutes les implémentations, y compris la mienne. Je me dis que ce n'est pas un hasard, il y a quelque chose à creuser, quelque chose de plus profond que «on ne peut pas tout faire avec un système à entités».

    tu met la priorité sur une action qui me semble vraiment de moindre importance. Déjà beaucoup de jeux n'ont pas de sauvegarde, mais aussi, c'est quelque chose qui peut se permettre d'être plus lent. C'est rare les sauvegardes en temps réel, les joueurs accepte généralement bien qu'une sauvegarde ne soit pas instantanée.

    Un RPG sans sauvegarde, comment dire… Pour beaucoup de jeux, c'est effectivement soit inutile, soit trivial. Pour un RPG, ça ne l'est pas et c'est même assez central, ça fait aussi parti du gameplay (sauvegarde possible tout le temps ou sur un point de sauvegarde ? ça change la physionomie du jeu). Ce n'est pas la vitesse de sauvegarde qui m'intéresse (si ça met 0.1s ou 2s, ça ne me fait ni chaud ni froid), mais savoir quoi sauvegarder et réfléchir aux liens avec les systèmes à entités.

  • [^] # 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.

    Tout à fait, ça fait partie des liens que j'ai donné au premier épisode. Mais on n'a sans doute pas la même lecture de ces articles. Et on ne fait peut-être pas les mêmes types de jeu.

    Il y a aussi cet article de Richard Lord qui se réfère aussi à ces articles et qui dit :

    Another benefit of the component/system architecture is apparent when you want to save and restore the game state. Because the game state is contained entirely in the components, and because these are simple value objects, saving the game state is a relatively simple matter of serialising out the components, and restoring the game state involves just deserialising the data back in again.

    Si je ne m'abuse, c'est plus ou moins ce que je m'évertue à dire depuis le début.

  • [^] # 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.

    Qui dit restauré … dit sauvegarde ?

    Non. Elle vient d'une autre source que la sauvegarde, justement. C'est ce que j'ai appelé des données statiques. En l'occurrence, la carte, elle est chargée à partir d'un fichier TMX qui n'existe qu'en un seul exemplaire (et pas un par sauvegarde).

  • [^] # 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 prétends pas détenir la vérité absolue. J'essaie de pousser un concept au bout. Et le concept, il ne vient pas de moi, il a été décrit par d'autres et j'essaie de m'y tenir. Je ne doute absolument pas qu'on puisse faire autrement et que ça marche. Et je ne doute pas qu'il existe de multiples variantes qui fonctionnent également.

  • [^] # 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 sais pas faire la différence entre valeur et pointeur ? À l'extrême, tu vas sauvegarder le nom de l'asset utilisé par l'entité, pas l'asset lui même (qui se trouve déjà dans les ressources de ton jeu). Pousser un raisonnement à l’extrême OK, mais faut un minimum qu'il tienne la route si tu veux convaincre.

    OK, prenons une carte à base de tuiles. Pour l'instant, j'ai généré des cartes de taille 512x512 (mais la carte finale sera sans doute plus grande). Pour chaque tuile, tu as besoin des informations suivants : quel est le tileset (je te le fais à un entier, un indice dans un tableau de tileset), et les coordonnées sur ce tileset (deux entiers). Donc trois entiers par tuiles. Mettons que tu optimises le codage et tu t'en sors à 64 bits, donc 8 octets. Tu en as pour 2Mio pour toutes tes tuiles. Tu les mets dans ta sauvegarde ou pas ? Non, bien sûr. Est-ce utile de les mettre dans des composants ? Et bien pour mon jeu, absolument pas. Aucun intérêt. Je peux gérer ma carte à part sans problème (et même ça m'apporte des avantages parce que je peux dessiner les couches dans l'ordre que je souhaite et de manière optimisée).

  • [^] # 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.

    Donc si j'ai bien compris, ces questions de statique/dynamique/config/entité/etc te bloque au niveau architecture

    Non, ça ne me bloque pas, ça me force à penser correctement.

    Du coup, je vais poser une question plus directe sans suggestion de réponse pour te laisser élaborer : quel est le problème que tu essayes de résoudre par rapport à la sauvegarde ?

    Que la sauvegarde et surtout le chargement soit facile. J'ai un jeu qui va nécessiter de sauvegarder tout un tas de trucs (où en est le perso dans la quête X, quels sont les objets laissés sur place que le perso peut vouloir récupérer plus tard, …) et avoir un système de sauvegarde/chargement facile va aider énormément plutôt que de devoir faire le travail de savoir ce qu'il est nécessaire de sauvegarder ou pas suivant chaque entité et composant.

    Les systèmes à entités permettent une sauvegarde facile si on fait attention, pourquoi je me priverais de cet avantage en dérogeant du paradigme parce que ça a l'air plus facile ?

  • [^] # 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)