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

[Révélation] Votre design pattern ?

Pseudo supprimé
Pseudo supprimé 04 novembre 2015 à 01:00:34

Kikoo,

Lors de mon expérience de création de jeux, j'ai remarqué que peu importe combien j'essaie de faire attention que mon code soit propre, ça part en balles à un moment à cause des héritages et des dépendances en spaghetti.

Actuellement je pense avoir trouvé le droit chemin avec le design pattern ECS (entity component system) , c'est juste parfait, hallucinement magique. :ouch:

Cette création est d'une intelligence qui est en train de résoudre petit à petit mes problèmes. :coeur:

J'utilise plus précisément Ashley dans libGDX, j'y suis encore dans les débuts mais je sens que c'est la bonne. :oui:

Je ne peux que conseiller l'utilisation de ce pattern avec un ECS framework.

Êtes vous d'accord avec moi ? Sinon, quel est votre design pattern préféré, et pourquoi ? :)

LGV
LGV
Niveau 28
04 novembre 2015 à 02:25:03

J'adhere tout a fait a l'ECS, et les component-based frameworks en general, mais ce sont plus des architectures que des "design pattern" au sens propre, qui proposent des solutions precises a des problemes courants bien definis.

L'ECS est une facon d'organiser les concepts pour decoupler les entites, et s'applique donc a tout un projet ou sous-ensembles d'un projet ; ca releve de l'architecture logicielle et est orthogonal aux design patterns, dans le sens ou on peut tout a fait utiliser des DP classiques (factory, singleton, strategy, etc.) au sein d'un framework majoritairement base sur la composition et les components.

Message édité le 04 novembre 2015 à 02:26:56 par LGV
Pseudo supprimé
Pseudo supprimé 04 novembre 2015 à 09:24:18

Tu as raison effectivement, je n'utilise donc pas un design pattern précis à ce que je sache, mais le pattern architectural ECS m'aide néanmoins à structurer mon code de façon propre.

Chnapy
Chnapy
Niveau 10
04 novembre 2015 à 11:58:29

Au vu de ce que vous dites je me suis renseigné sur cette architecture. J'ai trouvé un article http://blog.monstruosor.com/2012/04/30/passez-a-l-entity-system-1/.

Bon ya 2-3 trucs que j'ai pas trop compris.
Déjà le rôle de l'Entity. Alors il possède son ID et les Componant. L'intérêt de l'ID est plutot limité en Java étant donné les comparaisons par adresse possible. Ou alors l'ID sert dans le cas d'une déserialization ? Du coup à quoi sert vraiment cette classe ?
Et comment cette architecture empêche les "j'update() toutes mes entités à chaque frame" ?

Je me pose des questions :hap:

Pseudo supprimé
Pseudo supprimé 04 novembre 2015 à 13:10:35

"Et comment cette architecture empêche les "j'update() toutes mes entités à chaque frame" ?"

Disons que tu as une entité joueur avec le composant Renderable et une autre entité ennemie avec le même composant.

Tu peux à tout moment retirer le composant Renderable du joueur, et il ne sera plus géré par le système qui gère ce composant.

Un système est ce qui gère les composants.

Par exemple le RenderSystem est une classe qui fait le tour de toutes les entités ayant le composant Renderable, et applique la méthode render() présente dans le système sur chaque entité. En enlevant le composant Renderable de l'entité, elle ne fera plus partie du système.

Mais t'as pas à réinventer la roue, les ECS framework existent. :oui:

Message édité le 04 novembre 2015 à 13:14:57 par Pseudo supprimé
Chnapy
Chnapy
Niveau 10
04 novembre 2015 à 13:16:21

Ah d'accord je commence à comprendre, merci :)

Tu as des exemples de framework en Java ?

Pseudo supprimé
Pseudo supprimé 04 novembre 2015 à 13:19:06

J'utilise Ashley avec libGDX, je sais pas s'il existe un framework indépendant du framework de développement de jeu. :)

Tu peux rechercher "alternatives to ashley ecs".

Chnapy
Chnapy
Niveau 10
04 novembre 2015 à 13:34:49

Ah bah tfacon j'utilise LibGdx pour le JV

godrik
godrik
Niveau 30
04 novembre 2015 à 19:02:44

Naturellement je tends vers une architecture comme ca. Parceque le modele objet ne marche pas bien ici.

Mais j'ai du mal a comprendre comment tu fais un systeme de collision dans ce modele. Par exemple dans un shmup, je veux comparer les tirs enemi avec le vaisseau du joueur. les tirs du joueurs avec les vaisseau ennemie. Et tous les murs avec toutes les entite.

Est ce qu'il faut qu'il faut faire 3 systemes separe?

Pour le deplacement, j'ai des trucs qui bouent en ligne droite. Des trucs qui suivent un parcour predefini a l'avance. Des trucs qui suivent une autre entite. Et le joueur qui est controle manuellement.
C'est un composant different pour chaque? Avec un systeme different?

collax
collax
Niveau 10
04 novembre 2015 à 19:27:07

Le 04 novembre 2015 à 19:02:44 godrik a écrit :
Naturellement je tends vers une architecture comme ca. Parceque le modele objet ne marche pas bien ici.

Mais j'ai du mal a comprendre comment tu fais un systeme de collision dans ce modele. Par exemple dans un shmup, je veux comparer les tirs enemi avec le vaisseau du joueur. les tirs du joueurs avec les vaisseau ennemie. Et tous les murs avec toutes les entite.

Est ce qu'il faut qu'il faut faire 3 systemes separe?

Pour le deplacement, j'ai des trucs qui bouent en ligne droite. Des trucs qui suivent un parcour predefini a l'avance. Des trucs qui suivent une autre entite. Et le joueur qui est controle manuellement.
C'est un composant different pour chaque? Avec un systeme different?

Je pense que tu peux faire ça avec 3 composants differents qui s'occupe de déplacer les entités selon les règles que tu as défini et un système qui itere sur toute les entités qui ont un composant de déplacement.

Chnapy
Chnapy
Niveau 10
04 novembre 2015 à 19:38:04

Arf pas évident de s'y mettre quand on a toujours suivi le modèle objet ...

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