DirectPlay via Internet / Online Game
Übersicht

![]() |
biggicekeyBetreff: DirectPlay via Internet / Online Game |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group