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

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

1

18.12.2010, 12:26

WinSocket übers Internet

Hi

Ich wollte mir ein Spiel programmieren, welches mit WinSocket arbeitet. Ich kenne mich schon ein wenig mit den WinSockets aus, ich weiss z.B. wie man Vektoren vom Client an einen Server schicken kann. Doch das habe ich bislang alles im Localhost gemacht, also mit meiner IP, doch wie kann ich nun das Ganze über das Internet programmieren?

Ich denke, man braucht für das bestimmt einen Server, oder? Wenn ja, kann ich da einen Server benutzen den ich für meine Website benutze?

Kann mir jemand helfen und evtl. ein Tutorial geben?

LG Patrick

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

18.12.2010, 12:31

Also nur um es mal klar zu stellen: WinSocket bzw. sockets i.A. sind erstmal für die Kommunikation. Ob und mit welchen Server man sich damit "unterhält" ist den sockets egal. Geht es dir darum per socket mit einem HTTP Server dich unterhalten zu können? Willst du alles selbst machen oder willst du einfach Infos/Inhalte von den? Oder willst du einen eigenen Server 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.

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

3

18.12.2010, 13:14

Also ich will ein Spiel programmieren, dass man am Schluss im Multiplayermodus spielen kann. Ich weiss nicht genau ob ich da mit dem HTTP Server kommunizieren muss. Wenn das möglich wäre, um danach ein Spiel zu programmieren, das man im Multiplayer spielen kann dann wäre das bestimmt eine gute Möglichkeit.

Ich bin in diesem Bereich noch nicht so erfahren, deshalb fällt es mir schwierig hier eine gute Anwort zu geben. Aber vielleicht kann mir jemand sagen, was geeignet wäre für ein Spiel einen HTTP Server zu verwenden oder eher einen eigenen Server zu programmieren.

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

4

18.12.2010, 15:31

Bei sowas muss man den Ping beachten , da alles ja zeitverzögert passiert , benötigt man
interpolation oder so.
Ich glaube es wurde auhc mal ein Link für ein Englisches Tutorial hier gepostet.

MfG Stazer

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

18.12.2010, 16:22

Also für ein Multiplayerspiel im Internet brauchst du einen Server, der alle Clienten verwaltet. Dieser Server muss so am Internet hängen, dass man
ihn erreichen kann, ohne dass eine Firewall ihn blocked (was normalerweise mit deinem Heim-PC gemacht wird). Dazu kannst du auch deinen Router konfigurieren,
was ich dir aber nicht empfehle. Server auf denen du C++ programme laufen lassen kannst, kosten meistens Geld. Du kannst auch einen HTTP-server verwenden um ein Spiel zu machen, dann musst du aber den Server deines spiels mit PHP, perl, etc programmieren, es sei denn du schreibst einen eigenen was aber sinnlos ist ;).
Also kannst du das auch schonmal vergessen (vorallem weil in den meisten bedingungen von Freien Hostern drinsteht, dass du keine Spiele dort laufen lassen darfst).

Dir bleiben also folgende möglichkeiten:

+ Du holst dir für den Server nen Server auf dem du z.B. Excutables ausführen darftst.
+ Du proggst deinen Server in ner Serverscriptsprache und musst über HTTP zugreifen (auch gegen geschäftsbedingungen, außerdem kannst du Speile mit viel Übertragung vergessen-> da Server bzw verbindung zu langsam)
+ Du machst deinen Router auf und lässt das Spiel auf deinem Rechner laufen, wobei der dann immer an sein muss.
+ Es gibt noch alternativen, z.B. kam ich mal auf die Idee ein Multiplayerspiel über IRC oder so was laufen zu lassen... aber das wär auch langsam und warhscheinlich wird man schnell gebanned ;)
+ Noch eine möglichkeit ist, dass du Eine direkte Verbindung zwischen den Server schaffst und dein Server dann bei jemandem auf dem Rechner läuft der auch gerade spielt... guck mal nach "hole punching" aber da brauch man auch nen server, der das ganze einleitet (so ne technik wie bei Skype) ... aja außerdem geht das nur mit UDP-Sockets wirklich kompetent

Aja HTTP ist nur ein Protokoll, wobei der Empfänger ein bestimmtes muster in deinem Socket erwartet.

versuch doch lieber erstmal ein Multiplayerspiel zu programieren, welches man lokal (also erstmal nicht im Internet) spielt.
Wenn es einen Server hat, und du die möglichkeit hast dir einen Server zu beschaffen, kannst du das spiel ganz leicht auch fürs internet (um)aufrüsten.
Du musst dann halt die Ip des Servers, den du im Internet hast, benutzen anstatt eine lokale IP.
Und man kann dein Spiel immer noch über Hamachi spielen (Da wird auch dieses Hole punching benutzt.... soweit ich weiß zumindestens).
Über Internet dauert die Übertragungszeit natürlich wesentlich länger...:)

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

18.12.2010, 16:43

Warum zur Hölle unterscheidet ihr immer zwichen lokalen Netz und dem Internet? IP ist IP. Was interessiert es den client wo seine Pakete her wandern, wenn er etwas an den Server schickt? Richtig. Gar nicht.

7

18.12.2010, 16:45

du kannst auch die library raknet nehmen (ist frei bis zu gewinnen von 50000 Euro). Ist zwar zum Teil etwas kompliziert, aber ein einfaches Onlinespiel mit relativ wenig Leuten sollte relativ schnell gemacht sein. Die Computer der Spieler kannst du auch untereinander kommunizieren lassen, statt über deinen Server (peer-to-peer). Dann brauchst du auch keinen speziellen Server, es reicht ein php-fähiger Webspace, auf dem du anzeigen lassen kannst, welche Spiele gerade gehostet wurden.

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

8

18.12.2010, 23:23

Das ist eine gute Idee, ich programmiere zuerst mein Spiel über den localhost und später dann mit einem Server.

Wie kann ich denn einen Router aufmachen? Ist der Router nachher irgendwie gefährdet auf irgendetwas oder hat es da keine Nachteile?

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

9

19.12.2010, 01:54

Da gehst du über den Browser auf die IP deines Routers (musst mal im Handbuch gucken, ist meistens so ein Standardding wie '192.168.0.1') und da dann unter dem Stichwort "Port-Forwarding" den Port, den du für den Server verwenden willst,auf deinen Rechner weiterleiten. Dann kann sich jeder von außenauf diesen Port zu deinem Programm verbinden. Na ja Nachteil ist natürlich dass der Port dann jedem quasi offen steht... aber du hast ja sicher noch ne Firewall oder?^^ Wie soll das denn sein? Willst du das dann eher gelegentlich mal mit deinen Freunden spielen?

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

10

19.12.2010, 10:48

Bei sowas muss man den Ping beachten , da alles ja zeitverzögert passiert , benötigt man
interpolation oder so.
Ich glaube es wurde auhc mal ein Link für ein Englisches Tutorial hier gepostet.

MfG Stazer


Ich würde ihn nicht verschrecken. Ob man den Ping beachten muß hängt doch stark von der Art des Spiels ab. Bei einem rundenbasierten netzwerkfähigen Spiel ist der Ping eher vernachläsigbar.

Thoran
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Werbeanzeige