Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

04.07.2012, 16:24

Wenn ein Client diese Animation berechnen und daraus logische Kommandos berechnen kann, dann geht das genauso gut auch andersrum.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

12

04.07.2012, 23:29

Der Server sollte den aktuellen Zustand aller Spieler an die Clienten schicken, entsprechend kann dann jeder Client die Animationen für die anderen Spieler abspielen (zB Laufen oder Fahren).

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

05.07.2012, 06:36

Eingaben über Maus- und Tastatur sind ja letztendlich nichts anderes. Daraus werden Requests an den Server generiert (eventuell unabhängig davon zur Lag-Reduzierung die Aktionen im Client trotzdem erst mal direkt ausgeführt), der schickt sie an alle Clients und jeder setzt diese dann um. Ist also eigentlich im Grundgedanken keine große Magie dabei. Spannend wird es erst bei erwähnter Lag-Reduzierung, wo Clients die Aktionen auch schon ohne Server-Response als "korrekt" annehmen oder aus vorherigen Aktionen (Bewegungen) eine Extrapolation vornehmen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

14

05.07.2012, 20:10

Ich glaube bei Quake werden übrigens die Animationen mitgeschickt.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

06.07.2012, 11:05

Da glaubst du richtig. Bin mir relativ sicher dass hier irgendwo im Forum noch ein Link rumgeistern müsste, wo das alles beschrieben wird. Wobei man mittlerweile Spiele oder allgemein Software abstrakter aufbaut. Von daher macht eine Trennung von Ausgabe und Logik Sinn und solange der Server nichts anzeigt sollte er sich über sowas keine Gedanken machen. Dazu hat BlueCobold ja schon geschrieben, dass aus den Eingaben am Client ein Befehl generiert wird, und aufgrund des Befehls kann dann jeder Client selbst seine Ausgabe bestimmen. Ich ich jetzt aufgrund einer Tastatureingabe eine Animation abspiele, oder aufgrund von Befehlen vom Server reagiere macht an sich keinen Unterschied. Man kann einfach mal versuchen sich ein schönes Schichtenmodell zu erstellen und Logik, Entitäten und Ansicht "komplett" voneinander zu trennen. Dann fällt der Groschen vielleicht schneller als wenn man es sich nur vorstellt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

16

06.07.2012, 11:10

Um ein Problem bei der Trennung von Darstellung und Logik mal vorweg zu nehmen: Wenn man Waffen/Mündungen etc. an einem Skelett/Turm etc. hat, muss man das (reduzierte) Modell auch auf Serverseite laden und animieren, wenn man dem Client nicht vertrauen will.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

17

06.07.2012, 11:13

Ich entwickel gerade ein multiplayer Aufbauspiel, in dem ich sogar eine ganze Instanz des Spiels auf dem Server laufen lasse. Um das zu ermöglichen muss man natürlich Logik und Darstellung sehr stark voneinander trennen. Bis jetzt läuft es aber ganz gut.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

06.07.2012, 12:24

Ich entwickel gerade ein multiplayer Aufbauspiel, in dem ich sogar eine ganze Instanz des Spiels auf dem Server laufen lasse. Um das zu ermöglichen muss man natürlich Logik und Darstellung sehr stark voneinander trennen. Bis jetzt läuft es aber ganz gut.

Muss man nicht unbedingt, solange man den Rendering-Teil einfach deaktivieren kann. Meine Modelle sind z.B. nicht nur Modelle, sondern gleichzeitig übernehmen sie auch ihre eigene Darstellung (was nicht unbedingt MVC-konform ist, aber ich finde es praktisch so). Dennoch kann ich das Rendering komplett deaktivieren und könnte es als reinen Server laufen lassen. Man muss also nicht generell stark trennen zwischen Logik und Darstellung, sondern es reicht, wenn man diese Teile unabhängig voneinander aufrufen kann. Klar, man darf nicht sowas machen wie eine Methode "updateMyPlayer", wo sowohl sämtliche Logik ausgeführt, Kollisionen berechnet und auch noch das Rendering gemacht wird. Das wäre aber insgesamt ein sehr gutes Beispiel für schlechtes Design oder schlechte Kapselung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

19

06.07.2012, 12:59

Das Problem ist, dass für die Darstellung Bibliotheken benötigt werden die für einen Server unnötig sind und die, wenn man z.B. DX verwendet, auf der Serverplatform vielleicht garnicht verfügbar ist.
Ausserdem benötigt man viel Speicher für Dinge, die man eigentlich garnicht benutzt.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

06.07.2012, 15:53

Deswegen sagte ich ja, dass den Server das nicht interessieren braucht. Bei mir wäre das egal, die Bibliotheken würden nicht benötigt werden. Auch wichtig wäre die Frage was ein Server ist - ein zentrales Programm auf einer echten Hardware genannt "Server" oder einfach nur einer der Clients, welcher ein Multiplayer-Spiel hostet.
Wenn man wie ich auf C# mit Schnittstellen zu DLLs setzt, dann ist Portabilität aber z.B. auch vornherein gar nicht notwendig und nie geplant gewesen. Ist halt relevant, was man eigentlich will. :) Trennung zwischen Logik und Grafik auf irgendeine Art, ist generell aber sicher wichtig, schon weil alles andere einfach sehr schlechtes Design wäre. Entweder ich mache ein Update der Logik oder stelle was dar, das sollte man in keiner Methode irgendwie zusammenpanschen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige