[考古]微软当年为什么放弃DirectInput,就为了推广Xbox360?
本帖最后由 musouking 于 2023-6-24 15:06 编辑考古的时候发现家里的老手柄不能用,搜了下资料绷不住了
简单贴个英文wiki(机翻)
DirectInput 相对于 XInput 的优点:
XInput 仅支持与 Microsoft Xbox 控制台配合使用的控制器
XInput 一次最多支持四个控制器。DirectInput 没有这样的限制
XInput 不支持键盘、鼠标或鼠标类型设备。虽然这反映了 Microsoft 建议不要在这些设备上使用 DirectInput,程序员可以在这些设备上使用 DirectInput。
XInput 支持每个控制器最多 4 个轴、10 个按钮、2 个触发器和 8 向数字键盘,而 DirectInput 支持 8 个轴、128 个按钮和全范围 POV。(XInput 支持的轴、按钮和触发器的数量直接对应于 Xbox 360 控制器。)
XInput 相对于 DirectInput 的优点:
目前由微软支持
还搜到一篇09年的湾湾blog骂Xinput的,https://blog.dabinn.net/%25E4%25 ... 5EF%25BC%259Axinput
我复制一下
既然Xinput这个介面这么弱,比先前的DirectInput都还不如
为什么微软还要去推这个规格?
说穿了还不就是**,让XBOX游戏厂商可以啥都不改就把PC版搞出来
最近非常多XBOX 360的移植游戏只支援Xinput,把通用的DirectInput丢在一旁 *註1
结果就是多年来乖乖遵循微软DirectX标准的这些摇桿通通都不能用了。
造成不明就里的消费者大力鼓吹”游戏用XBOX摇桿来玩才是王道”的奇怪现象。
如果游戏厂商继续这样便宜行事,
以后不止是没有别厂的摇桿可以选用,
而是PC Game根本就没了特色。
花个五仟一万的买显卡,没事还得昇级CPU POWER,
结果还跑不动,内容又跟XBOX的一模一样,
这样玩PC Game是何苦咧?
以后说不定用PC玩FPS游戏连滑鼠都不支援,
为啥?就叫你用XBOX的方式打就好啦!
厂商才懒得特别为你PC版改呢!
*註1
不支援DirectInput的例子:
Juiced 2:完全不支援,赛车游戏连罗技方向盘都不能用,真是够呛的了
GTA4:patch 1.01之后才支援
2016年补充:2016移植到在PC版的Forza 6,又是因为只支援Xinput造成罗技方向盘不能用
这还微软当家的赛车游戏
*註2
这篇的所说的PC Game指的是PC的原生游戏
古时候PC缺乏游戏对应的硬体性能(捲轴放大缩小那些的),没法像游戏器有那么多动作游戏
但因为CPU还是比游乐器强的多,一些策略游戏(例如三国志)比游乐器跑起来速度快很多,游戏体验更好
另外因为有键盘、滑鼠,所以像是FPS、模拟飞行之类游戏都很适合在PC上发展
最有趣的是以前PC上的Gamepad和飞行摇桿百家争呜,各式各样的设计都有
加上3D眼镜等各种奇奇怪怪的周边,让人觉得PC Game有无限可能
虽然游乐器移植过来的游戏少的可怜,但PC Game还是有他自己有趣的地方
到现在游乐器移植过来的游戏变多了,画质也更好
但PC自己的原生游戏呢? https://learn.microsoft.com/en-us/windows/win32/xinput/xinput-and-directinput
自己判断 标题正确,xinput就是为了给360手柄做的api,这样只要写一套代码就能适配win/xbox,此外没有任何优势 我记得directinput 就是把消息回调包装了一下,也没什么先进的 本帖最后由 Tring 于 2023-6-24 19:23 编辑
现在回头来看,360手柄在PC上几乎也是半壁江山,360键位成PC标准一统江湖。
从结果上来说,这推广确实是相当的成功。
成功得甚至让人觉得违反了反垄断条例。
如果你一直跟着微软做windows开发的话就知道微软一路放弃的自家标准数不胜数,一个directinput算得了什么
而且功能变弱但使用变简单也算是微软api历代更新的一个大趋势 但微软就是能订这一套标准被几乎所有人(除了ps玩家)接受。
非对称手柄才是世界的真理。 Gundamslave 发表于 2023-6-24 19:49
但微软就是能订这一套标准被几乎所有人(除了ps玩家)接受。
非对称手柄才是世界的真理。 ...
從遊戲機銷量來看,Xbox布局手柄玩家 < PS布局玩家吧… 病態極端 发表于 2023-6-24 20:42
從遊戲機銷量來看,Xbox布局ؤ ...
你忘了ns也是非对称布局,只不过键位相反。 本帖最后由 病態極端 于 2023-6-24 20:52 编辑
frankCC 发表于 2023-6-24 20:44
你忘了ns也是非对称布局,只不过键位相反。
Joy-Con本質上是兩個控制器。
還有就是PS3+PS4+PS5(去除重複)應該還是大於Xbox系列+NS+WiiU,WiiU是對稱的…(去除重複)吧。
呃,算了吧,我才不想电脑上有一万种input,别搞得像手机的充电协议一样,同一个手机换个厂家的充电器就只能五福一安了 Variks 发表于 2023-6-24 21:31
呃,算了吧,我才不想电脑上有一万种input,别搞得像手机的充电协议一样,同一个手机换个厂家的充电器就只 ...
看Steam Input能不能一統江湖了,不然2023年了還用不支持陀螺儀跟觸摸板的Xinput也不是辦法。 病態極端 发表于 2023-6-24 20:49
Joy-Con本質上是兩個控制器。
還&#x ...
应该加上PC用XBOX手柄的玩家 病態極端 发表于 2023-6-24 20:49
Joy-Con本質上是兩個控制器。
還&#x ...
有没有可能手柄销量远大于游戏机
还得算上人均N个手柄的xbox限定
—— 来自 S1Fun xinput推广之前
pc的手柄种类很泛滥,我买过手柄,游戏也没适配,键位也要自己改,界面提示也是按键1按键2那种,用起来非常麻烦
xinput推广后,即插即用,大量游戏支持,我玩游戏都主要用手柄了
可能这就是化繁为简吧
不过现在xbox不支持压感不支持体感有点拖后腿了 DirectInput是一个比较依赖玩家自己定义按键映射的协议,XInput是一个提供了严格的规范方便开发者内置配置方便用户即插即用的协议。 自己用单片机做手柄的话,模拟Direct Input 确实能用,但你看进游戏之后游戏识别吗,识别的话,按键和按键能对应上吗?
而模拟Xinput信号的话,统一的按键,即插即用。 本帖最后由 nanoka111 于 2023-6-25 10:03 编辑
当年曾用DirectInput做过编程的过来说一下。
其实DirectInput不止可以操控游戏手柄,还可以操控键盘和鼠标,甚至具备比Windows系统更高的操控权限,这点是这个接口的漏洞所在,现在新的操作系统已经不许绕开Windows系统权限来操控,当前DirectInput的这块功能已经失效。
DirectInput操控手柄的原理就是给手柄的所有按键用数字做编号,但是却不指定任何按键的功能,所有这些需要编程的人甚至是玩家来自己掌握。当时市面上的手柄千差万别,每个手柄的按键情况都不一样,有时用不同的手柄玩同一个游戏可能会出现操作很别扭的情况。我当年利用DirectInput编写的游戏和试验程序就看到过一些操作比较滑稽的情况。
XInput基本就是在确定手柄规格的前提下对DirectInput的一种简化的接口方案,这里每个按键的功能都是明确的不会有变化。DirectInput对编程人员甚至玩家都有很高的要求,XInput相比之下就要简单多了。
另外说起体感、触摸等比较复杂的操作,DirectInput对此也是无能为力的,说白了DirectInput只是应对传统的按键手柄来设计的通用接口,如果需要这些比较复杂的操作是需要用专门的接口程序来做的。 现在要用GameInput了:https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/reference/input/gameinput/gameinput_members
XInput万年不更新,连扳机键震动都没有。 以前给unity接过一个插件支持directinput,好家伙手上那个xbox one手柄用蓝牙还是线连爆出的按键序号都不一样 本帖最后由 病態極端 于 2023-6-25 12:08 编辑
zid99825 发表于 2023-6-25 09:37
有没有可能手柄销量远大于游戏机
还得算上人均N个手柄的xbox限定
我最開始回覆的那位說的是以人為單位,而一個人買一萬個手柄那也是一個人。 heroboy 发表于 2023-6-25 10:07
现在要用GameInput了:https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/reference/input/gamein ...
Ctrl+F,沒找到陀螺儀。微軟這換API有什麼意義… 起码DirectInput还能用。
DirectSound3D在新系统都没法用了。
DirectInput确实用起来比较复杂,尤其是力回馈那块,因为它是更加通用性的接口。 如果从DirectX的组件变迁来说
DirectDraw,是FrameBuffer操作库。到了DirectX8就给舍弃了。因为没用了,像什么Color Key Blit功能,用D3D也能实现,功能还更多。
DirectInput,目前还能用,这接口我觉得一时半会还不会消亡,因为它比较通用,不止针对游戏设备。
DirectSound,目前也还能用,基于SoundBuffer的音频API,不过夹在XAudio与WASAPI之间,基本是个被遗弃的老接口。当初用的时候,被不同硬件的驱动折磨得够呛,主要就是开启硬件加速后Streaming Data时的Position Event触发问题。
DirectSound3D,3D空间定位的音频API,作为DirectSound的扩展,新系统没有支持的了。驱动自然也就不做了,没法用了。
DirectMusic,是个用波表播放音乐文件(比如midi)的API,当年FF8的PC用这个,实现了带人声的音乐。基本属于过时的技术,所以就舍弃了
DirectPlay,网络相关的,由于不怎么玩网游,不知道哪些游戏用过。
Direct3D,这个是DirectX中最成功的API了,不过到了后来,新版本总要和新系统绑定,是个让人恶心的设定。
DirectShow,这个其实一般不算在DirectX里,算是一个专门的framework,基于Graph的媒体播放库,功能是挺丰富的,所以现在还在广泛用。虽然从Win7时引入了WMFoundation。但由于DShow的积累很丰富,所以虽说WMFoundation借助新的API可以取得更高的效率,但一时半会不会完全取代Dshow。
Direct2D,DirectWrite,DirectComposite:随win7新加的,一般也不算在DirectX内,因为和游戏关系不大。 病態極端 发表于 2023-6-25 12:14
Ctrl+F,沒找到陀螺儀。微軟這c ...
GameInput 整合了手柄和键鼠支持,就是把 DirectInput,Xinput,HID 等一堆弄在了一起,目的就是方便开发,还有就是支持了扳机震动 ,steam 上的游戏很多不支持扳机震动就是因为用的 Xinput
页:
[1]