DirectPlay via Internet / Online Game

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

biggicekey

Betreff: DirectPlay via Internet / Online Game

BeitragDo, Jan 18, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
habe mir mal die beispiele der hilfe zum directplay vorgenommen und für mein verständniss ausgebaut um damit zu testen.
funktioniert auch alles bestens, deshalb wollte ich den code schon als beispiel ins codearchiev packen, da ich zu dem thema nichts brauchbares für mich gefunden hatte, aber es gibt für mich noch das problem das ich, außer auf meinem pc alleine, das programm nicht testen konnte.
bei meinem einzigen test übers internet mit einem kollegen kam keine verbindung zu stande. nun wollte ich wissen ob das am code oder vllt am fehlenden port-forwarding in einem router oder an einer routerfirewall gelegen hat.

hoffe ihr könnt mir noch tips geben dazu.

noch eine kurze erklärung zum test auf einem pc:
-programm 2x starten
-bei einem programm spiel hosten wählen.
-beim anderenl spiel joinen.
-eure eigene (interne) IP wird euch angezeigt.
-IP eingeben
-spiel startet
-es in beiden programmen angezeigt das ein neuer spieler beigetreten ist
-drückt man in einem der programme enter erscheint im anderen der text "test"

soviel dazu:
Code: [AUSKLAPPEN]



a=Input("Was willst du tun? 1.Spiel Hosten 2.Spiel Joinen")
 


If a=1

spiel = HostNetGame("Spiel")


Select spiel
Case 2
Print "Successfully started host game!"
Default
Print "Game was unable to start!"
End Select
;WaitKey()


ElseIf a=2

count_ips = CountHostIPs("")

For i=1 To count_ips
   Print "IP : "+" "+ DottedIP$( HostIP(i) )
Next


ip$=Input$("IP")

spiel = JoinNetGame("Spiel", ip$)

Select spiel
Case 1
Print "Joined the game successfully!"
Default
Print "Joining the game was unsuccessful."
End Select
;WaitKey()

EndIf



spieler = CreateNetPlayer("Name des Spielers")



; Loop and get status
While Not KeyHit(1)


If KeyHit(28)
SendNetMsg 1,"test",spieler,0
EndIf




; Check to see if we've received a message
If RecvNetMsg() Then

; if we did, let's figure out what type it is
; we know it will be a user message, though
msgType=NetMsgType()

; 1-99 means a user message
If msgType>0 And msgType<100 Then

; Let's see who the message was from
msgFrom=NetMsgFrom()

; Let's get the message!
msgData$=NetMsgData$()

; Print the message
Print msgData$

ElseIf msgType=100
Print "=   ein neuer Spieler ist dem Spiel beigetreten"

ElseIf msgType=101   
Print "=   ein Spieler hat das Netzwerkspiel verlassen"

ElseIf msgType=102   
Print "=   Der Host hat das Spiel verlassen und dieser Computer ist nun der neue Host"

ElseIf msgType=200   
Print "=   Ein Problem ist aufgetreten und das Netzwerkspiel muss beendet werden"

EndIf


End If


Wend
End
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

BtbN

BeitragDo, Jan 18, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
DirectPlay benutzt einen haufen ports(2000 oder 3000 stück glaubich), die du alle forwarden must im Router, damit was geht. Von daher ist DirectPlay für Internet einfach nur ungeeignet.

biggicekey

BeitragDo, Jan 18, 2007 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das ist ja mal doof...
also UDP... da gibt man nur einen Port an richtig?
muss man diesen forwarden?

wie machen das große games? musste bisher nie für nen game irgendwelche ports forwarden?!?

gibt es garkeine möglichkeit mit directplay das einfacher zu handhaben?


danke
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

flashmaxel

BeitragFr, Jan 19, 2007 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Forwarden heißt deinem Router mitzuteilen, an welchen Computer er ankommende Nachrichten weiterleiten soll.
Wenn du aber die Nachricht losschickst also an einem Spiel nur teilnimmst, schickt dein Spiel eine erste Nachricht an den Server. Wenn der Server dann Daten zurückschickt leiten neuere Router diese Nachricht automatisch an den richtigen PC weiter.
Der Server muss also immer Geforwardet sein, während es beim Client meist auch ohne geht. Das ist auch bei "großen games" so.
Real C programmers never die; they cast to void.

biggicekey

BeitragFr, Jan 19, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
reicht es die ports zu öffnen (dynamisch) oder müssen sie weitergeleitet werden?
also beim server.

wobei mir gerade aufgefallen ist das in der hilfe des routers steht, dass port öffnung dazu dient, dass programme die über den geöffneten port etwas verschicken über diesen auch wieder empfangen können.
ich dachte jetzt eigentlich das wäre generell so das wenn ich über einen port, als client, was sende über diesen wieder empfangen kann.
alles etwas verwirrend.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group