← Alle Beiträge

Projektarchiv

Zeigen Sie den Spielern nur die Schiffe, die sie entdeckt haben

Was ich diese Woche erreicht habe. Ich habe lange Zeit mit einer Aufgabe gekämpft, die einfach erscheint, aber in einer vernetzten Architektur schwierig ist: einen Spieler seine eigenen Schiffe sehen zu lassen, ohne die anderer zu sehen. Die Nuance ist, dass jeder Spieler eine separate Liste von Schiffen hat, und diese Liste kann sich während des Spiels dynamisch ändern. Der schwierigste Teil war jedoch, dass die Schiffsdaten in einem Teil des Codes generiert, mit einem anderen verknüpft und dort übertragen werden, dann in einen dritten Teil verschoben werden, von dem aus sie mit Elementen im ersten interagieren. Nach all dem erstellt es eine individuelle Ansicht auf jedem Client, ohne mit dem Server oder anderen Clients zu synchronisieren. Warum ist das notwendig? Um zu simulieren, einen Feind zu erkennen und genaue Daten über ihn zu erhalten. Hier ist ein Gegenbeispiel von EVE Online. Sie können feindliche Schiffe sehen. SIEHE sie. Aber Ihr System muss sie sperren, bevor Sie feuern können. Ohne Schloss hast du kein Glück. Schwache Rechtfertigungen dafür überleben den Kontakt mit dem Realismus nicht. Wenn Sie ein Ziel durch einen optischen Kanal deutlich sehen und die Reichweite mit einem Laser gemessen haben, können Sie feuern. Wenn Sie außerdem den Typ des feindlichen Schiffes sehen und seine Abmessungen kennen, können Sie mit seiner Winkelgröße die Entfernung ohne Entfernungsmesser bereits ziemlich genau bestimmen. Sie haben alle Daten, die für ein genaues Feuer benötigt werden. Sie können auch das Ziel sehen, seine Manöver und Position verstehen und antizipieren, wie sich die Situation entwickeln kann. Kurz gesagt, dies ist eine wichtige Spielkonvention, wie die Zielstreuung in World of Tanks. Um dieses Problem zu vermeiden, sehen Sie das vollständige Modell des feindlichen Schiffes nur dann in seiner wahren Position, wenn die Sensoren Ihres Schiffes es schlüssig erkannt haben, vorausgesetzt, diese Sensoren existieren und funktionieren. Für die meisten Waffensysteme liefert das bereits genügend Daten, um eine Schusslösung zu berechnen.

Vor diesem Punkt kannst du nur den Standort des Feindes schätzen, besonders wenn er versucht, nichts auszusenden. Später, auf mittlerer und großer Entfernung, können Ihre Sensoren Ihnen den ungefähren Standort des Ziels geben. Das kann manchmal genug sein, um bestimmte Raketen zu starten oder Drohnen einzusetzen, aber völlig unzureichend für Schüsse und die meisten Raketen. Sie werden auch noch nicht wissen, welche Art von Ziel es ist. In diesem Fall werden Sie im Allgemeinen nicht wissen, ob es freundlich oder feindselig ist ...

Am Ende habe ich es gelöst und es zum Laufen gebracht. Alles wird jetzt überall richtig angezeigt. Der Radarberechnungsalgorithmus ist seit zwei Jahren bereit, also werde ich ihn vom Laptop verschieben und vollständig im System implementieren. Ein wichtiger Punkt: Nachdem wir die Architektur erobert haben, ist alles, was folgt, viel einfacher, weil alle Informationsflüsse und Verbindungen bereits vorhanden sind.

Facebook-Profil des Projekts ↗