Ein Leistungssystem kann ziemlich komplex sein. Viele der Erfolge sind Sonderfälle, auf die geachtet werden muss. Das bedeutet speziellen Code, nur für diesen Erfolg. Einige sind leicht zu codieren, z. B. das Beenden eines Levels unter einer bestimmten Zeit oder die Gesamtzahl der gesammelten Münzen. So einfach wie ein Timer oder ein globaler Zähler. Die komplexeren Errungenschaften erfordern offensichtlich komplexeren Code. Das Töten von x Feindtypen über x Sekunden könnte einen rollierenden Zähler oder eine detaillierte Protokollierung mit regelmäßiger Analyse erfordern.
Wenn Sie Erfolge erzielen möchten, müssen Sie diese grundsätzlich codieren. Genau wie bei jeder anderen Funktion. Als Entwickler haben Sie Zugriff auf alle Informationen zum Spiel. Sie müssen nur protokollieren, was passiert, und prüfen, ob es Ihren Leistungsanforderungen entspricht.
Ich plane, mein Leistungssystem in das Ereignissystem zu implementieren. Da ich bereits wichtige Ereignisse zur Protokollierung sende, kann ich das Leistungssystem genauso gut abhören lassen. Das ist schön, weil sich dann der gesamte Code für Erfolge an einem Ort befindet. So können Sie beispielsweise jedes Mal ein Ereignis auslösen, wenn ein Level endet. Das Ereignis würde alle Informationen über die Leistung des Spielers auf dieser Ebene enthalten, einschließlich seiner Punktzahl, der Zeit bis zur Fertigstellung, der Anzahl der gesammelten Münzen und so weiter. Diese Ereignisse werden vom Ereignissystem gelesen und protokolliert. Sie können dann die Gesamtzahl der gesammelten Münzen weiter ausführen und die Endzeiten mit früheren Bestleistungen vergleichen.
Wie für den Server zum Verwalten von Erfolgen. Ich glaube, einer der großen Vorteile von Erfolgen besteht darin, sie mit anderen zu teilen oder Ihre Erfolge mit denen Ihrer Freunde zu vergleichen. Wenn die Erfolge öffentlich gehostet werden, werden die sozialen Merkmale implementiert, die für viele Arten von Spielern attraktiv sind.
BEARBEITEN
Auf jeden Fall können Sie fest codierte Regeln vermeiden! Das System, das ich beschreibe, dient hauptsächlich dazu, Informationen zu sammeln und alles an einem Ort zusammenzuführen. Das wäre am besten fest codiert, und Sie müssen den Erfassungscode für zusätzliche Regeln fest codieren. Sie versuchen, so viele wichtige Daten wie möglich zu sammeln, damit Sie später mehr damit arbeiten können.
Wie Sie die Daten analysieren, liegt bei Ihnen. Eingehende Ereignisse können nach in JSON oder Lua definierten Regeln gefiltert werden. Was die Implementierung von Lua angeht, habe ich das nicht getan, daher weiß ich nicht, ob es einfach ist. Ich stelle es mir vor. Lua ist eine sehr mächtige Skriptsprache mit vielen Ressourcen, die Ihnen helfen, wenn Sie nicht weiterkommen. Scheint mir eine gute Wahl zu sein.