Les systèmes de réalisation peuvent-ils être mis en œuvre plus tard dans le développement?

12

Je ne sais pas si je veux implémenter cette fonctionnalité dans mon jeu à ce moment-là ou non. Je ne veux pas que le projet devienne trop incontrôlable, je me concentre donc d'abord sur la mécanique de base.

Est-ce une fonctionnalité qui est facile à mettre en œuvre plus tard, en supposant que je gère tout et stocke tout?

Bryan Harrington
la source
3
J'ai porté un certain jeu DOS bien connu sur Windows il y a quelques années - l'une des choses que j'aurais aimé y ajouter, si nous devions apporter des modifications au gameplay - aurait été des réalisations. Donc, si je pouvais ajouter des succès à un jeu de plus de 10 ans clairement pas conçu pour cela, je dirais à peu près qu'ils peuvent être ajoutés n'importe où. Heck, ce site a des réalisations ..
Jari Komppa

Réponses:

19

Demandez-vous du point de vue des aspects techniques de la mise en œuvre ou des ramifications de la conception? Dans tous les cas, la réponse à votre question est "oui".

Du point de vue technique, en général, vous trouvez simplement les crochets dans votre code qui répondent à vos événements de réussite et y mettez votre code de suivi des statistiques. Vous devrez peut-être ajouter de nouvelles choses si vous suivez des choses qui ne sont pas exactement des événements discrets qui se produisent déjà dans le jeu (par exemple: X quantité d'heures jouées).

Du côté de la conception, les réalisations sont des motivations extrinsèques et les ajouter ne joue pas vraiment trop dans la boucle de gameplay de base, sauf pour les personnes qui veulent les rechercher. Ils sont donc assez sûrs malgré tout.

Tetrad
la source
Oui, je fais ça maintenant. Il était assez facile de se connecter shotsFired++dans la partie où les nouvelles balles sont instanciées et shotsHit++dans la partie où une balle affecte un autre joueur. Cela m'a aidé à savoir qui a tiré quelle balle (parce que j'utilise les informations pour savoir qui a tué quoi, etc.)
bobobobo
5

À condition que votre moteur de jeu soit bien conçu et utilise une sorte de système d'événement observable (où les événements sont générés et écoutés par les parties intéressées), il devrait être assez facile de «brancher» un système de réussite à un stade ultérieur (en ajoutant auditeurs appropriés). Ce type de conception est très flexible.

Moo-Juice
la source
2

Comme les personnes existantes ont déjà ajouté de bonnes réponses, permettez-moi de répondre à des situations découvertes.

Si vous êtes dans une position où vous avez terminé de coder votre jeu et commencez maintenant à coder les réalisations et trouvez très complexe de maintenir trop de variables et de décomptes et de les effacer lors de certains événements et des choses comme ça.

Vous pouvez toujours créer une classe (de préférence singleton) pour recevoir tous les événements. Listez maintenant toutes vos réalisations. Ensuite, listez tous les événements du jeu qui doivent être suivis. Par exemple, ma liste actuelle ressemble à ceci

KILL ENEMY - marche, balles DÉCÈS DU JOUEUR - chute_offensive, santé ENTER_ROOM, EXIT_ROOM etc.

Ces détails supplémentaires comme la marche, les balles peuvent être des paramètres. Ayez maintenant une fonction appelée fireEvent dans cette classe de suivi des succès. Recherchez tous les endroits du code où vous devez déclencher des événements et appelez cette fonction. Maintenant, faites le reste du sale boulot dans la classe des réalisations. c'est le moyen le plus sûr de ne pas perturber le code existant et les réalisations de code. Cela a fonctionné assez rapidement pour moi.

Rajavanya Subramaniyan
la source
C'est une très bonne solution pour l'implémentation post-développement. Je garderai cela à l'esprit car je ne suis toujours pas sûr de vouloir l'implémenter. Je pourrais le faire dans une phase ultérieure parce que je ne veux pas que la portée de mon projet devienne incontrôlable.
Bryan Harrington