CardGameEngine

Scheindorf Message lu Posté le 28 Mar 2009 à 15:15 Bulle
Avatar de Scheindorf
Explorateur

Messages : 77
GCPoints : 30404
Je viens présenter ici un projet qui pour le moment n'est pas commencé au niveau de la programmation, et qui peine a avancer au niveau conceptuel mais dont l'enjeu, me semble, intéressant.

Je vais en faire un bref résumer: dans le cadre du Projet Corridor, nous tentons de développer un moteur universel de gestion de jeu de cartes, basé sur une architecture Client-Serveur afin de découpler entièrement la gestion des parties et l'interface utilisateur.
Le développement du serveur devrais se faire en Ruby et trois clients sont prévus :
-Affichage texte console en php (possiblement avec ncurses)
-Affichage via web en php/html
-Affichage graphique en ruby (avec ruby-gtk je pense)

Le but est de pouvoir entièrement gérer n'importe quel jeu de carte classique (poker, black jack, 8 américain...) ou de type "jeu et collection" (dont des exemples connus seraient magic, yugioh...).

Une des difficultés est d'isoler tout les évènements et composantes d'un jeu de carte, le schéma actuellement retenu se base sur l'arborescence suivante , la racine étant le jeu.
/GroupeX/JoueurY/PhaseZ/ZoneA/PileB/CarteC
Chaque niveau contenant entre autres comme dans tout objets : propriétés, méthodes et évènements.

Le langage de script utilisé pour coder les méthodes des différents objets de cet arborescence devrait être un langue de script "maison" basé sur la notion de déplacement d'objets d'un noeud a l'autre de l'arborescence.

Quiconque est intéressé par plus d'informations ou pour aider le projet est le bienvenu :)

ps : je ne savais pas ou poster ceci entre ici et recrutement, si il n'est pas à sa place, je n'en voudrai a personne qu'il soit déplacer ^^'
Studios Corridor

--Participez a la constitution de la base de donnée Triathlon!--
http://triathlon.lecorridor.net/question.php
stilobique Message lu Posté le 28 Mar 2009 à 18:32 Bulle
Avatar de stilobique
Newser

Messages : 2368
GCPoints : 834447
Salut :smile:

C'est un gros projet et sa reste très intéressant, actuellement qu'est-ce que cela donne ?

(___/)
(='.'= )Voici Lapin. Copiez et collez Lapin dans votre signature
(")_(") pour l'aider à concrétiser sa domination du monde.
Scheindorf Message lu Posté le 29 Mar 2009 à 01:36 Bulle
Avatar de Scheindorf
Explorateur

Messages : 77
GCPoints : 30404
Pas mal de réflexions techniques et théoriques...

Du mal à ce décider entre plusieurs approches, soit considérer les différentes partis de l'arborescence comme des objets, soit carrément en faire un pseudo systeme de fichier...

Si déjà j'arrive à passer cet écueil je pourrai peut être commencer concrètement la réalisation...
Studios Corridor

--Participez a la constitution de la base de donnée Triathlon!--
http://triathlon.lecorridor.net/question.php
SEB Message lu Posté le 29 Mar 2009 à 10:28 Bulle
Avatar de SEB
Membre Evolué

Messages : 554
GCPoints : 103313
Très honètement si je ne dis pas de bétise,

Ruby possède la gestion des objets ??? (confirmez mon ignorance XD)
Donc dans ce cas a mon avis tu as tout intérèt à utiliser la première methode que tu a cité, à savoir untiliser des objets. (Car après tout un systeme de fichier ce n'est qu'une arborescende d'objet de type dossier et fichier ^^)

De plus ce que tu cite ici ressemble fortement à ce que l'on appelle un framework : Utiliser la même structure et les mêmes mécanismes de base en permettant simplement de crééer diverses version de la machine.

Et ce framework gagnera énormément à bénéficier de l'héritage. Créer un nouveau jeu consistera alors simplement à surcharger chacune des différentes super classe en modifiant les comportements spécifiques.

Seb

[edit]Je me suis fait un petit diagramme UML pour visualiser la conception que tu propose. Dis moi si c'est bien comme ca qu'il fallait le comprendre. Et aussi je ne comprend pas bien la hiérarchie : Zone.. mais c'est peut-etre parceque je ne pratique pas beaucoup de jeux de cartes ^^

Image

Dernière édition le 29 Mar 2009 à 10:30
NextGine : 3D games engine
Nombre de lignes actuel : 77683
Scheindorf Message lu Posté le 29 Mar 2009 à 13:02 Bulle
Avatar de Scheindorf
Explorateur

Messages : 77
GCPoints : 30404
Je ne connais pas la définition exacte de framework, c'est une autre lacune que j'essaye de combler. Je ne pourrais te dire si c'en est un. J'ai tellement de mal avec les bibliothèques et autres, c'est à peine si j'ai compris comment me servir de ruby-gtk et c'est pas franchement compliqué....

Sinon, oui, ruby est entièrement objet, le moindre élément est un objet. Il est très simple de créer des objets, et même d'en modifier la structure dynamiquement.

Effectivement, un systeme de fichier n'est qu'une arborescence d'objets de type "dossier" et "fichier"...

Voici la représentation celons mon modèle des elements de la structure du poker texas hold em' et de YuGiOh (j'aurai preferé mettre magic l'assemblée mais je ne me souviens pas de tout, et flemme de chercher).

La numérotation 0 est particulière car signifie "commun a tous", les propriétés qui se trouvent dans un élément 0 et ses sous objets jouent le rôle de modelé et ne sont modifiés que localement dans les éléments ayant un Id supérieur.

[Jeu0 : Texas hold em]
#[Groupe0]
##[Joueur 0]
###[Phase 1 : blind]
###[Phase 2 : distribution]
###[Phase 3 : pre flop]
###[Phase 4 : Mise 1]
###[Phase 5 : Flop]
###[Phase 6 : Mise 2]
###[Phase 7 : Turn]
###[Phase 8 : Mise 3]
###[Phase 9 : River]
###[Phase 10: Mise 4]
###[Phase 11: showdown]
###[Phase 12: ending]
##[Joueur 1 fictif : zones communes]
###[Phase 0]
####[Zone 1 : Centre de table]
#####[Pile 1: Cartes]
######[Carte 1 à 55]
#####[Pile 2: Defausse]
#####[Pile 3 : Tableau]
#####[Pile 4 : Pot]
##[Joueur 2 ... Joueur n]
###[Phase 0]
####[Zone 1 : Main]
#####[Pile 1]
####[Zone 2 : Mises]
#####[Pile 1 : Reserve]
######[n cartes "jetons"]

[Jeu0 : YuGiOh]
#[Groupe 0]
##[Joueur 0]
###[Phase 0]
####[Zone 1 : Deck]
#####[Pile 1]
######[Importation des cartes du joueur]
####[Zone 2 : Terrain]
#####[Pile 1 : Monstres]
#####[Pile 2 : Magies]
####[Zone 3 : Hors Jeu]
#####[Pile 1]
####[Zone 4 : Cimeterre]
#####[Pile 1]
####[Zone 5 : Fusion Deck]
#####[Pile 1]
###[Phase 1 : Draw]
###[Phase 2 : Standby Phase]
###[Phase 3 : Main Phase 1]
###[Phase 4 : Battle Phase]
###[Phase 5 : Main Phase 2]
###[Phase 6 : End Phase]
##[Joueur 1 fictif : carte commune]
###[Phase 0]
####[Zone 1 : Carte Terrain]

Bon voila, le modèle est pas encore parfait mais c'est plus ou moins ça
Studios Corridor

--Participez a la constitution de la base de donnée Triathlon!--
http://triathlon.lecorridor.net/question.php
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0364 secondes