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

25.09.2011, 16:31

Netzwerkspiel, Was muss ich wissen?

Hi @ all,

Ich will mich an die Programmierung eines OFPS setzen. Mein Problem ist dabei jedoch das 'O', denn ich habe noch keine Erfahrung mit Netzwerkprogrammierung.
Meine Fragen daher:
Was muss ich alles wissen?
Welche guten Tutorials oder Bücher kennt ihr? (lieber erstmal Tutorials)
Was sollte ich dann zur Übung erstmal programmieren?

Wenn ihr meint das es zu schwer ist ein OFPS zu programmieren, dann nennt bitte Begründungen dazu :)

Außerdem benutze ich derzeit die SoftPixelEngine. (evtl. andere, bessere Vorschläge?)

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

2

25.09.2011, 16:58

Ich würde dir OGRE empfehlen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

25.09.2011, 17:13

Und was hat Ogre mit Netzwerk zu tun?

RakNet scheint eine gute Bibliothek für Netzwerkprogrammierung zu sein.
Aber erst einmal: was für Spiele hast du denn bisher schon entwickelt?

4

25.09.2011, 17:46

Hatte ja auch nach evtl. anderen Engines gefragt :)

RakNet habe ich mir mal vermerkt. Jedoch müsste ich erstmal noch wissen, was ich den überhaupt über Netzwerkprogrammierung wissen muss :)

Einen 2D-Tetris Klon und schon einen Teil des FPS.

mfg
Steem

PS: Wenn ihr meint, das als erstes 3D-Spiel zu machen ist unsinnig und evtl. auch dumm, so will ich sagen,
dass ich C++ schon über 2 Jahre lerne, schon in einem Team für Serveremulation (jedoch leider nicht Netzwerk) gearbeitet habe
und auch weiß wie man ein 3D-Spiel programmiert. (Leider nie die Zeit/Motivation gehabt)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

25.09.2011, 18:34

Netzwerkprogrammierung ist nicht unbedingt das leichteste, was man sich für den Anfang raussuchen kann und gerade First Person Shooter, bei denen jede minimale Verzögerung sofort auffällt, sind sehr anspruchsvoll. Am besten wäre es auch hier sich langsam an die Materie heran zu tasten. Erst mal einen kleinen Chat programmieren, anschließend evtl. ein Rundenstrategie-Spiel(Schiffe Versenken oder so was) und dann langsam in Richtung Real-Time gehen.
Tutorials habe ich zu diesme Thema auch noch nicht wirklich gefunden(klar Netzwerk-Grundlagen findet man, aber detaillierte Tutorials zur Spieleprogrammierung findet man egtl. kaum).

Einige Artikel und Seiten, die ich dir auf jeden Fall ans Herz legen kann:
Wie funktioniert es in den Unreal-Spielen?
Wie macht es die Source-Engine?
Networking for Game Programmers

Alles in allem wirst du feststellen(auch wenn du dann mal deine ersten eigenen Tests schreibst), dass die Materie alles andere als Trivial ist. Mein Rat ist nicht, dass das erste 3D-Game kein FPS sein sollte, sondern dass du möglicherweise das "Online" nochmal überdenken solltest ;). Denn letztlich ist Netzwerk-Programmierung nichts, was man mal eben so nebenbei mitnehmen kann. Zumindest nicht, wenn es gleich ein FPS werden soll. Dazu kommen dann noch Späße, wie bspw. Cheating, um das du dich kümmern musst. Also leicht wird es definitiv nicht ;).

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

25.09.2011, 19:17

Ich les hier so oft was zum Thema cheat-Schutz. Wenn jemand ein Spiel mit Netzwerkfunktion baut, ist cheat-Schutz sicherlich eine schöne Sache. Vernünftige Physik in FPS ist es jedoch auch. Oder tolle Models, oder oder oder. Man muss sich fragen, ob man überhaupt einen cheat-Schutz braucht. Die meisten entwickeln ein Spiel und spielen es dann selber, oder vielleicht mal mit ein paar Freunden. Vielleicht landet es sogar im Internet, wo es dann ein paar Leute laden. Wohl gemerkt ein paar. In so einem Fall muss man abwägen, ob es einem die Zeit wert ist einen Schutz für Cheats einzubauen. Solange ich mein Spiel doch nur mit Freunden im Netzwerk spiele, ist für mich ein Cheat-Schutz zum Beispiel unwichtig. Klar hat da jeder andere Vorstellungen. Aber oft wird hier so getan, als wenn es nicht anders geht als mit;) Wollte auch mal aufführen, dass man sich das je nach dem auch mal sparen darf;)
Mein Vorschlag wäre aber auch, erst mal langsam vor zu wagen. Mach erst mal ein Chat-Programm. Erst mal nur zwischen 2 Personen. Dann kannst du gucken mehrere Clients zu unterstützen. Wenn das läuft, versuch mal was Rundenbasiertes. Schiffe Versenken wurde ja schon genannt. Ansonsten kannst du es auch mit Tic-Tac-Toe oder Vier-Gewinnt versuchen. Oder du machst dein lieblings Würfelspiel. Kannst ja irgendwas mit einfacher Spielmechanik nehmen, um dich mehr auf die Netzwerksachen zu konzentrieren. Danach könnte es mit nem Pong fürs Netzwerk weiter gehen. Das sind natürlich alles nur Beispiele, wie du vorgehen kannst. Du kannst natürlich auch direkt versuchen, dich an deinen Shooter zu machen. Würde ich dir aber dann von abraten.
„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.“

7

25.09.2011, 19:33

Erstmal danke für die ganzen Tipps und Links :)
Ich denke, ich werde mir die Seiten mal anschauen und danach, wie ihr geschrieben habt, mal ein paar kleine Sachen schreiben.

Das es lange dauert war mir schon irgendwie klar und das ich auch nicht von heut auf morgen etwas haben will, sieht man,
denk ich mal auch an der Zeit vom Anfang lernen C++ und meinem Anfang Spiel. :)

@Schorsch
Mit dem Cheat-Schutz würde ich dir sogar Recht geben. Notfalls kann man sich ja immer noch auf andere Quellen zurückbeziehen.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

26.09.2011, 12:36

Nach meiner persönlichen Erfahrung würde ich von RakNet abraten und eher zu ENet (ggf mit der IrrNetLite-Erweiterung, falls es noch so heißt). Zwar bringt RakNet eine Menge Features mit, aber von der Latenz und Overhead ist es ENet nach meinen Test oft nicht ebenbürdig und vom Design her ist ENet sehr einfach, aber durchaus nicht unpraktisch gehalten. Einzig eine gescheite Pufferklasse vermisst man, aber das bessert IrrNet nach. Alternativ könnte ich dir auch meine Pufferklasse anbieten: http://syncsys.svn.sourceforge.net/viewv…=77&view=markup .

Achja...willst du überhaupt C++ Libs?

P.S: je nach Netzwerkmodell ist eig automatisch ein Cheatschutz drinne; Wenn man ein Server-Client System wählt, ist der Server halt Gott. Solang der Server nur das an die Client schickt was sie wissen müssen sind Wallhacks etc. unbrauchbar. Falsche Komando-Pakete kann der Server per Gegentest schnell ausfindig machen und wenn der Server kompromittiert, ist eh alles verloren. Bei einem P2P System ist sowieso ein Out-Of-Sync Check notwendig. Wer im Zweifelsfall recht hat ist natürlich auf Grund der Natur einer P2P Welt nicht einfach zu klären.
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.

9

26.09.2011, 12:54

Wenn es nicht C++ sein muss, kannst du auch mal JMonkeyEngine oder Ardor3D ausprobieren. Die JMonkeyEngine hat Netzwerk sonst auch integriert. Netzwerk mit Java ist ziemlich bequem. Habe jetzt schon öfters von http://code.google.com/p/kryonet/ gelesen. Ich selbst benutze JBoss Netty und für die Serialisierung erst mal einfache Java Serialisierung mit Externalizable...

10

27.09.2011, 18:53

OT:
Ist man mal 2 Tage nicht da, ist das ganze Forum umgestaltet 8)

Sorry, hatte vergessen C++ dazuzuschreiben. :)
Ich werde mir mal alles anschauen und danach entscheiden welche Netzwerklib ich verwenden will.

Werbeanzeige