TCP: Problem für erstellen von Cubes für jeden Client
Übersicht

Gehe zu Seite Zurück 1, 2, 3 Weiter
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja das ist mir klar, dass ich den würfel und client damit finden kann. Nur wie ist mein Problem!
Ich versteh das nicht wirklich. Ich habe den Clientnamen! Ich muss es doch irgendwie so in der Art machen können: BlitzBasic: [AUSKLAPPEN]
Edit: Wie ist das außerdem mit Clients die joinen. Wenn jetzt z.B. schon 11 Spieler im Spiel sind, wie mach ich´s dann, das der Client der dann noch dazu kommt schon weiß, aha da sind schon 11 Spieler |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab grad noch mal ein Edit gemacht als du geantwortet hast:
BlitzBasic: [AUSKLAPPEN] Function FindTest.TTest(w$) Du kannst dir eine beliebige such-Funktion für einen Type schreiben, die dir das passende Objekt gibt. Edit: Zitat: wie mach ich´s dann, das der Client der dann noch dazu kommt schon weiß, aha da sind schon 11 Spieler Der Server muss dem Clienten alles mitteilen, was die wissen müssen... Alle Spieldaten müssen an den neuen Clienten gehen, alle Clienten müssen von dem neuen Clienten informiert werden.
|
||
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) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Hab grad noch mal ein Edit gemacht als du geantwortet hast:
Ja sorry, habe ich erst zu spät gesehen ^^. @Topic Ich habe das Beispiel mit den ganz vielen Test´s nich kapiert xD Also zumindest was das soll ![]() Mal generell ne Frage, was ist das wenn man z.B. Local T.TEST -- was hat der punkt da zu suchen was macht das ich glaube ich habe noch ein paar Syntax Lücken oder etwas in der Art. Mit den ganzen Test Beispielen komm ich ganz durcheinander ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Punkt zeigt an, das es eine Type-Variable wird und der Typename folgt dann. Man muss halt den Variablennamen irgendwie von Typenamen Trennen "TestTTest" sieht nicht nur doof aus - woher soll BB wissen, was ich damit meine?
Wie üblich gibt man einen Datentyp auch bei der Funktion an, damit bekommst du ein TTest Objekt. Hast du den Code mal ausgeführt? Schau ihn dir an, spiel etwas damit rum, und frag nach, was genau nicht klar ist. Wenn du Types nicht richtig beherrschst wird es echt hart, die in einem Mulitplayer-Projekt richtig zu benutzen. Du solltest ja nicht auf gut glück was zusammenschreiben - funktioniert selten (eigene Erfahrung). |
||
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) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm, okay ich gucke mir dieses Test Beispiel nochmal an und mach was damit.
Aber könnte mir vielleicht gerade einer sagen, wie ich das mit den Koordinaten zuteilung mache, ich blick nämlich schon langsam nichts mehr. Und wenn ich den Thread jetzt pausiere, antwortet nachher sicher niemand mehr. Kenne das ja ![]() Ich finde dass ich dadurch am besten lerne ![]() Edit: ich würde sagen, dass das Projekt von mir nachdem ich (ihr eigentlich) endlich geschafft habe, die Koordinaten an den richtigen Client zu übertragen und bei Login eines neuen Clients die andren clients dazu gesendet werden, dass ich das Projekt beende. Es ist dann für mich genug stoff da, den ich neu lernen kann. So mach ich´s immer. ich lerne nach dem Projekt alles was ich nich verstehe, sodass ich es verstehe ![]() Ich würde sagen dass das hier immer nur kleine tests sind, die ich später alle in großen Projekten anwenden werde xP |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Killerjo96 hat Folgendes geschrieben: Ich finde dass ich dadurch am besten lerne Ich widerspreche mal. Jeder lernt am besten, wenn er selbst herumprobiert und dann auf eine Lösung kommt. Fertiger Code ist nur dann eine gute Hilfe, wenn der Hilfe suchende ihn versteht und sein Problem abstrahieren kann. Niemand lernt allein von Beispiel nach Beispiel - du erfragst im Endeffekt den Code den du brauchst, ohne ein tieferes Verständnis dafür entwickelt zu haben. Das siehst du ja auch:
Killerjo96 hat Folgendes geschrieben: [...] das Projekt von mir nachdem ich (ihr eigentlich) Lern die Basics, fang ein kleines Projekt an und versuche nicht nach zu fragen, wie du es lösen solltest. Wenn du fertig bist, poste den Code und frag, was du besser machen könntest. Löse dich von der Idee, einfach und schnell nach zu fragen, wenn etwas nicht geht - du lernst einfach weniger.
Killerjo96 hat Folgendes geschrieben: Aber könnte mir vielleicht gerade einer sagen, wie ich das mit den Koordinaten Zuteilung mache Nö - ich bin der Meinung, dir wurde vielfach gesagt was zu tun ist. Du kommst schon klar.
Das war der Psalm für heute. Viel Spaß & viel Erfolg. |
||
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) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Nö - ich bin der Meinung, dir wurde vielfach gesagt was zu tun ist. Du kommst schon klar.
Das war der Psalm für heute. Sowas in der Art hatte ich schon befürchtet -.- Naja, okay, es ist wirklich viel gewesen wobei ihr mir geholen habt. Ich werde mir jetzt zuerst das Test Beispiel angucken ^^. Vielen Dank an dieser Stelle an alle. ![]() ![]() ![]() Edit: Habe mir nochmal dieses Test Beispiel angeglotzt ![]() Hier mal meine bb dateien: Server: BlitzBasic: [AUSKLAPPEN]
Client: BlitzBasic: [AUSKLAPPEN]
ZUerst starte ich den server -> alles normal. Dann ein Client. Alles normal. Bis ich einen 2.ten Client starte, dann kommen ganz viele komische zeichen in der console. kann mir jemand sagen warum? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was soll "Andere" hier sein? Wenn du da kein gültiges Objekt rein füllst ist NULL <> C\Stream immer Wahr.
BlitzBasic: [AUSKLAPPEN] Case Client_Coords Du benutzt keine Datentypen in deinen Types... Da kann nichts richtiges bei 'rum kommen. Schreib am besten immer explizit % für Integer anstatt es überall weg zu lassen. Alle Variablen Deklarieren und IDEal auf Strict umschalten, damit nicht deklariertes rot markiert wird. |
||
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) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dieses Andere hat Midimaster mir gegeben. Mit was soll ich das denn in diesem Falle füllen, was Midimaster da wollte, habe ich auch nicht gecheckt. Eigentlich brauche ich ja nur 2 Objekte im Client.
Also ich blick echt langsam nichts mehr !!! ![]() Meine Güte xD |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
oje... du bist ganz schön durcheinander grad, oder?
ich versuch mal was zu sortieren in deinem kopf: Du musst zwei Dinge auseinanderhalten: Nachrichten über andere Spieler kommen immer in dem Stream rein. Um Sie irgendwelchen PLAYER-Objekten zuzuordnen, muss der Server neben den Koordinaten auch den Namen des Players mitsenden. Erhält der Client eine Nachricht, dann geht er alle seine PLAYER-Objekte durch und vergleicht den Namen. Hat er das zutreffende PLAYER-Objekt gefunden, werden bei dem nun die Koordinaten gesetzt. BlitzBasic: [AUSKLAPPEN] Case Client_Coords Das mit dem Andere hast Du fast richtig gemacht! Xeres fragt auch nicht grundsätzlich , warum Du das verwendest, sonder er hat entdeckt, dass Du es einmal falsch verwendest. Du kannst die Zeile BlitzBasic: [AUSKLAPPEN] If Andere\Stream <> C\Stream ..natürlich nur im Zusammenhang mit der FOR/NEXT-Schleife verwenden! Schau dir mal an, was Du beim Server bei Case Client_Coords vergessen hast.... Ich dachte wirklich Du hattest das schon gecheckt? Das Andere verwenden wir doch immer um eine Nachricht an alle anderen zuzusenden außer an sich selbst: BlitzBasic: [AUSKLAPPEN] For Andere.Client = Each Client |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okey, danke das bringt wieder etwas licht an die sache, ich probier das ganze mal. Wenns funzt übernehm ich´s direkt ma in mein langzeitgedächtniss xD
Danke Edit: Ja das hab ich jetzt gemacht, aber als ich 2 Clients gestartet hab, ist erstmal bei beiden von keinem 2 Cubes, und dann beim 2.Client nach ein paar sekunden, kann ich für 2-3 sekunden beide cubes aufeinmal bewegen... und dann wieder diese hässliche fehler meldung. Mein Code bis jetzt: Server: BlitzBasic: [AUSKLAPPEN]
Client: BlitzBasic: [AUSKLAPPEN]
|
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ist ein Denkfehler in deiner Anmelde-Prozedur:
Zunächst ist alle Supi!!! Du meldest den ersten Client an. Bravo. Nun kennt der Server den 1.Client. Und der 1.Client kennt sich selber, logo! Wenn du jetzt mit dem EGO-PLAYER herumfährst, sendet der Client die Daten zum Server, der sie gern an andere weiterleiten würden, aber da sind ja noch keine anderen! Alles Bravo! Jetzt meldest Du den 2.Client an. Nun kennt der Server 2 Clienten. Und der 2.Client kennt sich selber (EGO-PLAYER), logo! Jetzt meldet der Server dem 1. Client einen neuen Mitspieler. Der 1.Client legt daraufhin ein erstes EXTERN-PLAYER-Objekt an, um zukünftig einen 2.Cube zu bewegen, wenn vom Server Meldungen kommen. Wenn du jetzt auf dem 2. Client mit dem dortigen EGO_PLAYER herumfährst, sendet dessen Client die Daten zum Server, der sie gern an den anderen (dem 1.Client) weiterleitet. Dort wird der EXTERN-PLAYER\Cube bewegt. Alles Bravo! Jetzt kommts: Wenn du jetzt auf dem 1.Client mit dem dortigen EGO-Player herumfährst, sendet dessen Client die Daten zum Server, der sie gern an den anderen (dem 2.) weiterleitet. Dort soll der Client das EXTERN-PLAYER\Cube bewegen. Aber dort wurde nie ein EXTERN-PLAYER-Objekt angelegt!!! Absturz!!! Fazit Dein Denk-Fehler war: meldet sich ein neuer Client an, muss er vom Server über alle bereits vorhandenen anderen Clients informiert werden. Erst so legt der neue Client für all die "alten Hasen" jeweil ein EXTERN-PLAYER-Objekt an. Kommen dann Bewegungsmeldungen von anderen, weiß der neue Client bereits etwas damit anzufangen. Wow! Die Erklärungen werden immer komplizierter, die Sätze immer länger. Ich hoffe, du konntest folgen? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja bin soweit mitgekommen. Damit der Server eine Liste aller Clients hat, lege ich dafür am besten ein Array an oder? Oder ist ein Type auch gleichzeitig so was wie eine Liste? Die Liste kann ich ja dann im Client_Joined sofort senden.
Hmm, schwierig schwierig. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unter BB ist das nicht nötig. Eigene TYPEN werden immer in einer autom. angelegten Liste verwaltet und du verwendest das auch schon: Deshalb kannst du ja auch immer mit einer FOR EACH/NEXT-Schleife alle Objekte auflisten:
BlitzBasic: [AUSKLAPPEN] Type TestTyp Das grasse ist, das die "Namen" keine Rolle spielen! Das siehst Du in dem Beispiel. Dort werden 7 Objekte angelegt und beim Erstellen heißen sie im Prinzip einige loc und andere looser oder lump und trotzdem werden sie niicht verwechselt. Und beim Printen findet man sie plötzlich alle wieder unter back und es handelt sich wieder um die 7 erstellten Objekte |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
also muss ich jetzt einfach in Client_Joined:
BlitzBasic: [AUSKLAPPEN]
oder? Edit: ne das ist falsch ist mir gerade aufgefallen. Könntest du vielleicht beispiele zum thema machen das wäre glaub ich verständnisvoller ^^ |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja,... eigentlich sollst du sich ja auch mal gedanklich anstrengen es zu verstehen und umzusetzen... (sog. "Transferleistung") ![]() Aber im Prinzip hast Recht... gleich beim Joinen sendest du dem neuen Client ein ganzes Paket aus Daten. Erst eine Runde mit Join-Meldungen der anderen, dann eine Runde mit Koordinaten der anderen. Schreib mal einen Versuch, wie das aussehen könnte, dann sag ich was dazu! Im Prinzip hast du sowas ja schon genau in der Join-Abteilung auf dem Server stehen. Hier jedoch sendest Du allen die Nachricht über den einen neuen: BlitzBasic: [AUSKLAPPEN] For Andere.Client = Each Client und jetzt folgt anschließend eine Nachricht an den Stream des einen mit den Namen der anderen. Wie heißt der Stream des einen? C\Stream! Wie heißen die Namen der anderen? Andere\Namen! Krieg das erst mal hin und meld dich wieder. Das mit den Koordinaten wird dann genauso sein! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okey, das ist ja jetzt wie ein Test ^^ Ich probiers mal ^^
Also... Wenn ich eine Nachricht an andere schreiben will, muss ich: BlitzBasic: [AUSKLAPPEN]
Und wenn ich mich selbst raus nehmen will, sieht das ganze so aus: BlitzBasic: [AUSKLAPPEN]
So dann müsste es doch eigentlich so aussehen, wenn ich nur eine Nachricht an mich schicken will und an keinen andren: BlitzBasic: [AUSKLAPPEN]
Ich weiß nich ob´s stimmt aber ich probiers mal. Danke für den Hinweis ![]() Edit: Aber wie kann ich denn jetzt die Liste verschicken. Was brauch ich dafür? Das hab ich nicht ganz verstanden. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
du verschickst nicht "die Liste" (was meinst du damit?), sondern die Namen-Eigenschaft der Objekte:
BlitzBasic: [AUSKLAPPEN] For Andere.Client = Each Client Du sendest quasi dem neuen Clienten die "verspätete Anmeldung" der vorherigen Clienten. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achsoo...
Ich habe ja das Type mit den Eigenschaften Name,Stream,X,Y,Z,Yaw... Aber die kriegen keinen Wert zugewiesen außer Stream, dann muss ich Bei Client_Coords denen die Koordinaten zusenden oder? Ok das probier ich mal. Oh man das braucht wirklich noch Übung ![]() Edit: So ich blick langsam echt nichts mehr. Das mit den hässlichen Byte Zeichen im Server ist immer noch nicht weg. Ich poste hier nochmal meinen jetzigen Code: Server: BlitzBasic: [AUSKLAPPEN]
Client: BlitzBasic: [AUSKLAPPEN]
Also langsam... boah echt.. ^^ xD das kostet wirklich kraft ^^ |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
aha, ich seh schon...
du merkst dir im Server gar nicht die Namen der Clients, die sich anmelden. Hole das nach! im Server: BlitzBasic: [AUSKLAPPEN] Select ReadByte(C\Stream) und das selbe auch dort, wo die Koordinaten reinkommen. Und ich habe gleich noch einen Fehler entdeckt: Du hast dir ja ausgedacht, dass jede Kommunikation mit einem anderen Teilnehmer immer mit einem Byte beginnt, dass die Aktion beschreibt. Das hast Du bei dem neuen Code nicht durchgehalten. Hier beginnt die Kommunikation plötzlich mit einem WriteString() |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group