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

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

21

29.07.2010, 14:41

Joah was soll ich groß sagen? Im Prinzip ist die erste Frage "wie tief willst du denn in die Abgründe schauen"? Denn Pakete hin- und herschicken ist nett und ein Chat prinzipiell einfach, aber damit hat man noch lange nicht einen funktionierenden Multiplayer. In meiner Signatur findest du einen Vergleich verschiedener Netzwerklibs, die teilweise auch unterschiedliche Ansätze nutzen.
Es kommt halt echt darauf an, was du genau machen willst. Willst du Netzwerken von UDP/TCP ab alles von selbst lernen (ziemlich hartes und undankbares Brot) oder willst du Multiplayerspiele programmieren?
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.

Harry222

Alter Hase

  • »Harry222« ist der Autor dieses Themas

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

22

29.07.2010, 14:43

Ich will Multiplayerspiele programmieren! Im moment erstmal mein Viergewinnt "weiterentwikeln"!
Aber jetzt muss ich wirklich Schluss machen :!: :!: :!:

23

29.07.2010, 14:49

Hm, ich glaub, du verwechselst ein Forum ein bisschen mit nem Chat. Hier brauchste nich am Stück da sein ;) Der Thread kann sich doch über Tage ziehen. ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

24

29.07.2010, 14:49

server
das programmieren von netzwerkspielen ist sehr schwierig. bei spielen in echtzeit musst du bei spielen über internet inter-/extrapolieren um die verzögerung auszugleichen.
bei rundenbasierenden spielen oder spielen im lokalen lan ist es relativ einfach.
im grunde musst du nur eine geeignete netzwerk-lib beherrschen und wissen wie man inter-/extrapoliert, der rest ist normale spieleprogrammierung(abgesehen davon das dein spiel zwei instanzen vom spiel haben könnte und du deshalb kaum singletons und/oder statische member nutzen darfst). achja thread-programmierung gehört meist auch dazu.

edit: so einfach wie stazer das darstellt ists leider nicht immer :/ wobei vier gewinnt ein sehr einfaches beispiel ist, bei dem du dir keine gedankten um die verzögerung machen brauchst(man wartet einfach so lang bis der nächste spieler sein zug gemacht hat und die packete angekommen sind). bei 4gewinnt brauchst du keinen server, da reicht eine einfache p2p verbindung.
"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?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NachoMan« (29.07.2010, 15:14)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

25

29.07.2010, 15:00

Threadprogrammierung ist nicht zwingend. Je nach Lib wird dies automatisch gehandled. Problematisch ist halt, dass Netzwerke eine Parallelität UND eine zeitliche Verschiebung mit reinbringen, welche nur schwer zu handhaben ist. Je nach Genre gibt es dafür verschiedene Ansätze, die sich auch nicht wirklich für andere Genre eignen. So ist bei einem Shooter es durchaus üblich in sehr kurzen Abständen die Werte zu schicken (non reliable), die Bewegungen zu extrapolieren und die Eingaben direkt zu visualisieren. Bei einem RTS hingegen ist es üblich ein sogenanntes HEARTBEAT-System einzuführen.
Je nach Lib werden auch unterschiedliche Anwendungsfälle unterschiedlich gut gehandhabt.
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.

Harry222

Alter Hase

  • »Harry222« ist der Autor dieses Themas

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

26

29.07.2010, 16:05

Okay, es geht ja im Moment nur um Rundenspiele! ;)
Aber was soll mir dein Text jetzt genau sagen Nox? ?(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

27

29.07.2010, 16:44

erste Aussage: Netzwerkanwendung ist nicht gleich Netzwerkanwendung
zweite Aussage: du musst dir darüber im klaren sein wieviel du selbst machen willst, bzw wieviel du machen lassen willst
dritte Aussage: damit wir dir präzise helfen können, müssen wir genau wissen, was du machen willst

Mit Libs wie RakNet, Enet, asio etc. kann man in erster Linie Nachrichten verschicken, während sich z.B. Zoidcom und syncsys auf einer etwas höheren Ebene bewegen und gleich die Synchronisation von Objekten vornehmen. Oder anders ausgedrückt:
System 1: Clients und Server tauschen Nachrichten ala "ich bin jetzt da und da", "ich will damit interagieren" oder "du bist nun tot" aus
System 2: Die Serverwelt wird 1:1 auf die Clients projiziert und die Clients sagen nur noch was sie tun wollen, was der Server prüft und ggf. umsetzt.
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.

Harry222

Alter Hase

  • »Harry222« ist der Autor dieses Themas

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

28

29.07.2010, 19:01

Okay!
Also hier mal eine Beschreibung, wie ich z.B. das Vier Gewinnt jetzt machen will!

1. Es gibt ja sowiso nur zwei Spieler :!:
2. Nach jedem Zug soll der Computer, auf dem der Zug ausgeführt wurde, den Zustand des Spielfeldes (7 Breit x 6 Hoch) an den jeweils anderen Computer übergeben, damit auch der den aktuellen Zustand des Spielfeldes sehen kann :!:
3. Außerdem soll es eventuell einen einfachen Chat geben :!:

(Ihr erweckt auf mich gerade den Eindruck, als ob man eine 10-jährige Unterweisung bräuchte, um von einem Computer aus einem Anderen mitzuteilen, dass er doch bitte einen Punkt zeichnen solle :S Ist das wirklich so schwierig ?( )

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

29

29.07.2010, 19:06

Für 4Gewinnt ists nicht schlimm, aber an sich würde es reichen ja immer nur die Änderungen zu verschicken ;)

Ach so schlimm ist Netzwerkprogrammierung auch wieder nicht. Für alles größere und Echtzeit ists zwar nicht allzu leicht.. aber das ist doch fast in jedem Bereich so wenn man es etwas größer ansetzt. Bei CuBrush bin ich übrigens mit RakNet recht gut zurecht gekommen allerdings hab ich da die keine großartigen Extrafeatures verwendet, sondern mich klassisch das Senden von Paketen beschränkt. Allerdings gibts wenn die Spieler in dem Spiel zusammenstoßen leider manchmal Synchronisationsfehler.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

30

29.07.2010, 19:08

naja in dem fall nicht wirklich schwierig. du brauchst eigentlich nur den neuen stein übertragen.
die sfml und wxWidgets bieten beide einfache möglichkeiten netzwerkapplikationen zu erstellen. wenn du schon ein bisschen erfahrung in c++ hast sollte das kein großes problem für dich darstellen.
"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?

Werbeanzeige