DodgeCam
Schon mal beim Spielen eines Shooters mit dem Oberkörper zur Seite weggeduckt? Oder versucht, um die Ecke zu schauen? Nach vielen Jahren mit Ego-Shootern (die guten alten, wo man noch pixelige Aliens jagt) passiert mir das immer noch.
Deshalb habe ich gedacht, warum soll ich dieses Rumhampeln vor dem Monitor nicht als zusätzlichen Input für das Spiel verwenden? Möglichst simpel, ohne komplexe Algorithmen (Mein Motto: Wenig Aufwand, viel Effekt). Damit ich endlich mal was neues mit dem Code aus diesem Post
hier machen kann.
Hier ist das Ergebnis: DodgeCam
Benötigt wird eine WebCam. Möglichst mit Codecs wie YUY2, YUYV etc., denn Codecs wie
RGB oder MJPEG sind eher kontraproduktiv, da das Videobild als Graustufenbild ausgewertet wird, und bei letzteren erst zeitintensiv umgerechnet werden muß.
Nach dem Start von DodgeCam richtet man das Video ein (mit etwas Glück schlägt die Software gleich was Brauchbares vor), und wählt aus, ob man Maus-Events und/oder Tasten simulieren will.
Bitte darauf achten, dass genügend Bilder pro Sekunde (fps) ankommen. Beim Spielen in dunklen Räumen bricht die Bildrate zu sehr ein. 20fps wäre wohl ein brauchbares Minimum.
Wenn „Control mouse movement“ und/oder „Send keys“ angeklickt sind, geht die Steuerung noch nicht los, keine Bange. Dazu muß man die „Rollen“ (SCROLL-Lock) Taste drücken. Diese Taste „toggelt“ somit die Eingabesimulation. Da diese Taste in Spielen nur selten verwendet wird, ist sie ganz praktisch, um damit während eines Spieles DodgeCam zu aktivieren und zu deaktivieren. Links/Rechts Bewegungen vor der Kamera werden dann in horizontale Mausbewegungen übersetzt. Außerdem kann man für jede Bewegungsrichtung eine Taste definieren, die gedrückt bleibt, solange die Bewegung erkannt wird (In Spielen beispielsweise A für links und D für rechts).
Habe die Software mit dem Duke (vom letzten Jahrtausend) und in Avatar ausprobiert. Insbesondere beim Duke kann man beim Aktivieren von Maus und Tastatur förmlich um die Gegner herumrennen, wobei man sie immer noch im Visier hat. Aber um ehrlich zu sein, wirklich bringen tut es nichts, mit den Fingern ist man doch flotter. Aber es hat durchaus was fürs Spielen und Experimentieren zwischendurch.
Falls ihr auf der Suche nach raffinierten Algorithmen seid: Vergeßt es. DodgeCam macht einen ganz simplen Korrelationsvergleich aufeinanderfolgender Videoframes. Wenn ihr keinen statischen Hintergrund habt (Fenster zur Straße), könnt ihr DodgeCam vergessen. Die Maus und Tastatur Simulation erfolgt via SendInput().
Im Anhang findet ihr
- Ein ZIP mit DodgeCam.exe
- Ein ZIP mit dem Sourcecode (inkl. der verwendeten
DirectX Header)
- Ein PNG mit einem Screenshot.
Nicht vergessen: Mit der SCROLL-Lock Taste wird DodgeCam aktiviert/deaktiviert.
Und natürlich: Verwendung auf eigene Gefahr!
Gruß
Michael