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

1

30.06.2011, 13:59

Netzwerk und die TriBase Engine?

Hey Leute,

ich bin zwar erst am Anfang des Buches ( ~Seite 131 ) aber ich wollte gern mal fragen ob jemand gutes Tuts / Bücher / ... kennt im Bezug auf die TriBase Engine und einer Netzwerkfunktionalität ?
Gibt es Ansätze ?

Mein Plan ist es später mal eine Welt zu schaffen, wo man einfach erstmal sich frei bewegen kann. Natürlich soll das ganze aber auch im Multiplayer laufen.

Ich habe schon einiges von WinSocket gehört und hier und da mal etwas. Aber ich brenne darauf herauszufinden wie man das am besten mit der TB-Engine verarbeitet.

LG

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

30.06.2011, 14:05

Soweit ich weiß bietet die TriBase Engine keine eingebaute Netzwerkfunktionalität. WinSock ist das richtige Stichwort, es gibt aber auch fertige Netzwerkengines. Allerdings solltest du zuerst einmal die Grundlagen wirklich beherrschen bevor du dich an solche Dinge machst. Mach einfach mal ein Pong. Und wenn du das hast kannst du dich an einem netzwerkfähigen Pong versuchen oder erstmal ein einfaches Chatprogramm damit du mal siehst wie Netzwerkprogrammierung so funktioniert. Ein ganz brauchbares WinSock Tutorial findest du hier.

3

30.06.2011, 14:10

Habe vor etwa 1 Jahr im Studium Netzwerkprogrammierung gehabt. "Leider" nur mit JAVA. Damals mussten wir ein Radio Server + Clients dazu entwickeln als Übung.

Ich denke die Grundsetze von der Netzwerkprogrammierungen sind mir klar ( UDP, TCP, Broadcast, ... ) .

Etwas Lektüre mit nem gesützten Beispiel würde mir das ganze jedoch denk ich erleichtern :) Halt am besten mit der TB Engine :)

Ist es denn so , dass man sagt ok ... man baut nen Server der z.B. alle Spielerkoordinaten broadcastet.
Jeder Client loggt sich ein, und bekommt dann auch alle Spielercords geschickt ( oder die in seiner Reichweite ) . Diese Coords fängt man ab und Renderd Sie auf dem Bildschirm.

Irgendwie kommt mir das zu "einfach" vor. Man hört ja oft, dass HoN, Starcraft II eine sehr gute Netzwerkprogrammierungen haben. Dass heißt das delay zwischen Aktion des Spielers ist sehr sehr kurz. Genau hier wird es ja interessant. Warum ist das delay bei älteren spielen so groß, wie schaffen Sie es bei neuen Spielen das delay / ping /... so kurz und fast nicht erkennbar zu halten?
Kennt vielleicht darüber jemand etwas Lektüre ? :)

LG

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

4

30.06.2011, 16:25

Ich bin zwar wenig bewandert was Netzwerkprogrammierung angeht, aber soweit ich weiß ist der interessante Teil dort nicht das versenden von Paketen, sondern eher das, was die Engine derweil macht. Es geht eher um das Übertragen der richtigen Informationen zum bestmöglichen Zeitpunkt und das interpolieren der vorhandenen Daten in der Zwischenzeit. Sprich die Daten richtig sortieren und je nach Priorität abzusenden. Welche Teile vom Server und welche vom Clienten berechnet werden ist auch eine interessante Sache. Das sind so Sachen wie: Zeige ich die Schussanimation, wenn der Spieler den Feuerknopf gedrückt hat, oder überprüfe ich erst, ob er überhaupt schießen darf? Speichere ich Munitionsstände auf dem Clienten oder Server? Wann wird es aktualisiert? Und so weiter.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

30.06.2011, 16:29

Exakt, da fängts an interessant zu werden und das wird sehr schnell sehr komplex...

Es gibt eigentlich relativ viel zu lesen, einfach mal googlen und dich auf Seiten wie gamedev.net oder gamasutra umschaun. Ein Link der mir grad zufällig einfällt wär z.B. das hier. Ich hatte auch mal nen besseren Artikel über die Architektur von Quake 3 aber den find ich leider nimmer...
Die Sache ist aber auch dass je nach Art des Spieles vollkommen andere Architekturen zum Einsatz kommen. Siehe z.B. auch hier.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (30.06.2011, 16:44)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

30.06.2011, 17:40

Aber auch auf den "unteren" Ebenen gibt es viele Fallgruben. Also wenn dich das Thema nicht brennend interessiert, rate ich doch eher zur Nutzung einer Netzwerkbibliothek.
Natürlich gibt es wenige generell gültige Aussagen, aber es gibt schon so einige (die zumindest oft zutreffen oder zumindest viel Kopfschmerzen vermeiden und die Fehlertoleranz der Anwendung erhöhen):
-Finger weg von P2P bei Spielen. Wozu P2P führen kann, kann man gut bei R.U.S.E sehen.
-Aktionen vom Server ausführen lassen oder zumindest gegen checken. Animationen/Sounds etc. kann man oft aber schon clientseitig abspielen.
-Nicht zusehr auf die Konsistenz vertrauen, sondern lieber ab und zu abgleichen oder gleich auf "Zustände" statt "Nachrichten einfach weiterleiten" bauen. Was ansonsten rauskommt kann man bei z.B. B&W und die Gilde 2 sehen (sehr häufiges Auftreten von out-of-sync und Abbruch des Spiel durch eben dieses).
-Um Client prediction wird man selten drumrum kommen
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.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Nox« (03.07.2011, 03:20)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

30.06.2011, 19:17

Nox, generell mag das ja eine gute Idee sein, aber welches (zum Beispiel) Strategiespiel (außer Starcraft Ladder) nutzt einen Server, um die ganzen Aktionen auf Validität zu prüfen?
Kommt natürlich immer auf die Art des Spiels an und wie wichtig es ist ist die Aktionen aller Spieler auf Korrektheit zu prüfen.
Bei Rollenspielen sollte es definitiv immer einen zentralen Server geben, der alles prüft (und zwar exakter als der von "ich mag Teleports"-World-of-Warcraft).
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]

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

30.06.2011, 20:28

Tja. Ich tippe darauf, dass Empire Earth auch alle Aktionen auf dem Server ausführt. Ebenso bei WC3. Im Prinzip bei allen Spielen wo der Spielzustand auf die Client "dupliziert" wird. Und auch bei den rein Nachrichten basierten System gibt es z.B. "out-of-sync" Warnungen und Autodisconnects. Somit existieren da wohl schon Mechanismen zum Aufspüren von Ungleichheiten, was ja nur möglich ist, wenn die Aktionen auf mehr als nur einen System geprüft werden.
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

9

30.06.2011, 21:11

WC3 läuft nur dann auf dem Server, wenn man Ladder-Games spielt. Empire Earth weiß ich nicht.
Es gibt so viele Spiele, wo es rein logisch keinen Server geben kann (Stichwort: LAN) und diese Funktion von einem der Clients übernommen wird. Aber ich sagte ja auch schon, dass das bei manchen Spielen sicher wichtiger ist als bei anderen. RPGs sind ein offenkundiges Merkmal dafür, dass alles über den Server laufen *muss*. Genauso gibt es aber auch haufenweise Spiele, wo der Server nur zum Finden von Spielern dient und die eigentlichen Spiele dann auf den Clients gehostet werden.
Und nur um zukünftiges Geflame zu verhindern, ich will hier keine explizite Lösung festnageln. Ich will nur sagen, dass es eben verschiedene Ansätze gibt, die verschiedene Einsatzmöglichkeiten und Vor- und Nachteile haben. Und manche Spiele nutzen sogar beide (wie etwa Star- und Warcraft). Es *muss* nicht immer nur einen zentralen Server geben und das ist dann die einzig mögliche und valide Lösung.
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]

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

10

30.06.2011, 21:45

@BlueCobold:
Auch wenn ein Client die Funktion des Servers übernimmt, dann läuft dieses Spiel vom Prinzip her immernoch auf einem "zentralen" Server. Der einzige Unterschied ist in dem Fall wohl, dass ein offizieller Server eben schwerer zu manipulieren ist als ein Dedicated Server im LAN. Hier geht es imho aber eher um das Prinzip und dafür ist die Betrachtungsseite nicht ganz so relevant. Denn technisch unterscheiden sich die Spieleserver auf offiziellen und privaten Servern kaum oder garnicht. WOW und andere MMORPS sind hier eher die Ausnahme, da es keine Server gibt, die in privater Hand sind (zumindest nicht mit offizieller Unterstützung). Hier werden aber dann auch auf dem Server viel weniger Daten abgeglichen um den Traffic und die Serverauslastung zu minimieren. Egal was man macht, irgendwo muss ein "Server" stehen, der sich als Spielführer ausgibt und mit dem sich die Clienten synchronisieren.

Werbeanzeige