Thema: |
|
||
Autor: | fianna | ||
Datum: | 27.03.23 22:55 | ||
Antwort auf: | Re:Diablo IV [PC/PS4/XB] von Macher | ||
Ich hab den WoW-Post unten gelesen. Kenne mich nicht so gut mit Spieleentwicklungen aus wie Du. Aber Diablo und WoW sind ja client-server Anwendung. Und dann noch in der Cloud. Es funktioniert im Kern ja so: 1. Spieler klickt auf Gegner, Attacke Animation startet. 2. Server bekommt den Befehl und "numbercrunched". 3. Number wird an den Client zurückgeschickt und der zeigt die an. Soweit so einfach. Ggf. könnte der jetzt noch einen "Hit"-Animation vom Gegner abspielen. In der Realität ist das aber viel komplexer. Es kommen ja noch zahlreiche Effekte hinzu und auch der Gegner macht Angriffe. Vielleicht startet der eine Eisaura oder sowas, die den Spieler einfriert. Der Client muss das natürlich schnell rendern und dann den Input "einfrieren", weil man ja frozen ist. Und es ist natürlich sehr wichtig, wie schnell das ankommt und wie es "eingereiht" wird. Und das muss sehr schnell funktionieren. Ausserdem kämpft man ja nicht nur gegen einen Gegner sondern oft gegen sehr viele. Der Elite hat noch seine "Adds" und die Tanks ziehen erstmal 30 Gegner zusammen, damit AoE auch wirklich Schaden macht. Und jetzt läuft das alles in einer Cloud mit potentiell Millionen an User. D.h. man hat da ein sehr komplexes Konstrukt dahinter. Mit Kubernetes, Istio-Meshes diversen Services usw whatever. Wie auch immer - die ganzen Servicelayer erzeugen viel Latenz. Das ist erstmal was ganz anderes wie Virtua Fighter was auf "metal" läuft. Und selbst dedicated Server wären schneller, wenn die Anbindung und der Ping gut sind, weil da der Cloudnetzwerkoverhead wegfällt. Das ganze läuft ja asynchron - ständig werden Zahlen hin und her geschickt. Abhängig davon wie schnell die Eintreffen muss man dann die Animationen abspielen. Und es kann auch mal passieren, dass eine Message mit Zahlen verspätet ankommt, weil eben Netzwerk/Internet. Ich stelle mir das schon hochkomplex vor, es so überhaupt spielbar zu kriegen. Bessere Animationen bauen kann vermutlich jeder Grafikdesigner . Bei potentiell 30 Gegnern und Effektfeuerwerk wird man davon aber dann eh nichts sehen. Angenommen die Animation käme zu spät, dann wäre man "out of sync". Da Blizzardspiele ja auch im Kern PC-Spiele sind, gibt es dann natürlich die Nerds die noch mit Mausmakros usw. ankommen. Es gibt noch das Konzept des Animationcancelling. Angenommen ein Skill braucht 30 Frames bei 1.0 Attackspeed, dann gibt es z.T. Möglichkeiten die Animation mit einer anderen Aktion zu überschreiben. Wenn es die nicht gäbe, fühlt es sich laggy an, weil der Input ja durch die Animation verschluckt werden würde. Nehmen wir mal sowas wie ein Bogenschuss. 15 frames vorwärts und dann 15 frames rückwärts. Angenommen man schafft es die Rückwärtsanimation zu überschreiben (z.B. durch einen anderen Skill oder Bewegung), dann kannst Du nach 15 frames schon wieder irgendwas anderes machen. Und solche Aktionen kann man z.B. auf Mausrad legen um diese zu spammen, damit man auch ja nicht 3 frames verpasst. Bei einem reinem Controller-Input kann man Annahmen treffen, dass ein Spieler nicht so und so schnell klicken kann. Mausklicks gehen vermutlich auch schneller aus Button drücken. Bei D4 hab ich zumindest gesehen, dass man mit der Sorc den Spender casten kann, während man sich vorwärts bewegt. Ich denke das geht mit Controller nicht so in der Form. Weiß ich aber nicht genau. Es gibt aber auch Skills wo das so nicht geht und wo dann die Verzögerung spürbar verzögert eintrifft. Kompliziert wenn man sich damit mal genauer beschäftigt. WoW kenn ich nicht. Ich find es eigentlich eher beeindruckend wie gut diese Architekur z.B. bei D3 funktioniert. IMO ist das schwer auf lokale Spiele zu übertragen. Bei diesen Games geht es nicht um tolle Animationen, sondern darum zig "Numbers" asynchron hin und her zu schicken und das ganze trotzdem noch gut spielbar zu halten, damit sich das Spiel aus Spielersicht noch nicht laggy und clunky anfühlt. Je mehr Animation es gibt, desto eher läuft man in die Clunkyness. Und es gibt einfach Latenzfaktoren die man bei solch einer Architektur nicht selbst beinflussen kann. |
|||
< Frameset laden | antworten > | |||
Impressum | Nutzungsbedingungen | Datenschutzerklärung | | Mobile Apps | maniac-forum.de |