Direct Play Funktioniert nicht :DD
Übersicht BlitzBasic Beginners-Corner
Bobo2040Betreff: Direct Play Funktioniert nicht :DD |
Do, Feb 06, 2014 19:00 Antworten mit Zitat |
|
---|---|---|
Huhu
Nach längerer Pause melde ich mich mal Wieder hier Und habe nen kleines Problem und zwar will ich mal Direct Play ausprobieren habe dazu nen Beispiel Script gefunden für Client und Server und klappt prima aber wenn ich es jetzt bei mir einbaue dann nichtmehr Kommt dieser Fehler "Runtime Error <br/> Multiplayer game already Started!" Aber der kommt erst wenn das Fenster aktiv wird also wenn ich draufklicke dann kommt der Fehler wenn ich nicht draufklicke bleibt das Fenster einfach schwarz... Ich habe die Funktion Client() im "Spiel" relativ weit und in der HS drinne und davon auch keine Variablen Globalisiert oder so ... Die Daten meines Spielers also X und Y werden einmal gesendet dann bricht es ab und es gibt den Error Hier mal der Code so wie er Funktioniert: BlitzBasic: [AUSKLAPPEN]
Und jetzt meine Funktion BlitzBasic: [AUSKLAPPEN]
Der Server bleibt gleich... und den Server starte ich auch bevor ich versuche das Spiel zu starten Mfg EDIT: Im Debug Log steht : Select JoinNetGame(gamename$,gameIP$) Also das ist Rot makiert |
||
BtbN |
Do, Feb 06, 2014 19:46 Antworten mit Zitat |
|
---|---|---|
DirectPlay ist hoffnungslos veraltet und sollte nicht mehr benutzt werden. | ||
Bobo2040 |
Do, Feb 06, 2014 20:00 Antworten mit Zitat |
|
---|---|---|
Joar
Zu dem Fehler war meine eigenen Blödheit xD Habe JoinnetGame() in der Schleife drinne gehabt deshalb wollte er Permanent in das Gleiche Spiel rein...geht jetzt nur iwie sehr Schwach die Daten werden oft nur Halb versendet und auch MultiThreading oder wie das heist klappt nicht ich kann mit 2 Spielern max. drinne sein wobei das nichtmal flüssig läuft da z.B. Spieler1 10 packete sendet und Spieler2 danach erst 10 pakete sendet also abwechselnd und zwar mit so ner großen zeitspanne das es für mich zwecklos ist -_- Dann muss ich wohl doch an UDP ran D Mfg |
||
Dottakopf |
Fr, Feb 07, 2014 17:44 Antworten mit Zitat |
|
---|---|---|
nutze nicht direkt play.. | ||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
DAK |
Sa, Feb 08, 2014 0:09 Antworten mit Zitat |
|
---|---|---|
DirectPlay ist selbst zu der Zeit als es noch aktuell war nur recht wenig verwendet worden. Es hat einen doch nicht unbeachtlichen Overhead und dabei keinen besonderen Funktionsumfang. Man kann sich das alles recht einfach mit TCP oder UDP nachbasteln.
Du solltest dir auch bevor du dich auf ein Protokoll festlegst noch Gedanken darüber machen, wie dein Protokoll funktionieren wird. Schau dir dazu noch dringend diesen Link an (ich kenn den nur auf Englisch, weiß nicht, ob es den auf Deutsch gibt): klick. Mir schaut es so aus als würdest du im Moment allen Spielern jedes Frame alle Daten schicken wollen. Das funktioniert bestenfalls im LAN, über Internet kannst du das so ziemlich vergessen, vor allem wenn da mehr als zwei Spieler drinnen sein sollen. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Dottakopf |
Sa, Feb 08, 2014 9:43 Antworten mit Zitat |
|
---|---|---|
nun ich denke für die ersten schritte ist es erstmal ok wenn du jeden fame sendest.. natürlich aufpassen dass du nicht 100 mal die msg abschickst und dein spieler sich 0 bewegt hat...
arbeite beim programieren viel mit debuglog um später schnell einen netzwerkfehler zu finden. zu der Geschwindigkeit. Ich hatte 13 Spieler über internet verbunden habe jeden postionsfame senden lassen und es lief locker flüssig. Nur schüsse oder irgendwas was schnell richtig viel wird, darf nur auf der client seite berechnet werden. Wenn du die basisc beherrscht kannst du dich an die tiefe der thematik machen. Um das umzusetzen muss man schon im kopf/Papier ein durchgängiges konzept haben. On the Fly proggt man das nicht. Viel Erfolg! |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Bobo2040 |
Sa, Feb 08, 2014 20:13 Antworten mit Zitat |
|
---|---|---|
Okay
So habe mich nun mal dran gesetzt und bisschen was auf nen Blatt gezeichnet und geschrieben was und soweiter an server und clienten verteilt werden soll... so nun hat es auch geklappt also die kommunikation zwischen server und client funktioniert einwandfrei aber ich will jetzt für einen user erstmal überprüfen ob es für diesen user schon ein type gibt also ob sein username schon existiert im type aber wie mache ich das ? Dachte an eine for ...each ...next schleife aber denken und können/wissen ist nen unterschied Hier mal mein Code bis jetzt : Client BlitzBasic: [AUSKLAPPEN]
Die int_ip funktion ist NICHT von mir sondern aus dem internet! der server: BlitzBasic: [AUSKLAPPEN]
So bei client beim zweiten case wollte ich bevor er das in ein type speichert erstmal überprüfen ob der eintrag schon existiert Kann mir da jemand weiterhelfen ? Über tipps zu meinem code würde ich mich freuen D: PS: ich weiß das delay veraltet ist und nicht benutzt werden sollte benutze es aber jetzt in der testphase um den code klein zu halten zwecks übersichtlichkeit etc. |
||
XeresModerator |
Sa, Feb 08, 2014 20:45 Antworten mit Zitat |
|
---|---|---|
Ich verstehe nichts vom Netzwerk Zeug - aber anstatt das Rad da neu zu erfinden, solltest du vielleicht eine der Libs dafür benutzen.
Types allerdings habe ich begriffen und würde sagen, wer "info.Typename" schreibt, hat das nicht. Ganz kurz also: "zahl%" Ist eine Variable vom Typ Integer, "text$" ist eine Variable vom Typ String und "client.TClient" ist eine Variable vom Typ TClient. Üblicherweise werden die Types mit vorangestelltem T deklariert, damit man beim Zugriff zwischen Instanz und Klasse unterscheiden kann. Dein Instinkt ist im Übrigen richtig: Du kannst alle Objekte der Reihe nach mit for..each durchgehen und den Namen vergleichen. Eine schnellere Möglichkeit existiert in BB meines Wissens auch nicht. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
Sa, Feb 08, 2014 20:47 Antworten mit Zitat |
|
---|---|---|
Okay ich änder das mal schnell
So ich hab jetzt überall mal % bzw $ davor gemacht Dachte ich brauchs nicht weils ja kein errror gab bzw es funktioniert hat ;D so kannst du mir aber bei dem mit der for each next schleife helfen ;D Kann das mit den types nicht so wirklich weiß wie die funktionieren aber nicht wie ich die daten so durchlaufen lasse bei nem array wäres ja einfach ne for step x next schleife das kann ich ja aber mir wurden types geraten also wollte ich es mit types probieren nen lösungsanstaz wäre nett |
||
DAK |
So, Feb 09, 2014 8:11 Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN] For x.TTypename = Each x.TTypename Hätt man sich aber auch ohne Weiteres per Google oder aus der Hilfe holen können... (Siehe Each-Befehl in der Hilfe) Beim nächsten Mal schau in die Hilfe unter das Thema, worüber du wissen willst (z.B. Datenverwaltung/Types) und lies dir dort alle Befehle durch. Die haben alle Sample Codes, mit denen du auch sehen kannst, wie du sie verwendest. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
XeresModerator |
So, Feb 09, 2014 13:55 Antworten mit Zitat |
|
---|---|---|
Dann wäre Schritt eins erst mal Types zu verstehen, wenn du die benutzen willst. Es gibt ein paar Tutorials im Forum - nicht alle perfekt aber ausreichend um sich die Grundlagen an zu eigenen.
Wenn du dann noch Schwierigkeiten hast, gebe ich gerne ein paar Hinweise. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
So, Feb 09, 2014 14:11 Antworten mit Zitat |
|
---|---|---|
Okay danke
Xerxes kennst du dich mit UDP aus ? Weil habe iwie nen Bug drinne denn er soll einen neuen User in ein Type speichern was auch funktioniert also der Server speichert es ab und leitet es auch weiter aber aus irgendeinem grund werden die Daten von anderen Usern nicht an die Cliente verteilt also nur der eigene User wird im Type vom Clienten gespeichert aber ein anderer nicht -_- Der Fehler liegt glaube ich beim Clienten... Client: BlitzBasic: [AUSKLAPPEN]
Der Server: BlitzBasic: [AUSKLAPPEN]
|
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group