Unity3D große Karten Beratung - Wie groß ist zu groß?
Mithilfe der Unity3D-engine. Ich mache ein multiplayer-Spiel für Spaß mit Unity standard-Netzwerke. Wenn die Server halten 25-50 Spieler, welche die map Größe wird empfohlen? Wie groß kann ich eine sehr detaillierte Karte, bevor es zu groß für effektive gameplay? Wie kann ich das optimieren einer großen Karte? Irgendwelche Ideen und Ratschläge wäre toll, ich will nur lernen, und konnte nichts finden, das auf google 😀
*Mein Karte ist in Scheiben geschnitten in verschiedene Teile.
- Die Karten skalieren, hängt zunächst von Ihrem Modell-Skala.
- UnityScript ist sehr weit von Javascript, und mit dem Namen einer im Ort, der andere kann Verwirrung Stiften, deshalb Lösch ich den tag.
- Die Obere Grenze der Kartengröße ist meist ermittelt, indem die floating point precision-Fehler. Es gibt keine Feste Anzahl, es, aber Sie bekommen zunehmend Fehler, als du Weg vom Ursprung. Einheit manchmal beginnt auf Warnungen anzeigen, um 100.000 Einheiten Weg von (0,0,0).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Größe der Karte selbst, in den Einheiten, egal was für Leistung überhaupt. Nur im Kopf behalten, dass die Einheit (wie jedes andere Spiel-engine) verwendet Schwimmer für geometrie, und wenn die float-Werte zu hoch oder zu niedrig ist, die Dinge können lustig.
Was zählt, ist die Menge der Daten, die Ihre Logik -, Netzwerk-und rendering-engine haben, um die Abwanderung durch. Das sind verschiedene Dinge, auch Logik - /networking-Daten, und beschränkt auf diejenigen, die stark davon abhängen Architektur des Spiels.
Lets' reden über networking. Es werden zwei Parameter sind kritisch, da Sie Ihre Grenzen: Bandbreite und Latenz. Die Bandbreite ist wie viele Daten Sie übertragen, und die Latenz ist wie schnell. Ok, diese Erklärung ist verwirrend. Stellen Sie sich einen LKW voller Festplatten Reisen von einer Stadt zur anderen: es hat riesigen Bandbreite, und übertragen Sie ganze Rechenzentren auf diese Weise. Aber die Wartezeit, die Zeit für das signal zu Reisen, ist ein paar Stunden. Auf der anderen Seite, zwei unterschiedliche Menschen aus diesen Städten können die hop-on-hop-Luft-Ballons, schauen einander in die Nacht Himmel, und schalten Ihre Taschenlampen an und aus. Auf diese Weise, Sie werden in der Lage zu exchange nur ein bit an information, aber mit der niedrigsten möglichen Latenz: man kann nicht schneller als das Licht.
Es hängt auch davon ab, wie Ihr Netzwerk funktioniert. RTS-Spiele, zum Beispiel, verwenden Häufig lock-step-multiplayer-Architektur bedienen, auf Tausende von Einheiten, aber es werden nur exchange eine begrenzte Menge von Daten zwischen Benutzern: Ihre input-Befehle. Ein first-person-shooter, auf der anderen Seite, stützt sich stark auf die Latenz (die lock-stepping können Schäden): 10 ms, wenn Sie springen und feuern eine Rakete launcher sind viel wichtiger, als wenn Sie sagen, Ihre Truppen zum Angriff. Also, der Netzwerk-Logik ist unterschiedlich organisiert: jeder Spieler, der computer sagt Voraus, was passieren wird, aber der zentrale server hat die Autorität darüber, was tatsächlich passiert ist. Natürlich ist das, was ich Schreibe, jetzt sind nur Allgemeine Beispiele von Architekturen, die eingesetzt werden können; die Wahl der richtigen Art und Weise zu tun, die Vernetzung ist sehr schwierig, aber sehr interessante und kreative Aufgabe.
Nun, der Logik selbst. Tatsächlich, die meisten der gameplay-Logik verwendet, in modernen spielen ist relativ einfach in Bezug auf die cpu-Anforderungen, es sei denn, es ist Physik oder AI. Mit Physik in einem multiplayer-Spiel ist kompliziert genug auf seine eigene, weil der Synchronisations-Probleme (denken Sie daran schwimmt?); in der Regel, die eigentliche Logik, die beeinflussen können wer gewinnt und wer verliert, ist ziemlich vereinfacht: Ebene geometrie ist völlig statisch, Zeichen bewegen sich mit Hilfe einfacher Logik ohne echte physikalische Kraft, und die Physik ist in der Regel nur zur Kollisionserkennung. Natürlich, Sie sehen eine Menge von physikalisch-basierte visual-Zeug: ragdolls von getöteten Feinden einstürzen, Trümmer von der explosion fliegt; aber diese sind in der Regel de-synchronisiert zwischen verschiedenen Computern und kann nicht wirklich Einfluss auf das gameplay selbst.
Und schließlich Rendern. Hier gibt es viele unterschiedliche Einschränkungen, Platz machen. Erzählen Sie allen, würde ich das ganze beschreiben die rendering-pipeline von Einheit auf verschiedenen Geräten, und das ist eindeutig außerhalb des Rahmens dieser Frage. Zum Glück gibt es einen anderen Weg! Anstelle des Denkens über diese Grenze theoretisch, nur um ein praktisches Vorbild. Setzen Sie in verschiedenen Spiel-assets in die Szene, führen Sie es auf dem Ziel-Gerät und schauen Sie, wie es sich verhält. Einzustellen, wiederholen Sie! Diese game-Elemente können komplett hässlich oder irrelevant; Sie haben jedoch die gleichen technischen Eigenschaften wie das, was du gehst zu verwenden, in das eigentliche Spiel: die Anzahl der Polygone, die Größen der Texturen, Shadern, etc, etc. Sagen wir zum Beispiel, dass Sie möchten, erstellen Sie eine COD-ähnlichen multiplayer-shooter. Zu kommen mit Ihren rendering-Anforderungen, setzen Sie in der N Umgebung Modelle mit N Polygonen jeder mit NxN-Texturen, in N-Zeichen mit einigen Skelett-Animationen mit N Knochen, und vergessen Sie auch nicht einige gefälschte Logik, würde emulieren CPU-intenstive Sachen, so dass Sie Ihre Leistung Messen wird mehr realistisch. Natürlich, es nicht geben Ihnen eine endgültige Bild, aber es ist ein guter Weg, um zu starten, und es ist großartig, das zu tun, bevor Sie beginnen Herstellung eine Menge von Kunst Vermögenswerte.
Gesamt -, Spiel-perfomance-Optimierung ist ein sehr umfangreiches und Interessantes Thema, und es ist unmöglich, eine präzise Antwort auf eine solche Frage.
Können Sie verbesserte die Reduzierung der clipping-Ebene der Kamera zu verringern, die sichtbare render-Distanz, und auch verwenden können, LOD Verbesserung machen Ihre Scheiben zum Teil mit kleinen details.
Überprüfen Sie diesen link für weitere Details über LOD:
http://docs.unity3d.com/Manual/class-LODGroup.html
Wenn du mehr brauchst Verbesserung, die Sie machen können ein Skript zu laden, Gelände-Laufzeitumgebung basierend auf einer Entfernung um Ihre Spieler.
Zuerst und vor allem: Machen das gameplay arbeiten, optimieren Sie später. Vorzeitige Optimierung ist eine Verschwendung von programmer ' s Zeit.
Zweitens: denken Sie an Skyrim und Minecraft. Die Welt ist aufgeteilt in Stücke, die werden im hintergrund geladen, wenn Sie sich bewegen. Diesen Ansatz verwenden (chunking Ihre Welt in Stücke) können Sie nahezu unendliche Weltgröße.