Onlinespiel über TCP - wie fange ich an?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Pousup

Betreff: Onlinespiel über TCP - wie fange ich an?

BeitragMi, Aug 11, 2010 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe Community!

Ich habe vor mit der Entwicklung eines kleinen Spiels zu beginnen, das online spielbar sein soll. Um das zu realisieren habe ich das TCP ausgewählt - oder wäre UDP besser? Erst mal nebensächlich, vom TCP aufs UDP umzubauen sollte bei meinem bisherigen Code keine große Sache sein. Denn soweit bin ich nicht gekommen, da sich mir schon theoretische Probleme in den Weg stellen...

Ich stelle mir das fertige Programm so vor, das einer der Spieler einen Server startet, über den alle Spieler verwaltet werden. Danach startet dieser Spieler wie alle anderen auch das Spiel, das als Client fungiert, und verbindet sich zum Server. Überlegt habe ich mir, den Server jeden Client in einem Type abzuspeichern. Wenn sich also ein neuer Spieler verbindet, wird ein neuer Type eingelegt - und von da an weiß ihc nicht so recht weiter. Sollen alle Clients nun ebenfalls einen neuen Type anlegen, in dem dann die Position des Clients gespeichert wird, damit die Spielfigur korrekt gezeichnet werden kann? Oder sollen diese Daten nur auf dem Server bleiben?

Wenn sich hier jemand mit Erfahrung melden könnte und sein grobes Vorgehen bei der Programmierung solcher Spiele erläutern könnte wäre ich sehr, sehr dankbar!

MfG
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr

ZaP

BeitragMi, Aug 11, 2010 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Server speichert seine Clients in Types, und die Clients auch, nur dass die eine abgespeckte Version vom Type bekommen. Clients brauchen ja keine IP oder die Ports von den anderen.
So würde ich das machen.
Starfare: Worklog, Website (download)
 

Pousup

BeitragDo, Aug 12, 2010 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
TCP ist aber schonmal richtig?
Danke für die Tipps, probier ich nacher mal!
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr

NightPhoenix

BeitragDo, Aug 12, 2010 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ob TCP richtig oder falsch ist kann man so nicht sagen. Es hängt davon ab was für Daten man per TCP versendet. Allgemein ist es sinnvoller ein Spiel mit UDP und TCP zu machen (oder nur UDP), weil eine TCP Verbindung das Programm immer "pausiert" (eigentlich wartet) bis alle Daten des Streams angekommen sind. TCP ist eine sichere Verbindung, aber langsam. UDP kann Datenverluste aufweisen, wodurch du auf Datenverluste prüfen solltest, ist aber sehr schnell und lässt dein Programm weiterlaufen.

Ich hab es immer so gemacht:
Wichtiges wie Login als TCP, vielleicht auch Ingame-Chat (Vorsicht vor zu viel String-Datenverkehr! Führt bei TCP-Ingame-Chat sonst zu Rucklern des Spiels) und alles andere als UDP. Man muss so z.b. Position, Rotation, etc. eines Spielers nichtmal auf Verlust prüfen, da diese Sachen sowieso 1, 2 mal die Sekunde gesendet werden, insofern ein klares Argument für UDP. Wink
 

Pousup

BeitragDo, Aug 12, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ok - hab mir gedacht die sichere Verbindung wäre wichtiger. Um das gemischte zu machen: Muss ich das Serverprogramm also einen TCP-Server und einen UDP-Server aufmachen lassen, richtig?
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr

NightPhoenix

BeitragDo, Aug 12, 2010 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, eigentlich nicht ganz. Wenn man es so sagen kann hat nur TCP eine feste Verbindung und damit den Befehl mit "TCPServer". UDP hingegen hat keine feste Verbindung, sondern nur einzelne Pakete/Streams dessen Herkunft erst bestimmt werden muss. Es gibt keinen UDP Server, sondern nur Pakete die anhanf von z.b. der IP-Adresse des Absenders zugeordnet werden. Kommt ein neues Paket an so muss das nun auch wieder zugeordnet werden. Mit den entsprechenden Befehlen aber garnicht schwer. Wink

Schau dir mal die Beispiele an und übe mit einem kleinen Programm beide Methoden, sowohl TCP als auch UDP, dann erst mische die beiden, sonst verlierst du fix den Überblick wenn du an deinem Hauptprojekt anfängst zu lernen und rumzubasteln. Erst lernen, dann gewusst wie umsetzen.
 

Toasty

BeitragMo, Aug 16, 2010 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage hab ich mir auch gestellt, ob ich TCP oder UDP nehmen soll... Bei meinem kleinen MMORPG benutze ich jetzt beides. TCP für den Login, da TCP Handshake benutzt und so keine Daten verloren gehen können, und UDP für die ständige Kommunikation zwischen Server und Client, da die Positions-Übertragung kein Drama ist, wenn sie einmal nicht ankommt. Für den Chat habe ich auch UDP genommen... Außerdem ist ein Vorteil bei UDP, dass man mehrere Strings, Floats, und Bytes auf einmal verschicken kann, was bei Charakter Informationen sehr hilfreich ist...
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!
 

Pousup

BeitragMo, Aug 16, 2010 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
So werde ich das wahrscheinlich auch machen. Gibt es außer der Onlinehilfe noch andere Tutorials/Hilfestellungen, die euch beim erlernen geholfen haben?
www.mikes-frittenbude.blogspot.com Gaming, Musik, Lifestyle & mehr

Johannes´

BeitragMo, Aug 16, 2010 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
In der alten Onlinehilfe gab es noch so eine Sammlung an Tutorials, die unter anderen auch die Netzwerk-Befehle erklärt haben. Ich weiß aber nicht, ob das das ist was du suchst, es ist mehr eine Erklärung der Befehle.
Zu finden gibt es das hier: http://robsite.net/tags/tutorial?page=2.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group