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

11

22.03.2011, 14:44

Naja Synchronisierung mit Überprüfung wäre ja auch möglich.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

22.03.2011, 14:58

Siehste, also muss der Server ja eh alles mitschneiden. Und kontrollieren welche Einheiten wirklich gebaut werden können zwecks Ressourcen-Anzahl, welche sich wie wohin bewegen kann. Denn sonst wäre auch eine Synchronisierung mit Überprüfung gar nicht möglich.
Und wenn man das schon macht, dann kann man auch gleich die Autonomie des Clients weglassen ;)
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]

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

13

22.03.2011, 15:34

Aber nur zur Klarstellung: ich lagere nicht die Lebensanzeige aus, sondern ich lagere alles aus, was mit Lebensenergie zu tun hat. Und zwar aus objekt-orientieren Ansätzen. Denn nicht jedes Objekt ist automatisch zerstörbar - also braucht auch nicht jedes Objekt eine Lebensanzeige(ob sie nun angezeigt wird oder nicht).


Naja es kommt aber darauf an, auf welcher Ebene du das machst. Ich persönlich finde diesen Ansatz mit zerstörbar etc. nicht wirklich sauber. Viel einleuchtender wäre für mich zumindest ein Ansatz wo du zumindest Einheiten und Modelle (z.B. Terrain, Baum, etc.) unterscheidest. Sicher gibt es hier noch weitere Möglichkeiten der Unterscheidung, aber ich denke sie stellen grob dar was ich meine. Alle Einheiten haben im Normalfall eine Lebensanzeige und sind zerstörbar. Aber du wirst das schon machen... :o)

14

22.03.2011, 16:18

Siehste, also muss der Server ja eh alles mitschneiden. Und kontrollieren welche Einheiten wirklich gebaut werden können zwecks Ressourcen-Anzahl, welche sich wie wohin bewegen kann. Denn sonst wäre auch eine Synchronisierung mit Überprüfung gar nicht möglich.
Und wenn man das schon macht, dann kann man auch gleich die Autonomie des Clients weglassen ;)
Ich weiß gar nicht wie das bei Warcraft 3 gelöst ist, aber ich schätze mal, da ist jeder "Server" und einige eben Server mit besonderen Aufgaben. P2P Ansätze gibt es ja durchaus im RTS Bereich.

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

15

22.03.2011, 16:29

Naja es kommt aber darauf an, auf welcher Ebene du das machst.

Es sind halt zwei verschiedene Ansätze. Bei meinem gibt es eine verhältnismäßige geringe Tiefe in der Vererbungshirarchie, da sich jedes Objekt aus den allgemein verfügbaren Objekten, das ererbt, was es benötigt. Bei dir gäbe es dann halt relativ »tiefe« Vererbungsbäume, weil es eben erst mal ne Basis-Klasse Objekt gibt, davon Erben dann bspw. Modelle und Einheiten, das teilt sich dann jeweils wieder auf in verschiedene Typen und dann wird es vllt. noch komplexer. Also das ist halt irgendwie Geschmackssache denke ich, was einem da besser gefällt.

Siehste, also muss der Server ja eh alles mitschneiden.

Was ich mir nur gerade überlegt habe: Wie läuft das denn dann bei einem LAN-Spiel? Da gibt es ja keinen Server in dem Sinne. Übernimmt da dann der Host die Aufgaben des Servers(also könnte quasi der Host-Spieler dann die Daten(Rohstoffe, Einheiten etc.) der anderen Spieler abfangen? Oder wie läuft das da?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

16

22.03.2011, 16:41

Was ich mir nur gerade überlegt habe: Wie läuft das denn dann bei einem LAN-Spiel? Da gibt es ja keinen Server in dem Sinne. Übernimmt da dann der Host die Aufgaben des Servers(also könnte quasi der Host-Spieler dann die Daten(Rohstoffe, Einheiten etc.) der anderen Spieler abfangen? Oder wie läuft das da?


So wie ich das sehe ist in der Regel der Hoster der Server. Das merkt man insbesondere bei Ruckler. Der Host hat nie Ruckler, wohingegen die Clients durchaus mal Verzögerungen haben können. Habe das besonders gemerkt, als wir zu 8 über meinen Access Point bei meinem Notebook CoD1 gespielt haben.. Ich war zum Glück eigentlich immer der Host. ^^

Hab das verhalten aber auch schon bei AoE3 oder Crysis beobachtet. Wird also überall das gleiche sein.

Der Host könnte also alles verändern, wenn er mag. Ist bei LANs aber meist kaum ein Problem. Bei grossen LANs werden die Spielsever dann aber afaik von der Organisation gestellt.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

17

22.03.2011, 17:22

Und bitte vergesst P2P wenn ihr ein ernsthaftes Spiel programmieren wollt. U.A. nutzt RUSE P2P und es ist echt eine Qual. Das fängt damit an, dass beim einen Einheiten existierten, die es beim anderen nicht gab, ging über entsprechende Wirtschafts-Hacks hin zu so geschichten, dass nur 2 Spieler zueinander einen schlechten Ping haben müssen, um zu erreichen, dass fast alle rausfliegen.
Außerdem ist gerade bei Strategiespielen die Präzision entscheidend. Daher wird da auch oft auf ein Heartbeat System zurückgegriffen, auch wenn das bedeutet, dass ein langsamer Rechner alle anderen ausbremst.
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.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

22.03.2011, 18:57

Ich weiß gar nicht wie das bei Warcraft 3 gelöst ist, aber ich schätze mal, da ist jeder "Server" und einige eben Server mit besonderen Aufgaben.

Nein, da gibt's nur einen Server. Das ist der Host.

[Was ich mir nur gerade überlegt habe: Wie läuft das denn dann bei einem LAN-Spiel? Da gibt es ja keinen Server in dem Sinne. Übernimmt da dann der Host die Aufgaben des Servers(also könnte quasi der Host-Spieler dann die Daten(Rohstoffe, Einheiten etc.) der anderen Spieler abfangen? Oder wie läuft das da?

Der Host ist ein Server. Nichts anderes eigentlich. Zur Reduzierung der Lags laufen manche Sachen natürlich ohne Server-Einfluss (Einheiten/Gebäude anwählen). Aber im Groben schon. Gibt natürlich auch Lösungen, wo wirklich nur ab und zu synchronisiert wird, sprich der Server checkt, ob die Clients noch synchron sind. Und falls nicht, wird entweder synchronisiert (was teilweise übel ist - siehe den Post über mir von Nox bezüglich der Probleme, die man da bekommen oder verursachen kann) oder das Spiel abgebrochen (ja, auch das gibt es und das nervt tierisch bei manchen Spielen).
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]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

19

22.03.2011, 19:26

Dazu könnte man sich jetzt noch nen paar Ansätze der verteilten Arbeit ansehen. Wobei ich behaupten würde, dass diese in Spielen nicht benutzt werden sollten. Aber wen es interessiert, unter dem Stichwort findet ihr sicher einiges.
„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.“

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

20

22.03.2011, 22:29

Ich weiß gar nicht wie das bei Warcraft 3 gelöst ist, aber ich schätze mal, da ist jeder "Server" und einige eben Server mit besonderen Aufgaben.

Nein, da gibt's nur einen Server. Das ist der Host.
Das kann ich mir so eigentlich nicht vorstellen, denn das würde heißen: Sobald der Host das Spiel verlässt, wird jemand anders Host. Und wenn dieser jemand eine Firewall aktiviert hat oder hinter einem Router sitzt, wird das nichts mit Hosting und die Partie ist beendet, und das ist mir in einigen tausend SC Runden noch nicht passiert (bei Diablo ist es genauso). Andererseits habe ich es aber durchaus schon erlebt, dass die BNET Server wegen Virenscans(!!) so langsam waren, dass sämtliche Partien geruckelt haben. Ich würde deshalb mal davon ausgehen, dass alle Spiele automatisch von BNET Servern gehostet werden. Oder weißt du da genaueres?

Blizzard benutzt auch Heatbeats für seine Stratgie-Spiele und bei Dawn of War ist es genauso. Heutzutage scheint es damit in der Praxis eigentlich keine spürbaren Lags mehr zu geben, lediglich zu hohe Grafikeinstellungen bei anderen Spielern führen manchmal zu langsamen Runden.

Werbeanzeige