Multiplayer - ?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Chaos Melone

Betreff: Multiplayer - ?

BeitragSa, Apr 18, 2009 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo ich möchte gerne ein erstes kleines Multiplayer-Programm schreiben und habe hier auf der Hilfeseite des Portals erstmal die Begriffe angeschaut und jetzt bin ich ratlos.... Es gibt: DirectPlay, TCP und UDP.
Doch da ich noch keine Erfahrung mit dem Multiplayer-programmieren habe, weiss ich nicht, was ich jetzt benutzen soll?
Ist eines dieser drei das Beste und worin unterscheiden sie sich?
Hoffe auf eine Antwort

mfg
Melone Smile

Pummelie

BeitragSa, Apr 18, 2009 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Directplay:
Pro: leicht^^
Kontra: Veraltet,eigentlich nur für lan
TCP:
Pro: Sicheres Übertragen
Kotra: langsam
UDP:
Pro: schnell
Kontra: daten kommen nicht 100%tig an
It's done when it's done.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 18, 2009 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurz und schnell erklärt:

DirectPlay
- veraltet
- unbrauchbar
- einfach

TCP
- relativ schnell
- zuverlässig
- standard

UDP
- noch etwas scheller als TCP
- mit möglichen datenverlusten verbunden
- nur für ego-shooter und ähnlichem zu gebrauchen
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

coolerj

BeitragSa, Apr 18, 2009 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
das intressirt mich auch weil ich ein ähnliches Spiel wie Metin2 machen möchte.
MfG
coolerj

Meine Website: http://blitzbasicprojeckte.de.tl/
 

da_poller

BeitragSa, Apr 18, 2009 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
coolerj hat Folgendes geschrieben:
das intressirt mich auch weil ich ein ähnliches Spiel wie Metin2 machen möchte.


lern lieber erstmal die grundlagen bevor du mit bb(einer sprache die für mmorpgs nicht geeignet ist) ein spiel nachmachst an dem seit JAHREN ein TEAM von PROFIS arbeitet...

sei realistisch und du wirst ernst genommen aber mit metin3 by coolj wirst du NIE ernstgenommen werden.
 

Chaos Melone

Betreff: vielen dank!

BeitragSa, Apr 18, 2009 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für die schnellen Antworten... Also werd ichs mal mit TCP versuchen Very Happy

ToeB

BeitragSo, Apr 19, 2009 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst auch mal diese Seite besuchen... Da hab ich eine Lib reingestellt, die du einfach über "Include" in dein Programm einfügst. Dann noch ein paar zeilen um zu Hosten/Joinen und um deine Daten zu versenden... Den rest macht meine lib...

Ist eigl. nur ne alternative zu Directplay, nur halt viel schneller, auch über Internet nutzbar, und man hat viel mehr möglichkeiten die nachrichten etc. zu verwalten....


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

xXThunderXx

BeitragSo, Apr 19, 2009 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du ma UDP lernen willst ist des ambestenhttp://blitzbasic.com/codearcs...?code=2261 alles gut erklärt und so (Danke "Starwar" das hat mir sehr geholfen die Seite).Wenn nicht Lade dier ma von dem Home Archiv https://www.blitzforum.de/news/index.php?page=1 die sachen runter 4-3 würde ich ma sagen. Da sind auch Sachen mit Lan dabei gug dier die ma und Teste einfach ma herum. Am besten versuchts so kleien spielereien am anfang wie Viereck mit der Mäusen bewegen lassen und so bevor du dich an was gröseres wagst.
 

Chaos Melone

Betreff: paar Probleme... und danke :-)

BeitragSo, Apr 19, 2009 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke ihr zwei Very Happy
Ich versuche für den Anfang einen kleinen Chat zu programmieren (TCP)...
Und schaue jetzt noch paar Dinge in Robs Tutorials an....
Ich habe gerade ein Problem.....
Wenn man das Programm startet soll man auswählen können ob man einen neuen Chatraum erstellen will oder einem bereits erstellten beitreten... Wenn ein Chatraum erstellt wird kann man ihm einen Namen geben und dieser soll dann in einer Liste aller bestehenden Räume angezeigt werden.

...Also vielleicht habe ich etwas falsch verstanden aber ich habe es so gemacht: Wenn man einen neuen Chatraum eröffnet, wird ein Server für diesen Raum gemacht und wenn man einem Raum beitritt, wird man einfach mit opentcpstream(stream) irgendwie mit diesem Server verbunden...

Aber ich verstehe nicht wie ich dann, bevor man einen Server erstellt oder einen Raum betreten will, die Liste aller bestehenden Chaträume angezeigt bekommen kann.... dann müsste man sich ja mit allen diesen Servern verbinden weil der PC sonst den Namen der Chaträume nicht kennt....?

Und um dann beizutreten muss man ja die IP des Hosts wissen, ich habe das mit HostIp versucht, aber mein BB erkennt den Begriff gar nicht (er wird weiss geschrieben) ....

Helft mir bitte falls ihr könnt Very Happy ...Danke^^

mfg
Melone Very Happy

Pummelie

BeitragSo, Apr 19, 2009 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ganz einfach, du erstellst einen server bloß an einen anderen port, dieser dokumentiert alle server erstellungen, und speichert sie ab.
Wenn jetzt jemand verbinden will, verbindet er sich erst mit dem server am anderen port, und ruft die server liste ab.
It's done when it's done.
 

Chaos Melone

Betreff: :-)

BeitragSo, Apr 19, 2009 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh darauf bin ich nicht gekommen^^
Danke erstmal aber was bedeutet eigentlich genau "port"
....also Türe aber wie soll ich das verstehen?

mfg
melone

Pummelie

BeitragSo, Apr 19, 2009 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ports sind dazu gut, um bestimmte internet prozesse einem festung ein und ausgang zur verfügung zu stellen.
z.b:
http port = 80
ftp port = 21

Die niedrigen port, also bis ca. 1000 sind sicher alle für prozesse schon belegt, du solltest ports wie 19888 nutzen, google doch einfach mal nach "portlist"
It's done when it's done.
 

Chaos Melone

Betreff: hmm...

BeitragSo, Apr 19, 2009 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke .... habe leider schon wieder ein Problem Confused
Wenn ein Spieler einem Chat beitritt, wie geht das nun mit der IP....
Also man muss ja (bei TCP) den Befehl
OpenTCPStream(ServerIP,ServerPort)
...Doch wie kann man nun die ServerIP ermitteln? Ich habs mit HostIP versucht aber den Begriff kennt mein BB ja komischerweise nicht...

Vielleicht mache ich auch einen Denkfehler...
Hoffe wieder auf schnelle Antworten Very Happy Dankeschön

mfg
melone

Pummelie

BeitragSo, Apr 19, 2009 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die IP schon kennen.
PS: locale ist 127.0.0.1

Seine eigene IP bekomment man raus, indem mal die folgende seite besucht: IP

[/code]
It's done when it's done.

Tankbuster

BeitragSo, Apr 19, 2009 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du auf deinem PC lokal testen willst ist die IP "127.0.0.1"
Wenn du einen festen Server haben willst, solltest du dir eine Dynamische DNS zulegen. (für ein Onlinespiel erst recht)

Im lokalen Netz kannst du deine IP mit der Eingabeaufforderung und ipconfig herausfinden.

Oder deine IP im WWW auf Seiten wie www.meineip.de


Zitat:
hallo ich möchte gerne ein erstes kleines Multiplayer-Programm schreiben

Metin2 ist klein? ^^
Du solltest deine Ziele wirklich nicht zu hoch stecken. Wink
Twitter
Download Jewel Snake!
Windows|Android
 

Chaos Melone

Betreff: Danke

BeitragSo, Apr 19, 2009 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm danke nochmals aber ich blicke einfach immer noch nicht ganz durch... Confused
Hat jemand von euch vielleicht einen kleinen Beispielcode bereit der etwas ähnliches kann wie das was ich hier versuche? Wenn ja wäre froh wenn jemand sowas hier posten könnte... Smile
Vielen Dank

mfg
Melone

Pummelie

BeitragSo, Apr 19, 2009 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Also für einen Chat?
It's done when it's done.
 

Chaos Melone

BeitragSo, Apr 19, 2009 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja für einen Chat oder sonst ein sehr simples Programm für Multiplayer....
Einfach dass ich seh wie's gemacht wird Wink

mfg
melone

Pummelie

BeitragSo, Apr 19, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Werde was zusammencoden, und als edit schreiben.

Edit:
Server
BlitzBasic: [AUSKLAPPEN]
 
Graphics 800,600,16,2 ;fenster erstellen
SetBuffer BackBuffer() ;Buffer setzen
Local host = CreateTCPServer(19888) ;server erstellen
If host = 0 Then End ;wenn server nicht erstellt werden konnte, dann beenden
Local time = CreateTimer(5) ;partner timer erstellen (wegen 100% auslastung)
Local time2 = CreateTimer(30) ;hauptschleifentimer erstellen
Local partner ;Variable Partner als local definieren
Text 0,0,"Warte auf Partner"
Flip
Repeat ;schleifen anfang
partner = AcceptTCPStream(host) ;prüfen ob jemand eine verbindung herstellt
If partner <> 0 Then Exit ;wenn jemand verbindet, schleife verlassen
WaitTimer time ;auf timer warten
Forever ;schleifenende
Local tex$ = 0,stelle = -12,tosend$ ;wichtige varieablem setzen
Repeat ;hauptschleifen anfang
tex$ = ReadLine$(partner) ;gesendetes auslesen
If tex$ <> 0 Then ;wenn etwas gesendet wurde
If stelle > 600 Then ;wenn bildschirm voll ist
Cls ;bildschirm löschen
stelle = -12 ;Y coordiante auf -12 setzen
EndIf
stelle = stelle + 12 ;Y Koordiante des Textschreibbefehls erhöhne
Text 0,stelle,tex$ ;nachricht schreiben
tex$ = 0 ;nachricht Variable wieder auf 0 setzen, so dass nicht die ganze zeit text ausgegeben wird
Flip ;ildschirm aktualiesieren
EndIf
Select KeyDown(29) ;wenn strg gedrückt wird
Case 1
tosend$ = Input("Nachricht: ") ;nachricht erfragen
WriteLine(partner,tosend$) ;nachricht senden
FlushKeys() ;tataturbuffer löschen
End Select
WaitTimer time2 ;auf hauptimer warten
Until KeyDown(1) ;wenn esc gedrückt wird schleife verlassen
End ;beenden

Client
BlitzBasic: [AUSKLAPPEN]
 
Graphics 800,600,16,2 ;fenster öffnen
SetBuffer BackBuffer() ;buffer setzen
Local time = CreateTimer(30) ;haupttimer setzten
Local stream = OpenTCPStream("127.0.0.1",19888) ;verbindung herstellen
If stream = 0 Then End ;wenn verbindung nicht hergestellt werden konnte
Local stelle = -12,tosend$,tex$ = 0 ;variablen definieren
Repeat
tex$ = ReadLine$(stream) ;gesendetes auslesen
If tex$ <> 0 Then ;wenn etwas gesendet wurde
If stelle > 600 Then ;wenn bildschirm voll ist
Cls ;bildschirm löschen
stelle = -12 ;Y coordiante auf -12 setzen
EndIf
stelle = stelle + 12 ;Y Koordiante des Textschreibbefehls erhöhne
Text 0,stelle,tex$ ;nachricht schreiben
tex$ = 0 ;nachricht Variable wieder auf 0 setzen, so dass nicht die ganze zeit text ausgegeben wird
Flip ;ildschirm aktualiesieren
EndIf
Select KeyDown(29) ;wenn strg gedrückt wird
Case 1
tosend$ = Input("Nachricht: ") ;nachricht erfragen
WriteLine(stream,tosend$) ;nachricht senden
FlushKeys() ;tataturbuffer löschen
End Select
WaitTimer time ;auf hauptimer warten
Until KeyDown(1) ;wenn esc gedrückt wird schleife verlassen
End ;beenden


Getestet unter B3D
It's done when it's done.
  • Zuletzt bearbeitet von Pummelie am So, Apr 19, 2009 19:40, insgesamt einmal bearbeitet
 

Chaos Melone

Betreff: Dankeschön

BeitragSo, Apr 19, 2009 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal... habe jetzt eine gute Vorstellung bekommen .... Nun also du hast 2 verschiedene Programme: eins für den Host und eins für den Client (hab ich das richtig verstanden? xD) Smile
Ich denke das war es auch schon zuvor was mich verwirrte.
Weil wenn man den Chat startet soll das ja EIN Programm sein.... d.h. man müsste die 2 Codes irgendwie in einen verpacken und am Anfang des Programmes irgendwie ermitteln ob bereits ein Host vorhanden ist, wenn ja, dann tritt man dem Chat bei und sonst wird man selbst Host....

Also ich weiss nicht ob ich jetzt völligen Blödsinn laber aber wenn nicht dann bräuchte ich ja einen Befehl um herauszufinden ob in diesem Moment bereits jemand das Programm geöffnet hat und Host ist....
Gibt es so einen Befehl Question

mfg Melone

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group