2008-09-18 10 views
9

Pensé que era un programador decente hasta que intenté escribir el código del gamepad para OS X. Ahora me siento profundamente inútil.Código de Gamepad en OS X: Buh?

¿Alguien sabe de algún código que pueda usar legalmente en mi juego (no libre)?

¿Es realmente tan difícil hablar con un gamepad en OS X? ¿Qué me estoy perdiendo?

Respuesta

-1

No hay código, pero se comunica con los gamepads y similares es bastante sencillo con el mecanismo InputSprocket. ¿Cuál fue el problema exacto que tenías?

+0

Los juegos de piñones no parecen ser compatibles con OS X. Las API recomendadas están aquí, aunque no puedo usar las de Leopard: http://developer.apple.com/referencelibrary/Games/idxHumanInterfaceDeviceForceFeedback -date.html –

3

Consulte el HID Manager, especialmente el nuevo HID Manager APIs in Leopard. Es algo detallado, pero la esencia de esto es que puede obtener devoluciones de llamadas cuando los dispositivos están conectados y desconectados, y obtener devoluciones de llamadas cuando los eventos de esos dispositivos se ponen en cola.

Si está trabajando con Cocoa, Dave Dribin tiene DDHidLib que proporciona una API de Objective-C más agradable encima del HID Manager, y se ejecuta también en Tiger.

+0

El Gerente de HID es con lo que me he estado peleando (aunque no estoy usando las cosas específicas de Leopard). Todo lo que puedo decir es que si alguien alguna vez quiere descubrir sus límites como codificador, tratar de obtener datos del gamepad de HID Manager es un buen lugar para ello. –

+0

Si tiene la opción, es mejor utilizar la nueva API específica de Leopard. La antigua API es muy incompleta, y dudo que sea compatible con Snow Leopard. Hace un tiempo encontré una gran falla de seguridad (CVE-2007-0724) y Apple tardó 11,5 meses en encontrar un parche. – splicer

2

Resulta que la respuesta fue HID_Utilities de Apple, lo que (algo) simplifica el trabajo de hablar con HID Manager.

John Carmack dio en el clavo en la cabeza cuando dijo que Apple no se preocupan por los juegos ...

2

La forma más rápida de eventos gamepad en OSX es el uso de SDL, la biblioteca de juegos. No tiene que usar toda la biblioteca, puede simplemente iniciar el subsistema de joystick y luego sondear o esperar eventos SDL_JOYAXISMOTION y SDL_JOYBUTTONUP/DOWN. SDL tiene una licencia LGPL, por lo que puede vincularla dinámicamente a ella en su juego no libre.

¡Fácil!

+0

Miré el código SDL originalmente y de mala gana decidí que no podía usar ni siquiera el código LGPL. Pero resulta que el código de joystick SDL es una corta copia del código HID_Utilities de Apple, que es lo que terminé usando, así que funcionó de la misma manera. –