web-dev-qa-db-fra.com

Exemples de diagramme de classe pour RPG (jeu de jeu de rôle)

Est-ce que quelqu'un sait où je peux trouver des exemples de diagrammes de classe pour le développement de jeux RP? Quelque chose de similaire à ici serait assez utile. Je ne cherche pas de choses que je peux copier avec esclavage, mais juste pour différents exemples que diagramme diverses solutions aux problèmes que je découvre au fur et à mesure que j'essaye de crayonner mes propres cours.

27
Steerpike

Je connais Emmanuel Deloget de Gamedev.net mais je ne suis pas sûr de choisir d'utiliser la hiérarchie qu'il y a là! Trop d'héritage, pas assez de flexibilité.

Si j'écris un RPG basé sur le texte (comme je l'ai fait dans le passé), cela ressemblerait un peu à ceci (même si je n'ai pas le temps d'établir un diagramme pour cela, tristement):

  • Les créatures, les chambres et les articles dérivés de la mondialisation, avec des objets mondiaux organisés dans une structure composite, les articles peuvent donc vivre dans d'autres objets, transportés par des créatures, qui existent dans les chambres. La mise en œuvre du modèle de visiteur pour les globilles pourrait bien fonctionner.
  • CrétureType et classes d'optionType contenant les données de "classe" pour les instances de créature et d'élément individuelles, qui renvoient à l'objet "Type" correspondant. (par exemple, des points de vue de base et des statistiques dans l'ancien, les points de vie actuels et les effets transitoires dans ce dernier). Je pourrais les implémenter comme des listes prototypiques de propriétés qui se sont copées dans la créature ou les cas d'article lors de leur création. Vous pouvez implémenter l'héritage de propriété via une propriété "parent" de sorte qu'une instance spécifique de créature de goblin puisse se rapporter au crémaType 'Warrior Goblin' CreatureType, qui contient une référence parent au crémaType 'Générique Goblin'. Etc.
  • Les sorties qui appartiennent à leur chambre et sont une solution et qui détaillent la direction du voyage, diverses conditions de passage, etc.
  • Les zones contiennent des groupes de chambres liés par une organisation logique.
  • Une classe d'occurrence pour dicter où la créature et les instances d'objet sont créées (par exemple, quelle salle, ou sur les coordonnées), lorsqu'elles sont créées et avec quelle fréquence, et à partir desquelles des créatures et des éléments d'identité. Vous pouvez avoir une certaine logique ici pour aléater un peu des choses.
  • Des sorts, des compétences, des capacités, etc. Tous dérivés d'une classe d'action de base ou d'une interface spécifiant les conditions préalables (par exemple, une position actuelle, des points de mana, un certain degré d'apprentissage d'une compétence, etc.). Les commandes normales et les actions peuvent aussi aller ici car ils ont souvent une sorte d'exigences également (par exemple, une commande "Sleep" nécessite que vous ne dormez pas déjà.)
  • Une classe futurée qui est essentiellement un rappel que vous appuyez sur une file d'attente prioritaire pour exécuter à l'avenir. Vous pouvez les utiliser pour planifier des tours de combat, des temps de refyclés, des cycles de nuit/jour, tout ce que vous voulez.
  • Un hachage/carte/dictionnaire de nom-> Value paires pour les statistiques des joueurs et des articles. Pas de type-coffre-fort mais vous apprécierez la flexibilité plus tard. Dans mon expérience de fabrication de statistiques, les variables des membres sont utilisables, mais inflexibles et que les classes de "attribut" spécialisées deviennent un cauchemar convoluté lors du débogage.
  • Un type de modificateur contenant un nom de statistique et une valeur de modificateur (par exemple +10, + 15%). Celles-ci sont ajoutées à vos créatures telles qu'elles sont utilisées (par exemple, à travers un effet de sort, ou en brandissant une arme enchantée) et d'être dépouillé ultérieurement par un futueur chronométré ou un autre événement tel qu'une commande étant exécutée.
  • Cours spécifiques à un jeu tel que PlayerClass ou PlayErrace, chacun décrivant la classe d'un joueur (par exemple, guerrier, magicien, voleur) ou race (humain, elfe, nain) et définir des valeurs et des limites de statistiques, des listes de disponibilité de compétences, des pouvoirs spéciaux, etc.
  • Classes d'interface de base du joueur qui varieront en fonction de votre type de jeu. Vous pourriez avoir une classe de rendu pour un jeu graphique ou dans une boue, vous pourriez avoir une classe de connexion reflétant la connexion TCP sur le client du joueur. Essayez de garder toute la logique de jeu de ceux-ci.
  • Une interface de script. La plupart de vos commandes, des sorts et de la créature AI peuvent être réalisés plus rapidement avec une interface de script décente et permet de réduire les temps de compilation. Il permet également de superbes capacités de débogage et de diagnostic de grandes.

Ce serait la structure de base de haut niveau que j'utiliserais.

49
Kylotan

Vous voudrez peut-être envisager un système d'entité composant plutôt qu'une hiérarchie de héritage traditionnelle; Ils ont tendance à être plus flexibles à certains types de changement, à faire un outil (par exemple, éditeur mondial) beaucoup plus facile et présenter des opportunités de parallélisation qui pourraient ne pas être sinon évidentes ou faciles.

De nombreux moteurs de jeu modernes s'éloignent de l'objet "Classe monolithique" (ou entité de classe, quoi que ce soit) et vers un "sac d'éléments" approche.

Il existe de nombreux livres et articles autour. Généralement:

Spécifiquement (certains remarquables, Google "composant" et "entité" dans diverses combinaisons pour plus):

Chacun de ces articles se lie à quelques autres.

Essayez le Kool-Aid, vous pourriez l'aimer. =)

11
leander
<tongue_in_cheek_mode_because_it_is_friday>

Juste pour commencer:

          ----------------                    --------------
          |   Creature   |                    |  Item      |
          |--------------|                    |------------|
          | Name         |                    | Name       |
          | Hp           |                    | Value      |
          | Abilities    |--------------------| Weight     |
          |--------------|                    --------------
          | Attack       |
          ----------------
                 ^
                 |
        ----------------------
        |                    |
----------------    ----------------
|  Hero        |    |  Monster     |
|--------------|    |--------------|
| Level        |    |              |
|--------------|    |--------------|
| KillMonster  |    | AttackAndDie |
| GrabTreasure |    | DropTreasure |
----------------    ----------------

</tongue_in_cheek_mode_because_it_is_friday>
5
Toon Krijthe

A approche très différente par Steve Yegge.

4
h0b0
4
Andreas Grech

Regardez - JADE'S JAVADOC pour un bon aperçu d'un jeu complexe :)

3
changelog

Soyez audacieux, votre jeu ne devrait pas être un clone de hack et de baisser. Vos acteurs devraient être capables de changer de côté, de prendre leur propre initiative enrachant d'autres acteurs, etc. Sinon, quel est le point?

   +-----------------------------+
   V                             |
[Actor] ------- [Allegiance] ----+
 - risk comfort    - weight
 - temerity        
1
Justin