在OS X上使用游戏手柄代码:Buh?

9

我曾认为自己是一位不错的程序员,直到尝试在OS X上编写游戏手柄代码后,我感到十分无助。

有没有人知道我可以在我的(非免费)游戏中合法使用的代码?

在OS X上与游戏手柄交互真的这么难吗?我错过了什么重要的东西吗?

4个回答

3

了解 HID Manager,尤其是 Leopard 中的新HID Manager API。虽然有点冗长,但其实质是可以在设备连接或断开时获取回调,并在这些设备产生事件时获取回调。

如果您使用 Cocoa,可以使用 Dave DribinDDHidLib,它提供了一个更好的 Objective-C API,可在 Tiger 上运行。


HID 管理器是我一直在苦苦搏斗的东西(虽然我没有使用 Leopard 特定的工具)。我能说的就是,如果有人想要发现自己作为编码人员的极限,尝试从 HID 管理器中获取游戏手柄数据是一个很好的地方。 - Mike F
如果有选择的话,最好使用新的Leopard特定API。旧的API非常不可靠,我怀疑它在Snow Leopard中将不受支持。我曾经发现过一个重大的安全漏洞(CVE-2007-0724),而苹果公司花了11.5个月才提出了一个补丁。 - splicer

2

事实证明,答案是苹果的HID_Utilities,它(在某种程度上)简化了与HID Manager通信的工作。

当约翰·卡马克说苹果不关心游戏时,他真的说中了要害...


2

在OSX上获取游戏手柄事件的最快方法是使用SDL游戏库。您不必使用整个库,只需初始化操纵杆子系统,然后轮询或等待SDL_JOYAXISMOTION和SDL_JOYBUTTONUP / DOWN事件即可。 SDL具有LGPL许可证,因此您可以在非自由游戏中动态链接到它。

很容易!


我最初查看了SDL代码,但不情愿地决定甚至不能使用LGPL代码。但事实证明,SDL游戏手柄代码是Apple的HID_Utilities代码的复制粘贴,这正是我最终使用的,所以结果是一样的。 - Mike F

-1

虽然没有代码,但是使用InputSprocket机制与游戏手柄等设备进行通信非常简单。您遇到的确切问题是什么?


游戏齿轮在OS X上似乎不受支持。 推荐使用以下API,尽管我无法使用仅适用于Leopard的API: http://developer.apple.com/referencelibrary/Games/idxHumanInterfaceDeviceForceFeedback-date.html - Mike F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接