2010-12-10 24 views
1

J'ai commencé à aider avec un jeu open source (basé sur Cocoa, Obejctive-C, Xcode). Le moteur de jeu existant est déjà configuré pour permettre au personnage de courir autour du monde, de rencontrer un ennemi et lorsque le combat est commencé, un objet de caractère est appelé avec l'objet de l'unité ennemie à attaquer. Ce characterObject a une méthode par défaut pour attaquer l'ennemi.Game Design: Un plug-in est-il la meilleure solution pour ce problème? (Cocoa, Objective-C)

Je voulais améliorer cette conception en étendant le programme pour permettre à d'autres de développer un plugin combatUnit qui gérerait les actions de combat de leur propre manière programmée. Cela pourrait ouvrir la communauté à développer différents styles de combat et arriver à leur propre style de jeu unique. Comme j'ai commencé à regarder dans les plug-ins et des exemples sur la façon de construire, la plupart des exemples gardé le plug-in relativement isolé des internes du reste du programme. Et toutes les données dont le plugin a besoin seraient transmises à la routine. Cependant, dans ce cas, un développeur d'unité de combat peut vouloir avoir accès à de nombreux objets externes dans le jeu existant: un développeur peut également vouloir connaître les unités ennemies proches pour éviter toute addition potentielle dans un combat. avoir accès à plusieurs des objets d'environnement existants pour obtenir ces données, le personnage pourrait être dans un groupe et le développeur pourrait vouloir accéder aux informations du groupe et aux données de chaque joueur pour déterminer s'ils devraient guérir, etc ... Ne sachant pas ce que développeur a à l'esprit, il serait impossible pour moi d'essayer de prédire et de transmettre toutes les informations potentielles pour eux à utiliser.

Donc, ma question est: Est-ce une bonne application pour un plug-in? Si tel est le cas, lors du développement du plug-in, comment puis-je ouvrir les autres objets pour lesquels le développeur du plug-in doit se positionner?

Existe-t-il une autre approche pour résoudre ce problème? Quelque chose d'autre qu'un "plug-in" qui serait plus approprié pour que le code ait accès aux objets du jeu?

Merci pour votre aide!

Répondre

0

C'est un bon exemple pour faire des plug-ins. Comme alternative, vous pouvez compiler les nouveaux objets directement dans le jeu ou utiliser un interpréteur de langage de script. Mais avec ceux-ci vous devrez résoudre les mêmes problèmes de comment donner accès aux internes du jeu à la nouvelle unité de combat.

Le moyen le plus propre de le faire serait de définir une interface pour le jeu (soit en tant que protocole ou une classe de base) et de passer cela au plug-in. En utilisant cet objet, le plug-in peut alors interroger tout ce dont il a besoin.