kleines netzwerkspiel
Übersicht

![]() |
grafeBetreff: kleines netzwerkspiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo zusammen,
ich möchte mich mal mit netzwerkspiel beschäftigen... ...leider hab ich keine ahnung wie das gehen sollte ![]() natürlich habe ich schon viel ausprobiert aber bei mir funktioniert es einfach net. ihr habt doch sicher ein bischen ahnung vom netzwerk und könnt mir sicher helfen also ich möchte das man mit udp (etwas ganz simples ![]() ich hoffe ich habe mich verständlich ausgedrückt, sonst sagt es einfach mfg grafe |
||
SpaceThreat 3D Multiplayer Spaceshooter |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann erstmal nen lauffähigen client code und dann das udp zeug einbauen..
einfach jede bewegung an den anderen senden.. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich kann nicht sagen, dass ich der beste bin, aber schreibe gerade ein Onlinegame in TCP und habe schon ein kleines minigame in UDP geschrieben. Zeit hätte ich auch. ich denke, dass ich sowas simples noch locker hinbekommen sollte. Wenn du möchtest, geb mir doch deine ICQ MSN SKYPE adresse o.ä |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
grafe |
![]() Antworten mit Zitat ![]() |
---|---|---|
das problem ist ich habe keine ahnung von netzwerk und könnte ein gaannz kleines beispiel gut gebrauchen ![]() edit:da hab ich timbo doch glat übersehen ![]() |
||
SpaceThreat 3D Multiplayer Spaceshooter |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt massig Beispiele, nur schon allein in der Hilfe. Bitte diese benutzen.
Und Anfangs sollte man kein Netzwerkspiel programmieren. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 1024,768,24,2
SetBuffer BackBuffer() timer=CreateTimer(60) Type gegner Field x,y,ip End Type Global server_ip,server_port Global mein_port server_ip_string$=Input("bitte Geben sie die IP ein: xxx.xxx.xxx.xxx ") server_ip=INT_IP(server_ip_string$) server_port=8000 mein_port =8010 Global udp_stream=CreateUDPStream(mein_port) Global mx,my Repeat mx=MouseX() my=MouseY() Rect mx,my,50,50 empfangen() senden() Locate 0,0 For g.gegner=Each gegner Rect g\x,g\y,50,50 Print g\ip+" "+g\x+" "+g\y Next Flip(0):Cls WaitTimer(timer) Until KeyHit(1) Function empfangen() Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht<>0 Then While Not Eof(udp_stream) ;es sind noch Pakete im "postfach" ip = ReadInt(udp_stream) vorhanden = 0 For g.gegner = Each gegner If g\ip=ip Then vorhanden=1 : Exit;ip schon vorhanden Next If vorhanden = 0 Then g.gegner=New gegner g\ip=ip EndIf Select ReadByte(udp_stream) Case 1 g\x=ReadInt(udp_stream) g\y=ReadInt(udp_stream) End Select Wend EndIf Until nachricht=0 End Function Function senden() WriteByte udp_stream,1;ich beschrifte das Koordinaten "Paket mit einer 2" WriteInt udp_stream,mx WriteInt udp_stream,my SendUDPMsg udp_stream,server_ip,server_port End Function Function INT_IP(IP$) a1 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a2 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a3 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a4 = Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) + a4 End Function das ist der Client Code: [AUSKLAPPEN] Graphics 1024,768,24,2
SetBuffer BackBuffer() timer=CreateTimer(60) Global mein_port=8000 Global udp_stream=CreateUDPStream(mein_port) Type client ;speichert alle Gegneradressen Field ip End Type Type gegner ;speichert Gegner Informationen Field x,y,ip End Type Repeat ;empfangen Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht<>0 Then ;schauen ob es den client schon gibt vorhanden = 0 For c.client = Each client If c\ip=nachricht Then vorhanden=1 : Exit;ip schon vorhanden Next If vorhanden = 0 Then c.client=New client c\ip=nachricht g.gegner=New gegner g\ip=nachricht EndIf For g.gegner=Each gegner If g\ip=nachricht Then Exit Next While Not Eof(udp_stream) Select ReadByte(udp_stream) Case 1 g\x= ReadInt(udp_stream) g\y= ReadInt(udp_stream) End Select Wend EndIf Until nachricht=0 ;senden For c.client = Each client For g.gegner = Each gegner If c\ip <> g\ip Then WriteInt udp_stream,c\ip WriteByte udp_stream,1 WriteInt udp_stream,g\x WriteInt udp_stream,g\y SendUDPMsg udp_stream,c\ip,8010 EndIf Next Next For c.client=Each client Print "Client: "+c\ip+" ist verbunden" Next Flip(0):Cls WaitTimer(timer) Until KeyHit(1) das is der Server Wenn du dich damit ein bisschen auseinandersetzt, wirst Du schnell wissen, nach welchem Schema das aufgebaut ist. Wenn jemand ein Bug findet, dann meldet ihn bitte. Edit: @The_Nici: ich habe auch mit einem Online Game angefangen, ich verstehe nicht, was daran so "schlimm" ist. Man muss es ja nicht übertreiben und gleich ein 100vs100 WoW 2 schreiben ^^ |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Quäiny |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das kann man jetzt übers Internet testen oder hab ich das falsch verstanden? ![]() |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, entweder übers Lan-Netzwerk oder an einem Pc mit der LocalIP, also 127.0.0.1
MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
Quäiny |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie könnt ich es übers Internet machen? | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
DU musst die ports beim Router öffnen, um Server zu sein. | ||
Quäiny |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was ist wenn man keinen router hat, gibs da sonst keine möglichkeit? | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann kann man ganz normal zu der IP connecten. | ||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
die ip findest du z.B. auf wieistmeineip.de raus
da sich die ip änder solltest du dir eine homepage machen. meine ist timbo1993.dyndns.org *hust wenn ich ping timbo1993.dyndns.org mache , kann ich z.b. immer sehen ob ich eine verbindung durchs internet zu meinem pc machen kann .. aber das nur so am rande |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
QuäinyBetreff: Daten werden nicht geschickt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 1024,768,24,2
SetBuffer BackBuffer() timer=CreateTimer(60) Type gegner Field x,y,ip End Type Global server_ip,server_port Global mein_port server_ip=int_ip("127.0.0.1") server_port=8000 mein_port =8010 Global udp_stream=CreateUDPStream(mein_port) Global mx,my Repeat mx=MouseX() my=MouseY() Rect mx,my,50,50 empfangen() senden() Flip(0):Cls WaitTimer(timer) Until KeyHit(1) Function empfangen() Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht<>0 Then While Not Eof(udp_stream) ;es sind noch Pakete im "postfach" ip = ReadInt(udp_stream) vorhanden = 0 For g.gegner = Each gegner If g\ip=ip Then vorhanden=1:Exit ;;<<<1 muss hier hin ip schon vorhanden Next If vorhanden = 0 Then g.gegner=New gegner g\ip=ip EndIf Select ReadByte(udp_stream) Case 1 g\x=ReadInt(udp_stream) g\y=ReadInt(udp_stream) hallo$=ReadLine$(udp_stream) Rect g\x,g\y,50,50 Text 0,0,hallo$ Text 0,20,mein_port End Select Wend EndIf Until nachricht=0 End Function Function senden() WriteByte udp_stream,1;ich beschrifte das Koordinaten "Paket mit einer 2" WriteInt udp_stream,mx WriteInt udp_stream,my WriteInt udp_stream,mein_port SendUDPMsg udp_stream,server_ip,(server_port) End Function Function INT_IP(IP$) a1 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a2 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a3 = Int(Left(IP$, Instr(IP$, ".") - 1)) : IP$ = Right(IP$, Len(IP$) - Instr(IP$, ".")) a4 = Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) + a4 End Function Das ist der Client;jetzt kommt der Server Code: [AUSKLAPPEN] Graphics 1024,768,24,2
[/code]
SetBuffer BackBuffer() timer=CreateTimer(60) Global server_port=8000 Global udp_stream=CreateUDPStream(server_port) Type client ;speichert alle Gegneradressen Field ip,port End Type Type gegner ;speichert Gegner Informationen Field x,y,ip End Type Repeat ;empfangen Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht<>0 Then ;schauen ob es den client schon gibt vorhanden = 0 For c.client = Each client If c\ip=nachricht Then vorhanden=1 : Exit;ip schon vorhanden Next If vorhanden = 0 Then c.client=New client c\ip=nachricht g.gegner=New gegner g\ip=nachricht EndIf For g.gegner=Each gegner If g\ip=nachricht Then Exit Next Text 0,0,"ip empfangen" While Not Eof(udp_stream) Select ReadByte(udp_stream) Case 1 mx= ReadInt(udp_stream) my= ReadInt(udp_stream) mein_port=ReadInt(udp_stream) Rect mx,my,50,50 Text 0,30,mein_port End Select Wend EndIf Until nachricht=0 ;senden For c.client = Each client For g.gegner = Each gegner WriteInt udp_stream,c\ip WriteInt udp_stream,c\port WriteByte udp_stream,1 WriteInt (udp_stream,g\x) WriteInt (udp_stream,g\y) hallo$="hallo" WriteLine (udp_stream,hallo$) SendUDPMsg udp_stream,c\ip,c\port Next Next For c.client=Each client Text 0,10, "Client: "+c\ip+" ist verbunden" Next Flip(0):Cls WaitTimer(timer) Until KeyHit(1) |
||
- Zuletzt bearbeitet von Quäiny am Sa, Nov 29, 2008 17:32, insgesamt einmal bearbeitet
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
beim client machst du writeline und beim server kommt readint .. da passt was nicht ^^ Greez TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Quäiny |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
schau dir deinen Server mal an
Code: [AUSKLAPPEN] WriteInt udp_stream,c\ip
WriteByte udp_stream,1 WriteInt (udp_stream,g\x) WriteInt (udp_stream,g\y) hallo$="hallo" WriteLine (udp_stream,hallo$) ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Quäiny |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oke danke ...aber es klappt immernoch nicht. Ich glaube es liegt daran: der schaut ja ob der client shcon vergeben ist | ||
RubberBetreff: irgendwie komisch das ganze... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich habe mir mal die Freiheit genommen und den Code von TimBo kopiert. allerdings bekomme ich bei der zeile Global udp_stream = CreateUDPStream(mein_port) den Fehler: "function not found" (bezogen auf CreateUDPStream) kann mir jemand sagen, woran das liegt? |
||
Wenn Gott mich schon liebt, dann dich erstrecht... |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Update deine Blitz-Version. 1.64 unterstützt nur DirectPlay. Aktuell ist 1.99. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group