Ich bin gerade dabei mir das XNA anzusehen und mal abgesehen davon, dass ich mir unsicher bin, ob es eine gute Idee ist die bereits vorhandene Game-Klasse zu nutzen, bin ich im Moment ueber das vorhandene Input-System gestolpert, welches dem Anschein nach allein nach dem Poll-Prinzip funktioniert. Dieses mag in vielen Situationen seine Vorteile haben, aber imho auch in vielen Situationen seine Nachteile. Nun waere es kein so grosses Problem das Modell umzubauen und ein event-basiertes Input-System zu erstellen, jedoch kommen mir da irgendwie Zweifel am Sinn. Vielleicht ist meine Herangehensweise falsch oder vielleicht sollte ich etwas ganz anderes nutzen.
Als Beispiel nehme ich mal das Keyboard. Im Moment muss ich abfragen, welche Taste gedrueckt ist. Das ist soweit ja ganz toll, aber jeden fuer Dinge wie fortschrittliche GUIs kann das dann doch sehr schnell unuebersichtlich werden. Aber selbst wenn ich ein Push-Modell erstellen wuerde, muesste ich jeden Game-Tick saemtliche Tasten abfragen und mit den vorherigen vergleichen.
Ist es moeglich noch an das alte DInput unter .net/C# zu kommen? Sollte man vielleicht den Input vom Win-Control (Form) nutzen? Wie habt ihr das geloest?
PS: Und was haltet ihr von der Game-Klasse welche XNA bietet?
[XNA, .net] Input - Push
- Richard Schubert
- Moderator
- Beiträge: 106
- Registriert: 27.02.2009, 08:44
- Wohnort: Hohen Neuendorf (b. Berlin)
- Kontaktdaten:
Re: [XNA, .net] Input - Push
Game Class: Die ist doch voll in Ordnung, sollte man eigentlich nichts dran verändern und ist auch die Grundlage für jede Applikation ohne die deine Anwendung nicht auf der xbox läuft. Was gibt es denn für Bedenken?
Input: Keyboard ist nicht für Eingaben gedacht sondern nur für einen Ersatz am PC, für den Fall, dass man kein Gamepad hat. Für Texteingaben gibt es sonen Guide.TexteingabeDings. In einem Editorprojekt basierend auf XNA hatte ich auch mal DirectInput eingebaut, das hat gut funktioniert, solange man eben auf PC-Ebene bleibt.
Das Pollprinzip ist eigentlich perfekt für gängige Gameinputs. Wann genau außer bei Texteingaben ist das denn ein Nachteil?
Input: Keyboard ist nicht für Eingaben gedacht sondern nur für einen Ersatz am PC, für den Fall, dass man kein Gamepad hat. Für Texteingaben gibt es sonen Guide.TexteingabeDings. In einem Editorprojekt basierend auf XNA hatte ich auch mal DirectInput eingebaut, das hat gut funktioniert, solange man eben auf PC-Ebene bleibt.
Das Pollprinzip ist eigentlich perfekt für gängige Gameinputs. Wann genau außer bei Texteingaben ist das denn ein Nachteil?
Produktivität über Performance - XNA Creators Club
Re: [XNA, .net] Input - Push
Die Game-Class bietet schon recht viel, aber z.B. keinen direkten Zugriff auf das darunter liegende Fenster. Mir ist klar, dass XNA speziell (urspruenglich) auf die XBox zugeschnitten ist, aber bei Editoren z.B. bekomme ich ohne dann wahrscheinlich Probleme. Andere Dinge wie z.B. das Komponenten-System hingegen sind aehnlich den Dingen was ich frueher selbst geschrieben habe. Von daher bin ich halt unschluessig. Aber ich bin froh wenn Du sagst, dass sie wohl "voll in Ordnung ist" :D, da ich Dich als einen in diesem Bereich erfahrenen Entwickler einschaetze (ich hoffe ich irre mich da nicht :P).
Wie schon gesagt, dass Poll-Prinzip hat viele Vorteile, allerdings wenn man viele verschiedene Inputs (Texteingabe, Shortcuts in RTS, RPGs, ...) erwartet waere es imho mit dem Push-Prinzip guenstiger.
Wenn ich das so lese kommt in mir die Frage auf, ob Du damit sagen moechtest, dass XNA nur fuer Konsolen oder Konsolenspiele am PC verwendbar ist, und PC-Spiele lieber mit etwas anderem entwickelt werden sollten?Richard Schubert hat geschrieben:Input: Keyboard ist nicht für Eingaben gedacht sondern nur für einen Ersatz am PC, für den Fall, dass man kein Gamepad hat.
Wie schon gesagt, dass Poll-Prinzip hat viele Vorteile, allerdings wenn man viele verschiedene Inputs (Texteingabe, Shortcuts in RTS, RPGs, ...) erwartet waere es imho mit dem Push-Prinzip guenstiger.
- Richard Schubert
- Moderator
- Beiträge: 106
- Registriert: 27.02.2009, 08:44
- Wohnort: Hohen Neuendorf (b. Berlin)
- Kontaktdaten:
Re: [XNA, .net] Input - Push
Vielleicht hilft dir dieses Sample beim Zugriff auf das Fenster weiter. Das Komponentensystem selbst verwende ich persönlich eigentlich nicht. Das ist mir nicht flexibel genug, aber hat sicher für das ein oder andere Problem seine Daseinsberechtigung.
PC Spiele würde ich auch generell mit XNA entwickeln. Wenn dich die Einschränkung der Plattform auf PC nicht stört, dann kannst du ohne Probleme DirectInput einsetzen, um die genannten Unzulänglichkeiten von XNA Input auszugleichen.
PC Spiele würde ich auch generell mit XNA entwickeln. Wenn dich die Einschränkung der Plattform auf PC nicht stört, dann kannst du ohne Probleme DirectInput einsetzen, um die genannten Unzulänglichkeiten von XNA Input auszugleichen.
Produktivität über Performance - XNA Creators Club
Re: [XNA, .net] Input - Push
Beim Sample vermeiden sie anscheinend die Game-Klasse, dadurch ist man aber was das Form selbst betrifft flexibler.
Eine weitere Frage sich aus deiner Antwort ergibt ist, wie ich nun an DInput rankomme, da es kein MDX mehr gibt. Ich habe mich eine ganze Weile nicht mit .net beschaeftigt, so habe ich vielleicht etwas uebersehen, was mir diesbezueglich weiter hilft. Oder muss ich die Funktionen der DLL manuell importieren?
Bei meiner Suche bin ich auf ein Stueck Code von Cygon getroffen, welcher einen Hook auf das Form praesentiert. Momentan liebaeugle ich auch mit dieser Moeglichkeit, da es mir momentan primaer um die Texteingabe geht. Was haeltst Du von dieser Moeglichkeit?
Eine weitere Frage sich aus deiner Antwort ergibt ist, wie ich nun an DInput rankomme, da es kein MDX mehr gibt. Ich habe mich eine ganze Weile nicht mit .net beschaeftigt, so habe ich vielleicht etwas uebersehen, was mir diesbezueglich weiter hilft. Oder muss ich die Funktionen der DLL manuell importieren?
Bei meiner Suche bin ich auf ein Stueck Code von Cygon getroffen, welcher einen Hook auf das Form praesentiert. Momentan liebaeugle ich auch mit dieser Moeglichkeit, da es mir momentan primaer um die Texteingabe geht. Was haeltst Du von dieser Moeglichkeit?
- Richard Schubert
- Moderator
- Beiträge: 106
- Registriert: 27.02.2009, 08:44
- Wohnort: Hohen Neuendorf (b. Berlin)
- Kontaktdaten:
Re: [XNA, .net] Input - Push
Ja stimmt, ich hatte dafür das alte Manged DirectX verwendet. Ich benötigte es für die absolute Mausposition, welche über XNA nur relativ war. Oder war es andersherum?
Falls du nur die Tastatur benötigst, ist das KeyPreview Feature der Form natürlich ideal. Würde ich genauso machen.
Falls du nur die Tastatur benötigst, ist das KeyPreview Feature der Form natürlich ideal. Würde ich genauso machen.
Produktivität über Performance - XNA Creators Club