j k - p r o . i n f o
про Жеку, места его обитания, особенности поведения и повадки

Существует целое множество систем ввода данных всякого разного вида: портабельные, непереносимые, процедурные, обьектные - да какие хотите. Зачем же проекту GameEngine потребовалась своя, новая система ввода?

Первое: переносимость существующих систем, мягко говоря, ограниченна. Даже если упоминать о таких монстрах переносимости, как SDL, то ни о каком переносе, например, под PlayStation речи идти не может. В силу идеологической недодуманности.

Второе: как только мы уходим от DirectInput, то сразу лишаемся плюшки под названием ForceFeedback. А я вам скажу (а вы поверьте) - это очень вкусная плюшка. Сомневающиеся запускают Descent3 на фидбэковом джойстике\геймпаде, а потом идут завершать просвещение на PlayStation2, Tekken4.

Исходя из этого, требуется система ввода, которая не знает о том, что есть клавиатура или там мышка, но зато знает, что к системе подключен некий набор устройств, у каждого есть кнопки, оси там всякие. А потом если программу будет интересовать состояние, например, кнопочки Esc на клавиатуре, то она так честно и спросит: riSystem->buttons("keyboard.esc")->isPressed();

Кроме того, она должна держать ForceFeedback и иметь разумную имплементацию под Windows, Linux, PlayStation...

И самое главное - это должна быть удобная, грамотно спроектированная система. Как, например, предложенная здесь и сейчас.

(все ваши комментарии и пожелания вы можете оставить в гостевой книге)



  Файлы:  

Самая последняя версия системы доступна из CVS на sourceforge.net/projects/gameengine в составе всего GameEngine, выкачивается анонимусом.

Стабильные релизы: Документация:

  История:  

2004-04-13
"Exclusive mouse" and "Exclusive keyboard" parameters added to DI8 vesrion.

Autogenerated documentation is availible for download since now.

2004-04-10
DI8 problem with local buttons names fixed.

2004-04-08
Problems with outputBinds() are fixed. Version is stable now!

2004-04-07
RawDI8 system optimized: non-poll devices now works without update() method.
Also "deadzone" parameter added for axes: set gamepad.xaxis.deadzone 100.
Input object listeners added to InputSystem. They work asynchronous (if raw level supports this). Virtual buttons fixed: now they work in respect with host object.
Also outputBinds() function added to save all binds.

INPUT_GECONSOLE_SUPPORT and INPUT_GESTREAM_SUPPORT compilation switches added to improve independence of input system.

2004-04-06
New event type added: etPrintableChar. This allows programmer to abtract from the platform and implement only hi-logic code, without processing WM_CHAR for example.

RawDI8 realization now produces such messages. Also RawDI8 supports event-based updates, so timestamps on events are much better (more precise). This works because of new cool multithread system.

2004-04-02
Logic (virtual) input level completed. Now there is now need to know anything about keybaords etc: just creating InputSystem object, then creating one (or many) virtual input device, for example createDevice("player",axes("strafe","walk"), buttons("fire","jump")) then make severals binds (bind gamepad.x-axis player.strafe). So, now you are done: x = x + inputSys->axes("player.strafe");

2004-03-13
RawDI8 realization is splitted into several files now. Now it's easier to read it.