CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Entity component system question

Articka
Articka
Niveau 6
27 décembre 2016 à 17:54:35

Salut !

Je travail actuellement sur l'architecture de mon jeu et j'me suis dit qu'il faudrait bien que j'intègre cette fois l'entity component system, et après moulte recherche j'en suis arrivé à quelques questions que je vous pose ici :hap:

Voici en gros comment je vois mon le bouzin :
https://image.noelshack.com/fichiers/2016/52/1482857531-entity-comme-je-le-pense-sans-annotations.png

je voudrais juste savoir si plus ou moins ça marcherait comme ça histoire que je commence à me casser les dents on codant ce truc :snif:

LGV
LGV
Niveau 28
27 décembre 2016 à 18:29:16

Le schema est un peu trop haut niveau pour vraiment juger de l'architecture ECS en detail, mais on retrouve l'essentiel :

- data-driven, avec du xml pour la definition des entity / components
- factory, pour l'assemblage des entity / components
- entity generique, n'etant qu'une collection de components

Par contre :

- les systems sont senses travailler sur les entity, et traitent celles qui supportent un ensemble de components donnes (si position et hitbox > traite les collision, si modele ou sprite > affichage, etc.). Une fois les entites crees au chargement, c'est le point d'entree pour tous les traitements ; je ne vois pas d'exemple pertinent ou tu accedes aux components directement sans passer par leur entite

- l'xml ne devrait servir qu'a la creation initiale, i.e. chargement du niveau, les script gameplay LUA ou systems n'ont pas de raison d'interagir avec le xml. Tu pourras eventuellent faire des fichiers de sauvegarde de l'etat des entity, mais c'est un system separe

- il faudra spliter ton xml en plusieurs parties ; tu as des components communs a toutes les instances d'une entity (une porte utilise tel sprite, supporte tels etats, reagit a tels events, etc.) , et d'autres specifiques a chaque instance (CE switch ouvre CETTE porte, etc.). Donc tu as des donnees qui viennent de fichiers de definition des entites, et des donnees qui viennent des level files.

Message édité le 27 décembre 2016 à 18:31:16 par LGV
LGV
LGV
Niveau 28
27 décembre 2016 à 18:32:19

Un post ou j'avais repondu a pas mal de question qu'on m'avait pose sur l'implementation d'un ECS :

http://www.html5gamedevs.com/topic/22675-wip-relic-retro-action-adventure-2d-desktop-web/

Articka
Articka
Niveau 6
28 décembre 2016 à 01:39:36

Déjà merci LVG :hap:

En gros voilà comment je le pensais mon système on charge toutes les données XML (j'ai choisis ça :hap:) avec un parser lua (j'ai pensé à lua pour la rapidité de modification et tout :noel:) qui lance le bordel dans la factory.

il crée les components et les associes au entity.

Les entity peuvent modifier des component (genre le joueur qui affiche l'inventaire en rajoutant par exemple les composants X et Y de l'inventaire).

Et enfin les system qui régie les components genre c'est le code quoi :noel:
Les systems peuvent update les données XML voilà voilà, j'aurais peut être dû préciser ça d'avance désolé :hap:

Mais grâce à LVG je pense changer 2 - 3 trucs, je vais répondre points par points car je commencer à me perdre :hap:

- les systems sont senses travailler sur les entity, et traitent celles qui supportent un ensemble de components donnes (si position et hitbox > traite les collision, si modele ou sprite > affichage, etc.). Une fois les entites crees au chargement, c'est le point d'entree pour tous les traitements ; je ne vois pas d'exemple pertinent ou tu accedes aux components directement sans passer par leur entite

J'ai plus ou moins expliquer comment je voyais le truc (que j'aurais du faire plus tôt) ça me permet ta précision de mieux placé mon petit schéma merci :coeur:

- l'xml ne devrait servir qu'a la creation initiale, i.e. chargement du niveau, les script gameplay LUA ou systems n'ont pas de raison d'interagir avec le xml. Tu pourras eventuellent faire des fichiers de sauvegarde de l'etat des entity, mais c'est un system separe

Ok, car je pensais que le XML était aussi un endroit pour la sauvegarde de certain truc (pour ça que le system pouvais changer les données grâce a une action du joueur je sais pas :hap: )

Donc je me pencherais pour un système séparer.

- il faudra spliter ton xml en plusieurs parties ; tu as des components communs a toutes les instances d'une entity (une porte utilise tel sprite, supporte tels etats, reagit a tels events, etc.) , et d'autres specifiques a chaque instance (CE switch ouvre CETTE porte, etc.). Donc tu as des donnees qui viennent de fichiers de definition des entites, et des donnees qui viennent des level files.

Ok merci pour la précision :o

Et pour terminer

Un post ou j'avais repondu a pas mal de question qu'on m'avait pose sur l'implementation d'un ECS :

http://www.html5gamedevs.com/topic/22675-wip-relic-retro-action-adventure-2d-desktop-web/

Je rentre de travail, j'ai regardé de travers ça à l'air cool (bien que je me débrouille moyen moyen en anglais) c'est compréhensible pour moi :noel: je regarderais à tête reposer demain.

La flèche entre système et component est pas inversée ?

Ah ouai [[sticker:p/1lmk]]

J'ai vu aussi une autre faute c'était update date entre system et XML -> DATA [[sticker:p/1lmk]]

J'ai refais vraiment rapidement https://image.noelshack.com/fichiers/2016/52/1482885490-meh.png
j'en referais un après un peu plus complet si vous voulez check (si vous avez le temps :hap:) et corrigé pour savoir si j'ai bien pigé le truc et commencer à coder dessus :-)))

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment