Ich bin unschlüssig, ob ich diese Funktion zu diesem Zeitpunkt in meinem Spiel implementieren möchte oder nicht. Ich möchte nicht, dass das Projekt außer Kontrolle gerät, also konzentriere ich mich zuerst auf die Kernmechanik.
Ist dies eine Funktion, die später einfach zu implementieren ist, vorausgesetzt, ich steuere alles und speichere alles?
game-design
achievements
Bryan Harrington
quelle
quelle
Antworten:
Fragen Sie aus der Perspektive der Implementierungstechniken oder der Auswirkungen des Designs? In jedem Fall lautet die Antwort auf Ihre Frage "Ja".
Aus technischer Sicht finden Sie im Allgemeinen nur die Haken in Ihrem Code, die auf Ihre Leistungsereignisse reagieren, und geben dort Ihren Statistik-Tracking-Code ein. Möglicherweise müssen Sie einige neue Dinge hinzufügen, wenn Sie Dinge verfolgen, die keine eigenständigen Ereignisse sind, die bereits im Spiel stattfinden (zum Beispiel: X Anzahl der gespielten Stunden).
Was das Design anbelangt, sind Erfolge äußerste Motivatoren, und wenn man sie hinzufügt, spielt das im Kern des Gameplays nicht allzu viel, außer für Leute, die sie aufsuchen wollen. Sie sind also ziemlich sicher.
quelle
shotsFired++
in den Teil einzufügen, in dem neue Aufzählungszeichen instanziiert werden, undshotsHit++
in dem in den Teil, in dem eine Kugel einen anderen Spieler beeinflusst. Es hat geholfen, dass ich nachverfolgte, wer welche KugelVorausgesetzt, Ihre Game-Engine ist gut konzipiert und verwendet ein beobachtbares Ereignissystem (bei dem Ereignisse von Interessenten generiert und abgehört werden), sollte es recht einfach sein, ein Erfolgssystem zu einem späteren Zeitpunkt (durch Hinzufügen) zu "einzufügen" geeignete Zuhörer). Diese Art von Design ist sehr flexibel.
quelle
Da die vorhandenen Personen bereits gute Antworten hinzugefügt haben, lassen Sie mich ungedeckte Situationen beantworten.
Wenn Sie überhaupt in der Lage sind, das Codieren Ihres Spiels abgeschlossen zu haben und nun damit zu beginnen, Erfolge zu codieren, und es für sehr komplex halten, zu viele Variablen und Zählungen zu verwalten und sie bei bestimmten Ereignissen und ähnlichen Dingen zu löschen.
Sie können immer eine Klasse (vorzugsweise Singleton) erstellen, um alle Ereignisse zu empfangen. Nun liste alle deine Erfolge auf. Listen Sie dann alle Spielereignisse auf, die nachverfolgt werden müssen. Zum Beispiel sieht meine aktuelle Liste so aus
KILL ENEMY - Gehen, Kugeln PLAYER DEATH - Abfallen, Gesundheit ENTER_ROOM, EXIT_ROOM etc.
Diese zusätzlichen Details wie Gehen, Kugeln können Parameter sein. Haben Sie jetzt eine Funktion namens fireEvent in dieser Achievement-Tracking-Klasse. Durchsuchen Sie alle Stellen im Code, an denen Sie fireEvents ausführen und diese Funktion aufrufen müssen. Jetzt erledige den Rest der Drecksarbeit in der Achievements-Klasse. Dies ist der sicherste Weg, um vorhandenen Code und Code-Erfolge nicht zu stören. Für mich hat es ziemlich schnell geklappt.
quelle