![]() |
Input für Spiele?
Hallo,
Ich programmiere derweil einen Bomberman clon mit Andorra 2D. Mir ist aufgefallen dass es beim Spielen mit mehreren Spielern (es werden durchschnittlich mehr als 4 oder 5 tasten gedrückt) dazu kommt dass einige befehle nicht ankommen. Wie kann man das umgehen? Danke, Sonic |
Re: Input für Spiele?
Ich werfe mal GetAsyncKeyState in den Raum...
|
Re: Input für Spiele?
Zitat:
![]() |
Re: Input für Spiele?
@ NamenLozer: Das glaube ich nicht denn bei anderen spielen geht das, hab ich schon oft gesehen.
@ Teekeks: Vielen Dank, das hilft mir weiter. Ich werde mehr darüber in erfahrung bringen und nach erfolgreicher anwendung meine Ergebnisse hier zur verfügung stellen. |
Re: Input für Spiele?
Also, ich hab jetzt mal etwas mit der Funktion GetAsyncKeyState ausprobiert und zum test schnell ein programm gemacht das nur einen timer enthält der alle 30ms folgende prozedur aufruft (ME ist ein memo):
Delphi-Quellcode:
Die 5 letzten tasten sind W, A, S, D und Q.
procedure TForm1.Timer1Timer(Sender: TObject);
begin ME.Lines[0] := IntToStr(GetAsyncKeyState(VK_LEFT)) ; ME.Lines[1] := IntToStr(GetAsyncKeyState(VK_RIGHT)) ; ME.Lines[2] := IntToStr(GetAsyncKeyState(VK_UP)) ; ME.Lines[3] := IntToStr(GetAsyncKeyState(VK_DOWN)) ; ME.Lines[4] := IntToStr(GetAsyncKeyState(VK_Space)) ; ME.Lines[5] := IntToStr(GetAsyncKeyState($44)) ; ME.Lines[6] := IntToStr(GetAsyncKeyState($41)) ; ME.Lines[7] := IntToStr(GetAsyncKeyState($53)) ; ME.Lines[8] := IntToStr(GetAsyncKeyState($57)) ; ME.Lines[9] := IntToStr(GetAsyncKeyState($51)) ; end; Die Ausgabe sieht (höchstens!) Wie folgt aus (Auch wenn ich alle abgefragten tasten gleichzeitig drücke): 0 -32768 0 -32768 0 -32768 0 -32768 -32768 -32768 Also maximal 6 tasten, wenns gut klappt, manche reihenfolgen bringen aber auch noch weniger tasten die gedrückt werden zum ergebnis. |
Re: Input für Spiele?
Wenn ich jetzt Mist erzähle berichtigt mich^^, aber ich glaube der Tastaturpuffer ist dann überlastet (ich kenne kein spiel bei dem man mehr als mehr als 6 Tasten drücken kann)
schönen Abend und gute Nacht :D |
Re: Input für Spiele?
NamenLozer hat das Problem doch schon beschrieben - ihm darf spätestens jetzt auch ruhig Glauben geschenkt werden :roll:
|
Re: Input für Spiele?
Nein, das glaube ich nicht, was NamenLozer geschrieben hat. Wenn ich z.b. Noch ein paar F* tasten dazu nehmen dann kann da der tastendruck in bestimmten bereichen auch gleichzeitig mit 6 anderen tasten ausgelesen werden, sodass es schon 9 verschiedene gleichzeitig sind. Mag sein dass das irgendwann knapp wird aber ich denke zumindest 3 spieler sollten bei einem kleineren spiel wie meinem bomberman clon hier gleichzeitig an einer tastatur spielen können.
|
Re: Input für Spiele?
Das hängt stark von der Tastatur und den Tastenkombinationen ab. Viele Tastaturen vertragen im Schnitt nur 3 gleichzeitige Tastendrücke, und selbst hochwertige Modelle oft nur bis zu ca. 6. Nur Steuerungstasten wie Shift, Control, Pfeiltasten usw. sind meistens so gelegt, dass sie alle gleichzeitig gedrückt werden können. Außerdem sind die möglichen Tastenkombinationen nicht bei jeder Tastatur gleich - ich kann z.B. Frets on Fire in der Standardkonfiguration nicht spielen, weil die Tasten F1 - F4 bei mir sofort blockieren. Also bau auf jeden Fall eine Möglichkeit ein, dass der Spieler die Tasten umkonfigurieren kann.
|
Re: Input für Spiele?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz