Buttermilch schrieb:
Also gibt es ein lokales oder serverseitige Schadensmodell für jedes einzelne NPC Schiff auf dem Server was in bits und bytes zu meinem lokalen pc übertragen wird,

echt krass was die da da in der Cryengine können...
Das Schadensmodell ist doch prozedural, sprich in mathematischen Formeln abgebildet. Das bedeutet im Umkehrschluss da werden nur ein paar Parameter übertragen. Auch kann man sich vorstellen, dass Einschusslöcher nur clientseitig berechnet werden, sprich den groben Schaden sehen alle, da serverseitig und die feinen kosmetischen Schaden werden nicht synchronisiert.
Ich weiß jetzt nicht ob das gesamte Schadensmodell prozedural ist oder ob es für gröbere Schäden konkrete Schadensmodelle gibt. Wenn ja ist das auch kein Problem, diese sind fest implementiert und auch lokal vorhanden, später wird dann ein parameter übertragen welches Schadensmodell aktiv ist.
-> Alles keine große Datenmenge, und diese muss auch nur bei Änderung des Zustandes übertragen werden. Der Client speichert den Zustand solange bis sich was ändert.
Buttermilch schrieb:
Folgende Übelegungen aus dem tatsächlichen Spielgeschehen:
Denn denk mal nach. Ich könnte NPC Schiffe rammen und beschädigen, sie entern? oder blockieren? Auf sie drauf springen?
Sie beschießen oder Teile davon abtrennen... werden dann die abgeschossenen Teile physikalisch korrekt weiterberechnet wie im AC?
Wieviele Polygone, Schadensmodi hat denn so eine NPC Conni? Alles prozedural, heute. Ah ok...
Ja, klar kannst du alles rammen. Das handelt die Physik-Engine. Diese braucht auch nur die Positionen und Rotationen der kollidierenden Gegenstände. Aus alter Position und neuer werden die Geschwindigkeit berechnet. Die Physik-Engine läuft unabhängig von der Frame-Rate nach einer fixen Zeit -> Zeit und Positionen bekannt -> Geschwindigkeit.
Je nachdem wo die Kollision berechnet werden (Server - Client) werden nur die daraus resultierenden Positionen/Rotationen zurückgegeben. Alles andere was die Phyisikengine braucht wie Kollisionsmodelle sind bereites in den Schiffen gespeichert -> muss nicht übertragen werden.
Bei abgetrennten Teile kann man zwei Wege gehen.
Serverseitige Berechnung: Bei jedem fliegen die Teile in die selber Richtung. Wichtig bei aufnehmbare, große oder allgeimen wichtige Gegenstände.
Auch hier werden nur Zustandsänderungen übertragen wie zB: Flügel links einer Hornet ist jetzt nicht mehr an Hornet gebunden-> muss seperat verfolgt werden -> eigene Physik-Simulation -> Koordinaten und Rotationen werden übertragen.
Clientseitige Berechnung: Für kosmetische Effekte vorstellbar. Server sagt, dass Teil nicht mehr zum Flugzeug gehört und gibt eventuell Geschwindigkeit und Richtung mit -> Danach rechnet nur noch der Client was damit passiert -> Server überträgt dazu keine Daten mehr.
Die NPC Conni ist exakt die gleiche wie du auf deinem PC hast, alles andere wäre unlogisch. Es werden ja keine gesamten Assets übertragen sondern nur der Zustand der Assets.
Buttermilch schrieb:
Landen die NPC Schiffe auf Landing Pad 5 neben mir? Kann so ein Schiff einen Spieler zerquetschen, also gibt es eine Kollisionabfrage ob der Landeraum frei ist, oder ist Tot durch NPC Schiff beim Landeanflug ein normaler Vorgang, wenn dieser per "Servergesteuerte Landevorgang" erfolgt? Kann ich dieses Event verhindern? gibt es dann eine Ausweichroutine? damit die an Bord befindlichen Expressgüter des NPC Traders auch fristgerecht ankommen? und nicht der Preis manipuliert würde? Was passiert wenn ich manuell lande und quer auf dem Hangardeck stehe? Mein Buggy dort parkt, ich da Ladungkisten liegen habe.
Buttermilch schrieb:
Ich denke daher nicht das das Schiff reell ist, das ging mit bits und bytes nicht. Daher habe ich das ja geschrieben das dort keine 80% npc schiffe landen können. Versuch mal im mini pu oder im murray cup mit deinem schiff zu den nps schiffen zu kommen oder die zu rammen.

und jetzt erklär mir wie dad mit bits und bytes gehen soll. Die glitchen durch mich durch und sind unverwundbar oder wie.... wie an einem Spornpunkt in MMO 1000e Spieler in einem m²..
Ja das Schiff kann dich zerquetschen. Server hat deine Position und die des Schiffes. Bei Kontakt berechnet der Server was mit dir passiert. Dann sendet dieser ob du tot bist oder deine neue Position, falls es dich nur zur Seite geschoben hat.
Die spannende Frage ist welche Aktionen von der Server Physik-Engine und welche von der Clientseitigen berechnet werden. Alles was der Client berechnet läuft lagfrei bietet aber potentziale für Hacks. Eventuell berechnet der Client auch viel und der Server für eine Plausibilitätsprüfung durch und wird dadurch entlastet.
Ob ein Schiff dort landet wenn was im Weg steht hat gar nichts mit den übertragenen Daten zu tun. Der Server weiß das dort ne Kiste liegt und weiß auch wo die AI ist. Je nachdem wie die AI programmiert wurde, führt diese zB Raycasts nach unten durch und prüft somit ob etwas zwischen Schiff und Landeplattfrom liegt.
Das benötigt allerdings nur CPU-Zeit vom Server und hat keinen Einfluss auf die übertragegen Daten.
Natürlich sind die Schiffe reell. Es werden nur Zustände übertragen aber keine Assets.
Buttermilch schrieb:
meinste ich habe den Beitrag mit den Bits und Bytes noch nicht gelesen und mir überlegt, was das für Folgen bzw für Pros und Cons für die Immersion in SC hat, als ich das gepostet habe "das es keine realen NPC Schiffe geben wird die so wie der Freelancer Spieler tatsächlich da ist, sich gleich verhält, und dort rumläuft? " in Arma erkennst du auch ob das ein NPC ist der einen Drop bewacht oder ein echter Spieler, das siehst du nach 2 Sekunden observen. ob er eine gefahr darstellt oder ein dummer NPC Bot ist....
Dann ist die AI in ARMA einfach dumm. Der Server weiß ja zB dass eine Person vor dem NPC steht, ist die AI schlau dann reagiert sie darauf und der Server schickt nur Zustandsänderungen des NPC. Diese Interagtion wird von der CPU auf dem Server berechnet.
Buttermilch schrieb:
Was haben sie dort jetzt vor um die Transferraten an Daten zu minimieren? ich denke folgendes: dein lokaler PC hat ein Datenbank / Array mit allen Schiffstypen / Texturen, die es im Verse gibt.
Jetzt kommt vom Server folgender request: nimm den Wert 42 (Modell + Textur Conni) und lass es diesen Wert mit einem Raumvektor (ABC)x(v) mit der Geschwindigkeit v sich bewegen
(im Orthogonalsystem oder meinetwegen auch einen Raumwinkel je nach aktuell verwendetem System der Engine)
und ab Punkt x wird folgende Landeanimation getriggert, Dampf, Landebeine ausfahren und die Conni steht dortauf dem Landepad. Damit der Spieler DerkleineGrisu denkt da landet gerade eine echte Conni, die von NPC Alice mit 10 Cargo units Uran für NPC Trader Bob bestimmt ist und der Spieler Carol der dort zufäööig im weg stand ist in die Conni reingeglitcht.
Aber ich höre oder lese gerne auch deine Erklärungen wie das mit so wenig Daten geht. Diese Fragen gehen mir durch den Kopf wenn ich ein Post / Beitrag von RSI lese, evtl bin ich ja schon 3 Schritte weiter als andere... kA aber für die Game Mechanik sind das keine trivialen Dinge.
Ja klar werden die Schiffe von deinem PC verwendet, die übertragen doch nicht 1GB wenn ein neues Schiff ins Sichtfeld gerät.
Wenn das Schiff das erstemal auf deinem Client auftritt wird der Zustand übertragen (Waffen, Schaden, Skins,...) und dieser wird dann auf dem Client gespeichert. Für alle Änderungen an dem Zustand des Schiffes werden nur die Änderungen an dein Client übertragen.
Das reinclitchen hat nichts mit den übertragenen Daten zu tun, einzig allein mit der Physik-Engine. Diese berechnet die Kollision und sendet dann an die Clients die neue Positionen der beiden interagierenden Objekte.
Buttermilch schrieb:
_________________________
In meinem Job werde ich gut dafür bezahlt andere Wege/ Herangehensweise zu evaluieren, die nicht für jeden sofort 0815 und Sichtbar sind. Daher sag ich jetzt nicht: "ah cool nur bits und Bytes und das NPC Schiff ist da gelandet", sondern es gibt dann 20 verschiedene Auswirkungen durch diese kleine Randnotiz Abänderung der NPC Mechanik seitens RSI für das Spiel SC ergeben... Sind nennt sich Szenarioanalyse. Findest du in vielen Dingen,
Beispiele gefällig,
kann ich mich hinter einem NPC schiff verstecken, gibt es mir Deckung und Feuerschutz, verdeckt es ESM IR und Radar Signaturen`? lässt sich ein Stau und eine Blockade in der Station damit erzeugen. Despornen Schiffe nach verstörung oder bleiben sie Wracks zum salvagen bestehen? inwieweit interagieren NPC und Spieler, wie funktioniert die Kollision Anfrage, gibt es Varianz und Ausweichroutine seitens der AI? was passiert bei Serverlags, springt/stottert das Schiff oder fliegt es bis zum triggerpoint weiter? bleibt es dort stehen oder was pasiert, was für Hitboxen hat das Schiff, sind die immer 100% intakt oder sehen sie realistisch aus, kann ich so ein Schiff erwerben, ist Diebstahl möglich, hat das schiff eine Unique ID wie ein Playership. ist diese abänderbar, .... und das jetzt nur zum Thema Landen und im Bereich Stationen. ließe sich endlos fortsetzen. zum deepspace, Sprungtoren, Docks, Orbits, Quests, ...
_________________
Ob ein blockierendes Schiff einen Einfluss auf die Signaturen hat hängt rein von der Programmierung ab.
Auch hier zwei Möglichkeiten:
Der Server berechnet dein Radar -> CPU-Zeit wird benötigt, Daten zu deinem Radar müssen ständig übertragen werden.
Der Client berechnet das Radar -> Server wird entlastet (CPU und NetzwerkTraffic) Aber dein Client bekommt alle Positionen der Schiffe -> hacker könnten das ausnutzen.
Sry aber scheinbar hast du keine Ahnung wie eine Spiele-Engine funktioniert, ist ja auch nicht schlimm.
Aber informiere dich doch bitte bevor du soetwas postest.
Wie werden jetzt die übertragegen Daten reduziert?
Dazu müsste man wissen was bis jetzt alles übertragen ist. Denkbar wäre:
-Alle Positionen aller Schiffe auf dem Server
-Der Zustand aller Schiffe obwohl sich diese nicht ändern
-Feine Informationen aller Schiffe (Thruster-Stellung, Gimbal-Weapons positionen, Schaden an Systemen)
Das sind sicher noch nicht alle aber auch hier wirst du sehen, dass es enormens optimierungspotential gibt zB.:
- Positionen von schiffen nur in bestimmten Umkreis
- Der Zustand wird nur bei Änderung übertragen und dann auch nicht der gesamte Zustand sondern nur die Änderung
- Thruster-Stellung infos nur bei bestimmter Entfernung oder Fake-Berechnung auf Client, da diese Infos nur kosmetischer Natur sind. Schäden an Systemen interessieren auch nur das betroffene Schiff aber nicht die anderen.
All das ist nicht einfach zu implementieren und deswegen vermutlich noch nicht implementiert.