Können Leistungssysteme später in der Entwicklung implementiert werden?

12

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?

Bryan Harrington
quelle
3
Ich habe vor ein paar Jahren ein bekanntes DOS-Spiel auf Windows portiert - eines der Dinge, die ich gerne hinzugefügt hätte, wenn wir Änderungen am Gameplay vorgenommen hätten - wären Erfolge gewesen. Wenn ich also Erfolge zu einem über 10 Jahre alten Spiel hinzufügen könnte, das eindeutig nicht dafür ausgelegt ist, würde ich sagen, dass sie überall hinzugefügt werden können. Heck, genau diese Seite hat Erfolge ..
Jari Komppa

Antworten:

19

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.

Tetrade
quelle
Ja, ich mache das jetzt. Es war ziemlich einfach, sich 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 Kugel
abgefeuert hat
5

Vorausgesetzt, 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.

Moo-Juice
quelle
2

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.

Rajavanya Subramaniyan
quelle
Das ist eine wirklich gute Lösung für die Implementierung nach der Entwicklung. Ich werde dies berücksichtigen, da ich immer noch nicht sicher bin, ob ich es implementieren möchte. Ich könnte es in einer späteren Phase tun, weil ich nicht möchte, dass der Umfang meines Projekts außer Kontrolle gerät.
Bryan Harrington