3 votes

Conception d'un jeu de cartes collectionnables

Je suis en train d'essayer d'apprendre comment programmer un jeu de cartes à collectionner (virtuel) (similaire à Magic the Gathering) en Javascript. J'ai lu un peu sur l'architecture MVC et les contrôleurs, mais c'est au-dessus de mes capacités (je n'ai pas suivi d'études en informatique) et je me demande si quelqu'un a des liens ou des conseils sur la façon dont je pourrais en apprendre davantage sur l'architecture du code au niveau débutant.

Chaque "carte" serait-elle représentée comme un objet, et toute la logique des règles des cartes serait-elle enveloppée dans une seule grande fonction de moteur de jeu, ou de nombreuses petites fonctions connectées les unes aux autres?

Voici une question d'exemple: Imaginez qu'il y a une carte qui dit "Quand cette carte entre en jeu, piochez une carte." Comment devrais-je concevoir le jeu pour prévoir cette situation, et comment est-ce déclenché (de la manière la plus efficace)? Est-ce que la carte déclenche le moteur de jeu, ou est-ce que le moteur de jeu analyse chaque carte jouée?

Voici un autre exemple : Imaginez qu'il y a une carte qui dit "Toutes vos cartes coûtent 1 de moins à jouer." et elle reste en jeu en permanence. Comment le jeu comprend-il qu'il doit modifier ses règles dans ce cas? Est-ce une fonction qui écoute les cartes jouées et interrompt le coût? À chaque résolution de tour, où cette règle est-elle stockée? Y a-t-il des variables qui stockent les règles de base du jeu (modificateur de coût de carte global : 0 ; votre modificateur de coût de carte : 0) et d'autres variables qui stockent ces nouvelles règles introduites par les cartes (votre modificateur de coût de carte : -1), ou ces variables sont-elles créées dynamiquement par le moteur de jeu lorsque les cartes modifient les règles (votre modificateur de coût d'elfe : -2)? Et comment les règles savent-elles qu'elles doivent changer lorsque une carte est détruite, supprimant ainsi la modification de règle de la carte?

Est-ce que ce dont j'ai besoin est un guide sur les écouteurs et les événements? (Je ne sais pas grand-chose à leur sujet, mais j'ai vu des références à ce sujet de temps en temps). Pourriez-vous me pointer dans la direction d'une bonne ressource?

Pour être clair, je n'essaie pas de demander aux gens de faire une recherche Google pour moi ; je tâtonne aveuglément dans le noir et je demande si quelqu'un pourrait me montrer les bons mots ou phrases à rechercher. Merci!

1voto

Philipp Gfeller Points 529

Il y a un très beau blog sur la recréation d'un jeu de cartes similaire : Hearthstone de Blizzard. Bien qu'il soit écrit en C# et utilise Unity comme couche de vue, vous obtenez une très bonne compréhension de la manière dont on crée une architecture adaptée pour un tel jeu. Cependant, je dois vous prévenir, recréer Magic the Gathering en Javascript peut s'avérer incroyablement compliqué et vous retourner complètement la tête (j'en ai fait l'expérience).

Blog: http://theliquidfire.com/2017/08/21/make-a-ccg-intro/

1voto

u2702 Points 526

Vous devez aller un niveau plus profond ici et réfléchir au "jeu" lui-même. Le jeu que vous décrivez sera en fait construit autour d'une "machine à états" qui est un concept informatique de base que vous devriez approfondir et comprendre avant de commencer à construire.

Les règles de votre jeu vont être une machine à états et les événements (cartes) déclenchés (en étant joués) pendant votre jeu peuvent modifier ces règles. Vous voudrez un certain type d'interprète pour "lire" la carte et modifier soit les règles soit l'état du jeu. Et puis vous aurez besoin de quelque chose pour itérer le jeu à travers les tours et les phases, lire l'état et prendre les mesures appropriées.

Vous voudrez aussi apprendre sur les piles. Si votre jeu permet aux joueurs de s'interrompre mutuellement, vous aurez besoin d'une façon de garder une trace de quel événement devrait arriver en premier parce que les événements voudront être capables d'affecter, de bloquer, de rediriger d'autres événements. Une pile vous aidera à garder une trace de cet ordre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X