Probleme mit Multiplayer?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

bruce85

Betreff: Probleme mit Multiplayer?

BeitragDo, März 01, 2012 5:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe folgendes Problem mit meinem Spiel:
Es funktioniert ja auch alles soweit, nur wenn 2 Clienten verbinden, dann klappt das alles noch, nur wenn das Spiel dann gestartet wird, dann hängen sich die Fensters auf, von den Clienten.
Bei 2 Spieler funktioniert alles, bei 3 Spieler funktioniert garnix mehr und bei 4 Spieler funktioniert auch alles.
Also, 2 Spieler: 1 Server + 1 Client Funktioniert.
3 Spieler: 1 Server + 2 Clienten Funktioniert garnix mehr.
4 Spieler: 1 Server + 3 Clienten Funktioniert.

Der fehler liegt an dieser Stelle:
BlitzMax: [AUSKLAPPEN]
If isServer = 1 Then
For Client = EachIn Clients
Client.WriteByte(1)
Client.WriteByte(CardAnz)
Client.WriteByte(ZugAktiv)
Client.WriteByte(SpielerNr)
For Local C:TCardStapel = EachIn CardStapelList
Client.WriteByte(C.Frames)
Client.WriteByte(C.Wert)
Client.WriteFloat(C.X)
Client.WriteFloat(C.Y)
Client.WriteFloat(C.DistX)
Client.WriteFloat(C.DistY)
Client.WriteFloat(C.ZielX)
Client.WriteFloat(C.ZielY)
Client.WriteByte(C.Move)
Client.WriteByte(C.Nr)
Client.WriteByte(C.SpielerNr)
Client.WriteByte(C.CardID)
Client.WriteByte(Len(C.Karte))
Client.WriteString(C.Karte)
Client.WriteByte(Len(C.Typ))
Client.WriteString(C.Typ)
Next
While Client.SendMsg() ; Wend
Next
EndIf

Wenn ich das rausnehme aus meinem Quellcode, dann hängen sich die Fensters bei 3 Spieler garnicht auf, aber sobald das Teil wieder im Quellcode ist, dann funktioniert es bei 3 Spieler nicht mehr.

Hier lese ich dann die Daten, die der Server gesendet hat:
BlitzMax: [AUSKLAPPEN]
'Client
While Client.RecvMsg() ; Wend
While Not Client.Eof()
Local t:Byte = ReadByte(Client)
Select t
Case 1
CardAnz = Client.ReadByte()
ZugAktiv = Client.ReadByte()
SpielerNr = Client.ReadByte()
For Local C:TCardStapel = EachIn CardStapelList
C.Frames = Client.ReadByte()
C.Wert = Client.ReadByte()
C.X = Client.ReadFloat()
C.Y = Client.ReadFloat()
C.DistX = Client.ReadFloat()
C.DistY = Client.ReadFloat()
C.ZielX = Client.ReadFloat()
C.ZielY = Client.ReadFloat()
C.Move = Client.ReadByte()
C.Nr = Client.ReadByte()
C.SpielerNr = Client.ReadByte()
C.CardID = Client.ReadByte()
Local l:Byte = Client.ReadByte()
C.Karte = Client.ReadString(l)
l = Client.ReadByte()
C.Typ = Client.ReadString(l)
Next
End Select
Wend


Nur bei 3 Spieler funktioniert es nicht mehr und ich kann den fehler leider nicht finden. Rolling Eyes
Ich weiss auch nicht, ob im Quellcode an einer anderen stelle etwas faul ist, da es ja bei 2 und 4 Spieler einwandfrei funktioniert.

Kann mir Vielleicht jemand Weiterhelfen, an was es liegen könnte?

Ich bedanke mich schonmal im Voraus.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Hummelpups

BeitragDo, März 01, 2012 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
die CardStapelList beim Empfänger ist schon zuvor mit
der gleichen Menge an Karten bestückt worden? oder werden diese
dort erst erstellt? Dann müsstest du vom Server zuvor die Anzahl
der Karten mitsenden

CardStapelList.count()

Grüße
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

bruce85

BeitragDo, März 01, 2012 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die antwort.

Alle Cliente haben die gleiche anzahl von CardStapelList, es funktioniert ja mit 2 und 4 Spieler, nur mit 3 Spieler hängt sich das Fenster auf.

Ich erkenn leider kein fehler, woran es liegen könnte.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

bruce85

BeitragSa, März 03, 2012 7:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das jetzt hinbekommen.
Der fehler lag ganz woanders, ich musste sehr viel an meinem Code ändern und nun funktioniert es nach viel rum probieren. Wink

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group