Seite 2 von 5
Verfasst: 03.01.2005 14:17
von orange-blue
:P Ich hab ein Notebook und bei mir sind die Tasten ganz ok und die Flugzeuge sind sau lahm.
Ich find das ist ur unbequem die Shift-Taste über den Cursor-tasten.
Achja: Threads helfen bei Netzwerkspielen nicht.
Wieso nicht?
Verfasst: 03.01.2005 15:36
von MVXA
orange-blue hat geschrieben:Hab mal eine MP fürs windows Solitär gemacht, und da is mir das nicht so langsam vorgekommen.
Du kannst Solitär nicht mit diesem Spiel vergleichen. Solitär ist runden basiert, d.h. dass der Netzwerk verkehr durchaus etwas langsamer laufen kann aber trozdem alles syncron läuft. Epyxs Spiel muss (alle) Clients gleichzeitig innerhalb von sekunden syncronisieren, sonst läuft alles asyncron und das sieht "dumm" aus

.
Verfasst: 03.01.2005 16:29
von orange-blue
Du kannst Solitär nicht mit diesem Spiel vergleichen. Solitär ist runden basiert

Seit wann ist Solitär rundenbasierend??
Verfasst: 03.01.2005 17:27
von MVXA
Ich hab jetzt Solitär mit Hearts verwechselt

. Aber wie soll man Solitär zu zweit spielen o_O ? Das würd ich gern mal sehen (auch wenn es offtopic ist)
Verfasst: 03.01.2005 19:13
von Epyx
Ich habe mir jetzt mal die UDP Lib runter geladen, habe ich denn überhaupt eine chance das es damit schnell genug läuft wenn ich alle Positionen inkl. der Schuss Positionen übertragen lasse???
da wären für den Host zb.
Kennwort "Plane:" - 6 Byte
Winkel Flugzeug1 - max 3 Byte
XPos Flugzeug1 - max 3 Byte
YPos Flugzeug1 - max 3 Byte
XPos Flugzeug2 - max 3 Byte
YPos Flugzeug2 - max 3 Byte
Kennwort "Fire:" - 5 Byte - Wenn der Host schießen möchte
(Bis hier hin ist es so wie es derzeit gemacht wird, also effektiv 33 Bytes inkl. Trennzeichen und Abschluss Kennzeichen)
Wenns schnell genug läuft würde ich gerne die Schüsse nur vom Host aktualisieren lassen und die neuen Positionen zum Client übertragen.
Das wären also pro Schuss max 6 Byte für X und Y pos +2 Byte für die Trennzeichen, das halt mal 6 weil die Flugzeuge max. 6 schuss gleichzeitig haben. Also 48 Byte die sich beim Übertragen dazu packen + 5 Byte für "Bull:" als Kennwort für die Schüsse.
Also insgesamt maximal 86 Bytes die permanent zum Client übertragen werden (sollen).
Beim Client ist sehr viel weniger,
Kennwort "winkel:" - 7 Bytes
Winkel des Flugzeugs - max 3 Byte + Trennzeichen 1 Byte
Und Evtl,
Kennwort "fire:" - 5 Byte + 1 Byte Abschluss Zeichen.
Also maximal 17 Zeichen die da ständig übertragen werden sollen.
Verfasst: 03.01.2005 19:25
von PMV
Hm, so viel wird da ja garnicht übertragen ... kann es nicht sein, das deine Engine vielleicht irgend wo ein Delay() drinn hat, oder das darauf gewartet wird, bis Daten Empfangen wurden oder sonnst irgend wo gewartet wird?
Wie viel FPS hat denn das Spiel? und wie hoch ist diese Rate für die Komunikation mit dem Host. Also wie oft werden Daten zwischen Host und Client pro Sekunde übertragen? (oder vielleicht besser pro Minute)
Und wenne noch UDP rein machst, dann würd ich dir zum testen empfehlen das auch mal hierfür zu testen. Es wird bestimmt auch für andere ziemlich interezant sein, was da raus kommt, auch wenn du deinen Code nicht preis geben willst
Versuch doch mal das zu testen und raus zu finden. Je nach höhe oder wenns ziemlich gering ist, müssteste mal genauer schauen, warum die Rate nicht höher ist ... das wäre so meine nächsten Schritte
MFG PMV
Verfasst: 03.01.2005 19:33
von orange-blue
Stimmt! Könnte es nicht wirklich sein das du auf ne antwort von der anderen seite wartest?
ne andere sache:
Wäre es nicht schlauer das X2 und Y2 vom Client geschickt werden?!?
@LittleFurz: MP ist übertrieben, das Programm schickt eigenltich nur die Punkteanzahl, an den anderen. War auch mehr ein test als ein richtiges spiel.
Verfasst: 03.01.2005 20:46
von DarkDragon
orange-blue hat geschrieben::P Ich hab ein Notebook und bei mir sind die Tasten ganz ok und die Flugzeuge sind sau lahm.
Ich find das ist ur unbequem die Shift-Taste über den Cursor-tasten.
Achja: Threads helfen bei Netzwerkspielen nicht.
Wieso nicht?
Threads sorgen aller höchstens für verwirrung. Wenn du die Spieler in eine LL steckst kommt es manchmal zu unordnung zwischen den Threads und dem Hauptprogramm. Die Threads müssen also neben dem Hauptprogramm ablaufen, sodass es nicht zu zerstückelten Daten kommt. Außerdem: Was will man mit 1 Leitthread und n Playerthreads?
Verfasst: 03.01.2005 21:11
von PMV
Also ... meiner meinung nach würden thread schon helfen ... wenn man z.B. den austausch bzw den Empfang der Daten und der Verarbeitung in einen Thread packt, ruckelt das Spiel selber nicht, da es von dem Datenfluss unabhängig ist. Dabei ließe sich dann einfacher die unterschiedliche geschwindigkeit zwischen Datenstrom und das Spiel selber besser bestimmt und regulieren.
Natürlich muss man dann wissen, wie man mit Threads umgehen muss bzw worauf man achten muss, also für Anfänger bzw alle, die sich noch nicht mit Threads beschäftigt haben ne etwas größere herrausforerung. Aber richtig gelöst könnte es durchaus die oben genannten Vorteile bringen

.
Aber ohne Thread sollte das ganze genau so gut Lösbar sein. Dürfte also hierbei vom Programmierer selber abhängen, was er möchte und eventuell auch über seine Kentnisse.
MFG PMV
Verfasst: 03.01.2005 21:26
von DarkDragon
Ich habs mit 3 verschiedenen kommunikationsvarianten probiert, nur dann waren die Spieler immer unterschiedlich schnell. Und das bringt auch nur wirklich was, wenn man keinen dedicated server programmiert.
Ich steh auf dedicated, da es einfacher ist. In Sachen Threads bin ich glaub auch nimmer richtiger Anfänger

Ich versteh sie und hab schon viel mit ihnen gemacht .