Diese Frage ist etwas knifflig, aber ich werde versuchen, sie klar zu machen.
Nehmen wir an, ich baue ein Online-Spiel (nicht im MMO-Maßstab), aber das unterstützt so viele Spieler wie möglich in einem autorisierenden Server-Ansatz. Ich möchte wirklich große Welten mit vielen KI-simulierten Feinden.
Mir sind einige Strategien bekannt, um Server-CPU zu sparen, indem der Speicherplatz unterteilt und nicht verarbeitet wird, was nicht verarbeitet werden muss. Ich habe die Welt bereits nach Regionen aufgeteilt, die Ladezeiten und kleine Übergänge erfordern. Dies ist meiner Meinung nach wichtig, um die Qualität des Spiels beim Spielen vor Ort (allein oder sogar mit ein paar Freunden) aufrechtzuerhalten. Ich erwarte nicht, dass sich die Spieler in mehr als einer oder zwei Regionen befinden.
Das Problem ist, dass eine Region ziemlich groß werden kann und viele NPCs gleichzeitig simulieren. Wie gehe ich damit um, ohne die Erfahrung der Spieler zu beeinträchtigen? Ansätze wie ein Server pro Region und dergleichen sind nicht in der Tabelle enthalten.
Ich suche hauptsächlich nach Datenstrukturen, um Horden von Feinden und sogar friedlichen NPCs zu halten. Um die Frage abzuschließen, beachten Sie bitte, dass Fahrzeuge vorhanden sind. Daher ist es sehr schnell, innerhalb einer Region zu fahren, was das "Wann" zum Ausmerzen von Bereichen beeinflusst.
Antworten:
Soweit ich weiß, wird auf Ihrem Server eine Art Physik ausgeführt.
In diesem Fall stehen für die KI / Physik neben der Raumpartitionierung auch andere Techniken zur Verfügung. Von den meisten zu weniger offensichtlichen:
Sobald Sie diese Mechanismen implementiert haben, können Sie entscheiden, wie viel und wie oft Sie sie benötigen. Das Tolle daran ist, dass Sie später einige Server hinzufügen können, die einige der Aufgaben anstelle der Client-Apps übernehmen können.
Natürlich führt die ungefähre Kollisionserkennung zu einigen Aberrationen, aber Sie können diese lösen, indem Sie von Zeit zu Zeit mehr Präzision hinzufügen.
Auch in Bezug auf die Physik sollten Sie sich Bibliotheken ansehen, die eine Art GPGPU- System wie OpenCL oder CUDA unterstützen, wenn Sie Zugriff auf einen Server haben, der beides unterstützt.
quelle