Praktische Serie zur Online-Spieleentwicklung 1.3 Prinzip und detaillierte Erklärung des MMORPG-AOI-Algorithmus

Vorwort

Einer der Kernalgorithmen von MMORPG ist AOI. In diesem Artikel werden hauptsächlich die Grundprinzipien und Implementierungsschritte des AOI-Algorithmus anhand von drei Punkten analysiert.

(1) Warum wird AOI in MMORPGs verwendet?

(2) Die Hauptereignisse des AOI-Algorithmustyps und der AOI-Synchronisation;

(3) Detaillierte Erläuterung der Implementierung des Jiugongge AOI-Algorithmus;

Ja, es gibt eineSpieleentwicklungs-Austauschgruppe. Ich hoffe, dass jeder reinklicken kann, um Entwicklungserfahrungen auszutauschen

Warum AOI in MMORPGs verwendet wird

Angenommen, auf der Spielkarte des Servers spielen 3.000 Personen auf einem MMORPG-Spieleserver mit einem Server. Wenn der Server theoretisch die Daten und den Status des Spiels für diese 3.000 Personen verwalten muss, muss der Client diese erstellen 3.000 solcher Spieler. Akzeptieren Sie auf dem Client die vom Server gesendeten Statusänderungen der 3.000 Spieler, wodurch der Bildschirm aktualisiert und der Status synchronisiert wird. Dies stellt ein Problem dar. Für den Client muss er die Nachrichtenverarbeitung, Animation und andere logische Verarbeitung von 3000 einzelnen Zeichen aufrechterhalten. Für den Server muss jedes Mal, wenn sich der Status einer Person ändert, der gesamte Status an die anderen 2999 Charaktere gesendet werden, sodass die Bandbreite sehr hoch ist. Wenn sich eine neue Person beim Spielserver anmeldet, wird der Status geändert Insgesamt müssen 3000 Zeichen gesendet werden, deren Übertragung auch viel Bandbreite in Anspruch nimmt.

Für den Kunden ist es nicht notwendig und unmöglich, alle Spieler auf der Karte gleichzeitig zu sehen. Er muss sich nur mit den Spielern befassen, die in seinem Sichtfeld sichtbar sind. Für den Server senden Sie einfach den Status an andere Spieler, die ihn „sehen können“. Auf diese Weise wird die Menge der synchronisierten Daten und Berechnungen auf dem Client + Server erheblich reduziert. Die Technologie zur Bestimmung, welche Spieler ein bestimmter Spieler sehen kann, welche Spieler den „sichtbaren“ Bereich betreten und welche Spieler den „sichtbaren Bereich“ verlassen, wird als AOI (Area Of Interest) bezeichnet. Synchronisieren Sie für jeden Client einfach den Status der Spieler im AOI um ihn herum, und dann ist der Server dafür verantwortlich, zu verwalten, welche Charaktere den AOI-Bereich betreten und welche den AOI-Bereich verlassen, und teilen Sie dem Client dann mit, wofür der Client verantwortlich ist Betreten des AOI-Bereichs. Die Zeichen werden erstellt und die Zeichen, die den AOI-Bereich verlassen, werden gelöscht.

AOI-Algorithmustypen und Hauptereignisse für die AOI-Synchronisierung

analysierte, warum MMORPG AOI verwendet, und sprach dann über die gängigen AOI-Algorithmen und mehrere Konzepte, die vor dem Schreiben von AOI-Code verstanden werden müssen. Zu den aktuellen gängigen AOI-Algorithmen gehören die Kreuzkette-Tabelle und das Neun-Quadrat-Gitter Algorithmus. Wenn MMORPG das AOI-Management einführt, werden mehrere weitere Konzepte auftauchen:

(1) EnterAOIEvent: Wenn ein Charakter, ein Monster oder ein NPC den AOI-Bereich von Spieler A betritt, sendet der Server ein EnterAOI-Ereignis, um dem Client mitzuteilen, der Spieler A entspricht. Nachdem der Client dieses Ereignis erhalten hat, wird es spezifischer an den Server. Der Staat erstellt den Charakter;

(2) LeaveAOIEvent: Wenn ein Charakter, ein Monster oder ein NPC den AOI-Bereich von Spieler A verlässt, sendet der Server ein LeaveAOI-Ereignis, um den Client zu informieren, der Spieler A entspricht. Nach Erhalt dieses Ereignisses entfernt der Client den verlassenden Charakter , Monster oder NPC. Der NPC wird gelöscht.

Unser AOI-Algorithmus in diesem Artikel verwendet den Neun-Quadrat-Gitteralgorithmus. Wir unterteilen den gesamtensichtbaren Bereich (AOI) in einen neun-Quadrat-Gitter-Algorithmus. quadratisches Gitter. Wie im Bild gezeigt:

Warum verwenden viele Spiele den Jiugongge-Algorithmus? Lassen Sie uns einige seiner Eigenschaften auflisten:

1: Basierend auf dem Neun-Quadrat-Raster unterteilen wir die Karte in MxN-Blöcke. Ein bestimmter Spieler A muss zu einem bestimmten Block auf der Karte gehören. Dieser Block + gehört zusammen mit den 9 Blöcken um ihn herum zum AOI-Bereich von Spieler A. Die Spieler in diesen 9 Blöcken sind die Spieler im AOI-Bereich von Spieler A. Spieler A interessiert sich für die umliegenden Charaktere und die Statusänderungen des Spielers.

2: Basierend auf dem Neun-Quadrat-Raster sind die Charaktere in den neun Blöcken um Spieler A auch an den Statusänderungen von Spieler A interessiert. Wenn A eine Statusänderung hat, können wir daher schnell herausfinden, welches Interesse an diesem Status besteht zu A. Interessierte Person.

Zusammenfassend lässt sich sagen, dass es auf der Grundlage des Neun-Quadrat-Rasters sehr praktisch ist, Personen und

Detaillierte Erläuterung der Implementierung des AOI-Algorithmus basierend auf Jiugongge

Nachdem wir einige Merkmale von Jiugongge erklärt haben, analysieren wir die detaillierten Schritte des Jiugongge-Algorithmus:

Schritt 1: Bestimmen Sie die Größe eines AOI-Bereichs. Im Spiel sehen Sie die visuelle Reichweite (AOI) von Charakteren und Monstern. Im Allgemeinen wählen wir eine Größe, die ungefähr der Größe des Sichtfelds entspricht.

Schritt 2: Nachdem die Größe des Sichtfelds AOI bestimmt wurde, teilen Sie die Größe des Sichtfelds AOI in ein Neun-Quadrat-Raster auf, um die Größe jedes Blocks zu erhalten.

Schritt 3: Teilen Sie die gesamte Karte entsprechend jeder Größe des Neun-Quadrat-Rasters in entsprechende Blöcke auf.

Schritt 4: Jedes Raster entspricht einem Rasterverwaltungsobjekt. Dieses Verwaltungsobjekt speichert und zeichnet alle Charaktere und Monster in diesem Raster auf. oder NPC;

Schritt 4: Wenn Sie einen Spieler auf dem Server erstellen, speichern Sie das Spielerobjekt entsprechend der Position des Spielers im entsprechenden Rasterverwaltungsobjekt.

Schritt 5: Jedes Mal, wenn sich der Spieler bewegt, wird das Raster, in dem sich der Spieler befindet, basierend auf der Position nach der Bewegung neu berechnet. Beachten Sie hierbei, dass die Bewegung dazu führen kann, dass der Spieler das Raster ändert, oder dass es sich möglicherweise nicht ändert. Wenn sich das Raster nicht geändert hat, ist keine Verarbeitung erforderlich;

Schritt 6: Wenn sich das Raster ändert, in dem sich Spieler A befindet, ändern sich auch die Blöcke des neun Quadrate umfassenden Rasters von Spieler A.

Geben Sie ein Rasterobjekt ein: ein Rasterobjekt, das sich im ursprünglichen Neunquadratraster von Spieler A befand, aber jetzt nicht im neuen Neunquadratraster von Spieler A ist;

Rasterobjekte vom Typ B: Rasterobjekte, die sich im ursprünglichen Neunquadratraster von Spieler A befanden und sich auch im neuen Neunquadratraster von Spieler A befinden;

Gitterobjekte der Klasse C: Gitterobjekte, die sich nicht im ursprünglichen Neunquadratraster von Spieler A, sondern im neuen Neunquadratraster von Spieler A befinden;

Schritt 7: Bei Gittern vom Typ B überspringen wir direkt ohne Verarbeitung;

Schritt 8: Für ein Rasterobjekt vom Typ A müssen wir alle darin enthaltenen Spieler durchlaufen, ihnen mitteilen, dass Spieler A ihr AOI verlassen hat, ihnen das LeaveAOI-Ereignis senden, dass Spieler A das Objekt verlassen hat, und ihre Clients das Objekt von Spieler A löschen lassen. Senden Sie die LeaveAOI-Ereignisse dieser Spieler an Spieler A und lassen Sie den Client von Spieler A diese Objekte löschen.

Schritt 9: Für die Gitterobjekte vom Typ C durchlaufen wir alle Spieler in diesen Gittern, senden den Status und die EenterAOI-Ereignisse dieser Spieler an Spieler A und lassen Spieler A die Objekte in diesen neuen Sichtblöcken erstellen. Senden Sie den Status von Spieler A und das EnterAOI-Ereignis synchron an diese Spieler und lassen Sie den Client dieser Spieler Objekt A erstellen.

Nach dem Hinzufügen von AOI muss jeder unserer Kunden nur noch den Status der Spieler synchronisieren, die er sehen kann.

Das heutige Teilen endet hier. Folgen Sie uns, um weitere Tutorials zur Synchronisierung von Online-Spielen zu erfahren.

Anbei: Video-Tutorial

Unity / Empfohlene Empfehlung MMORPG-Kerntechnologie: Quellcodeanalyse des AOI-Algorithmus und ausführliche Erklärung www.bycwedu.com/promotion_channels/690101486

Supongo que te gusta

Origin blog.csdn.net/Thomas_YXQ/article/details/134513908
Recomendado
Clasificación