Netzwerkspiel ... was muss ich tun?
Übersicht

![]() |
AkibaBetreff: Netzwerkspiel ... was muss ich tun? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute!
Ich hatte letzte Nacht das Ziel gesetzt, ein kleines Netzwerkspiel zu schreiben. Aber da ich sowas noch nie getan hatte, wollte ich erstmal ein Testprogramm schreiben, mit dem ich die dafür benötigten Befehle kennen lernen wollte. Ich wollte DirectPlay verwenden. Nach ich fertig mit dem Programm war, schickte ich es einem Freund und wollte es ausprobieren. Host zu sein war kein Problem, doch der Session beizutreten ging nicht. Eine Verbindung konnte nicht aufgebaut werden. Nachdem ich hier im gelesen hatte, dass sich DirectPlay nicht für Internetspiele eignet, nahm ich mir UDP vor. Da scheiterte es schon in der Programmierung. Denn ich ich hatte keine Ahnung, wie ich aus einer IP-Adresse den Integerwert gewinnen kann. Und es kam noch schlimmer. Etwas, dass ich gehofft hatte, außer Acht lassen zu können... Und zwar die Geschichte mit den Ports! Um genauer zu sein: Das Portforwarding. Ich hatte das Problem schonmal bei einer anderen Sache (eigener CSS-Server) und es wollte einfach alles nicht so funktionieren, wie ich es gerne gehabt hätte. Aber okay! Bevor ich mich nun wieder in dieses undurchsichtige Gestrüpp werfe, wollte ich erstmal fragen: 1. Ist DirectPlay dennoch über Internet möglich? Ich benötige keine hohe Geschwindigkeit für mein Spiel. Es soll so 'ne Art Pokémon - Blaue Edition werden. Nur eben als Multiplayer. 2. Welche Ports müssen bei DirectPlay, wenn es denn über Internet möglich ist, beim Host und welche bei den Mitspielern geforwardet werden? 3. Welche Ports sind es bei UDP? 4. Ich benutze B3D. Gibt es Programme, die mir den Umgang mit UDP erleichtern könnten? 5. Wenn 4. = false ist: Wie kann man aus einer IP einen Integer machen? Ich hab mir schonmal das Beispielprogramm aus der Hilfe hier bei blitzforum.de angeschaut und habe die Funktionen NewInput$ und INT_IP einfach übernommen, aber das hat nicht funktioniert. Bitte helft mir, ich möchte unbedingt mein Netzwerkspiel schreiben! |
||
Luigi, man wendet sich nich gegen Familie... |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass mal lieber DirectPlay sein, das ist einfach zu alt. UDP ist eigentlich gut für deine Zwecke. Den Port, auf dem der Stream läuft, kannst Du auch mit CreateUDPStream![]() Die gesuchte Funktion zur Errechnung des Integers einer IP ist diese: BlitzBasic: [AUSKLAPPEN] Function INT_IP(IP$) Du musst aber beachten, dass z.B. RecvUDPMsg ![]() |
||
Starfare: Worklog, Website (download) |
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nimm doch SimpleUDP oder LlamaNet her ![]() Da gibts Leute die machen sich schon vor dir Kopfzerbrechen, dann musst du dich selbst nicht mehr durch die ganzen Probleme wühlen, die andere schon vor dir hatten ![]() lg Chrise |
||
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jop ![]() LlamaNet oder SimpleUDP sind im prinzip wie DirectPlay, nur halt auch Internetfähig mit vielen weiteren Features, also komplette Clientverwaltung etc. Probier sie mal aus ! 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! |
![]() |
Akiba |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für eure Antworten =)
Suche jetzt nach einem Tutorial für LlamaNet bzw. SimpleUDP. Gibt es da welche? Wo kann ich sie finden? |
||
Luigi, man wendet sich nich gegen Familie... |
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei LlamaNet gibts diese Dokumentation: https://www.blitzforum.de/upload/file.php?id=8371
Sie ist allerdings nicht meh auf dem Neuesten Stand. Wenn du dich für LlamaNet entscheiden solltest, werde ich dir auch gerne persönich Ratschläge und Hilfe geben. Für SimpleUDP einfach in der Hilfe ![]() https://www.blitzforum.de/help/?cat=13 |
||
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet. |
![]() |
Akiba |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für das Angebot, ich werde ggf. gerne darauf zurück greifen =)
Ich habs derweil erstmal ohne oben genannte Hilfen versucht. Hätte ja eigentlich auch klappen müssen. Tat es bloß leider nicht! Ich zeige euch hier mal mein kleines Testprogramm. Es dient nur dazu, festzustellen, ob sich zwei PCs erreichen. Das Gegenüber muss dabei die IP des jeweils anderen beim Start eingeben. (Es ist also nur mit genau zwei PCs möglich ... aber das nur nebenbei!) Code: [AUSKLAPPEN] Graphics 800, 600, 32, 2
warten = CreateTimer(1) SeedRnd MilliSecs() empfangs_stream = CreateUDPStream(8100) sende_stream = CreateUDPStream(8101) WriteLine sende_stream, "hey" ip_adr$ = Input("IP eingeben: ") ip_nr = INT_IP(ip_adr$) Cls Locate 0, 0 Print ip_nr Repeat SendUDPMsg sende_stream, ip_nr ip_adresse = RecvUDPMsg(empfangs_stream) If ip_adresse <> 0 Then Color 0, 255, 0 Print "Empfange Signal von" + ip_adr$ Else Color 255, 0, 0 If Rand(10) = 10 Then Print "Scheiße!" Else Print "Empfange keine Daten" EndIf EndIf If KeyHit(1) Then End WaitTimer(warten) Forever 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 Wäre super, wenn mir jemand sagen könnte, warum es nicht funktioniert! |
||
Luigi, man wendet sich nich gegen Familie... |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die beiden Programme senden auf dem gleichen Port und empfangen an einem ganz anderen Port, sie reden quasi aneinander vorbei - Versuchs mal mit einem Stream, und einem Port, den man am Anfang und beim Verbinden eingeben muss. Der die Clients müssen dann natürlich den Port vom Gegenüber kennen. | ||
Starfare: Worklog, Website (download) |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Außerdem musst du bei SendUDPMsg![]() ![]() 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! |
![]() |
Akiba |
![]() Antworten mit Zitat ![]() |
---|---|---|
Leute, vielen Dank! Blitz, inklusive UDP, macht jetzt das, was ich möchte =)
Ich hab aber noch eine Frage zu SimpleUDP 2.0 ... Nämlich: Bei mir fehlt die Funktion UDP_GetMsg. Sie ist nicht enthalten und in dem mitgelieferten Programm TechDemo auch nirgends verwendet. Wurde sie ersetzt...? |
||
Luigi, man wendet sich nich gegen Familie... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group