• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Steam DualShock 4 support is now live

kami_sama

Member
Is there real documentation or articles about this part? Anything at all?

I was looking right now and I didn't find anything yet.

My supposition that it is based on interception is made on several observations:
  1. The way a Steam controller or several Steam cotnrollers can "shadow" existing xinput ones.
  2. That it only works when the overlay works.
  3. Most importantly, the fact that there has to be some software layer/interpretation involved since you can, at the same time, use the controller to trigger keyboard/mouse/xinput or even Steam internal actions.

Here: https://youtu.be/UfN5WK7OzU8?t=17m58s
At least it was doing that in 2014. I remember seeing it on the dev days conference, but had to search for it :p
 

Ceallach

Smells like fresh rosebuds
Great! Now people that are going to play Bloodstained on PC can do it as it was meant to be: with a Dualshock controller. Anyone that was going to use a Steam controller (or the Xbox One's left stick) for that game would be doing it wrong!

The Dualshock 4 has the overall best Dpad any home console has ever had. Come at me Saturners!
Nah. Neo Geo CD dpad is the best.
 

Rappy

Member
Just thought I'd clarify/correct something I stated earlier:
No games have the API integrated
What I meant to say is that no games need to have the API integrated to in order for the Steam controller to work for it. Games can integrate the API into their game, which is part of what the presentation was about. Although I'm not sure which or if any games have integrated the API currently.
 

Sini

Member
Just thought I'd clarify/correct something I stated earlier:

What I meant to say is that no games need to have the API integrated to in order for the Steam controller to work for it. Games can integrate the API into their game, which is part of what the presentation was about. Although I'm not sure which or if any games have integrated the API currently.

Doesn't native support mean they have integrated the API?
https://www.reddit.com/r/SteamController/wiki/official-support
 
This is great news. DS4 has replaced the 360 controller as my go to on PC, and while DS4Windows worked well last time I tried it, it'll be very nice to see Steam supporting it officially.
 

SigSig

Member
This is really, really good.
I love the customization menu for my Steam Controller.
Will this allow for mode-switching, too?
So I could map L1 + DPad Left to something different than DPad Left?
 

Peltz

Member
I don't understand... I thought steam always had native DS4 support? Big Picture Mode clearly had it before. It's how I've always accessed my steam games on my Macbook Pro.

What is different now?
 
I don't understand... I thought steam always had native DS4 support? Big Picture Mode clearly had it before. It's how I've always accessed my steam games on my Macbook Pro.

What is different now?

Well, the big difference is that the PS4 pad has been given far, far more functionality and can work with games that don't even support controllers period.
 

Coreda

Member
Has there been actual testing on this? LEDs don't really draw a ton of power as far as I know

Everything I'd read from users prior to picking up a DS4 mentioned the lightbar consumes battery life considerably.

Just doing a quick search returned a top result from a GAF'er who had done some testing which confirms this.
 
There is just this:

Which doesn't say anything about games that don't have the API integrated.


Is there any breakdown how Steam Controller emulates DirectInput/Xinput and KB/M? Does it all go through Steam? How much work does the controller itself do?

Native controller API means Steam Controller API here?
Because if it does then you are very confused about all this. Full controller Support just means that game works without needing mouse and keyboard at all, partial support means that some parts of the game need KB/M input, often launchers.

See my presentation. (I'm Lars, one of the guys who presented this on stage with Valve).

Full Controller support is a specific status that has eligibility requirements defined in the Steam documentation, I have a slide in the presentation that directly lists the requirements for "Full controller support" as of the last version of the documentation. I'm not sure if Valve is enforcing those standards yet or not, but that's what the docs say.
 
See my presentation. (I'm Lars, one of the guys who presented this on stage with Valve).

Full Controller support is a specific status that has eligibility requirements defined in the Steam documentation, I have a slide in the presentation that directly lists the requirements for "Full controller support" as of the last version of the documentation. I'm not sure if Valve is enforcing those standards yet or not, but that's what the docs say.

I have sent you a PM.
 
NOTE: now that one of the people who actually gave the talk is in this thread, I don't know if this post will be super useful, but maybe it'll still help clarify things? Or if Lars says this is totally wrong, I can just take it down.

I read through most of the Gamasutra talk (which was pretty interesting even for someone who doesn't develop games!), and I'm not 100% sure if I got this right. Also, I am not a game developer, in case the previous comment didn't make it clear. But here's what I think is going on in that talk.

There's two separate things being discussed: one is the integration of the Steamworks controller API, which sounds very new. That's an abstraction layer that lets you define actions in your game (and certain properties like whether it's an analog or digital action, and how the analog action should work for things like touchpads), and then leave the actual mapping to controls completely up to Steam. Most of the talk discusses the benefits of using the API, and implies that you could completely remove the controller/keyboard mapping screens in your game and let Steam handle all that on its own (assuming you're only targeting Steam).

The Dualshock 4 stuff is separate. Steam Controller remapping support will be extended to the Dualshock 4, with all its native controls (gyro/touchpad) mappable in the same way Steam Controller inputs are. For games that don't directly implement the controller API, which is most/all games on Steam right now, the Steam client is presumably doing some translation between the hardware controller and the game, either emulating Xinput/Directinput controllers or keyboard/mouse input. That support is now being extended to the Dualshock 4. Either way, not only does a game not need to care if the connected controller is a Steam Controller or a Dualshock 4 (and change things accordingly), it actually can't know because of the API abstraction. The only place where this might be confusing is how do you implement button icons in your game, but perhaps I missed a detail in the talk (button icons do get brought up, but only in the context of the Steam Controller actions specifically). Worst case scenario, you could just include multiple sets and let the player self-identify. A couple of games already do this; Rebel Galaxy is one example.

The benefits of API implementation seem to be largely that you don't have to make a control binding interface anymore if you don't want to (and don't need to sell your game outside of Steam), and that even if you don't want to tie yourself to Steamworks, you can abstract some of the input functionality and then polyfill the abstraction layer for the GOG/DRM-free/Uplay/Origin/etc. release. It would be interesting if it also meant for users that the actual action names showed up in the Steam Controller setup interface, i.e. instead of assigning "Dpad Up" or "X Button" to controller inputs, you could map "Jump" or "Open Weapon Wheel" because you could send the actual names of the actions through the API to the Steam Controller interface. But that's a guess; I don't actually know if that bit has been implemented.
 

Sini

Member
See my presentation. (I'm Lars, one of the guys who presented this on stage with Valve).

Full Controller support is a specific status that has eligibility requirements defined in the Steam documentation, I have a slide in the presentation that directly lists the requirements for "Full controller support" as of the last version of the documentation. I'm not sure if Valve is enforcing those standards yet or not, but that's what the docs say.
I know who are, even saw your reddit posts. :)

Full and partial controller support used to mean this:
qZDmhjA.png

As of Big Picture launch I think

It's very odd for them to redefine what full support means. Most games would lose it then.
 
@Sini: thanks for that! Sorry if I'm muddying the waters.

The text in my talk is taken directly from the Steam Controller SDK documentation. They have a list of requirements for "Full controller support" which presumably in this case means STEAM controller.

So maybe steam is going to add a third status which is "Full STEAM Controller support" as a separate status?

I'll ask a Valve contact to clarify the situation, as the image you've got there seems to be referring to what you were discussing earlier.
 

TheTux

Member
If the game has no native DS4 support then it will act like a regular xbox controller for everything that has gamepad support on Steam (so yes, FFXIII). It also has a built in configuration editor so you could remap O/X to Japanese style at the system level if you preferred (as well as customise all other button placement, sensitivity, etc, at system level and per-game).

Thanks, that's exactly what I wanted to know.
 

Sini

Member
@Sini: thanks for that! Sorry if I'm muddying the waters.

The text in my talk is taken directly from the Steam Controller SDK documentation. They have a list of requirements for "Full controller support" which presumably in this case means STEAM controller.

So maybe steam is going to add a third status which is "Full STEAM Controller support" as a separate status?

I'll ask a Valve contact to clarify the situation, as the image you've got there seems to be referring to what you were discussing earlier.
I actually just found support article about this, so you don't even have to trust that image.
https://support.steampowered.com/kb_article.php?ref=5006-ASLN-3202#controller

I would also guess they'll actually add a new level of controller support instead of redefining existing ones.
 
Here's the specific stuff from the SDK, I think this is okay to share as it's basically what I put in the talk:

---------
The Steam Controller API is designed to allow you to easily enable full Steam controller support in your game. We define full support as the follows:

  • Your game uses the Steam Controller glyphs when showing in-game input prompts.
  • The Controller Configuration screen in Steam uses in-game actions that the player performs in your game, instead of keys or buttons.
  • You've published an Official configuration for the controller.
  • Your game doesn't restrict the user's ability to customize their controls. This means it allows any mix of mouse, keyboard, or gamepad input simultaneously.
  • When your game wants keyboard input (e.g. when naming avatars), you call [the soft keyboard overlay] to automatically bring up the text entry UI.
  • Your game has no launchers that require mouse or KB input - or even better, no launcher at all.

To ensure users have a good experience from the couch, we also recommend the following:
  • Make your UI readable from several feet away. Our rule of thumb: when your game is running at 1920x1080, your fonts should be a minimum of 24px in size.
  • Start your game in fullscreen by default when the user is running Steam Big Picture (the "SteamTenfoot" environment variable will be set)
  • For bonus points, at first launch detect the user's screen resolution and set your resolution to match it.

----------

I associated the "Full Controller support" badge with these requirements, but now I'll have to double check with Valve about that. They didn't correct me so I just assumed that's what it was. I'll post an update as soon as I know for sure.
 

Durante

Member
One thing I was thinking about today is, what about mouse/KB controls? Will I ever be able to bind those to actions using the Steam "controller" interface?

Because that would be rather important and make the API even more useful (because then you can really unify your input handling).
 

Unai

Member
The mouse emulation in the Dualshock 4 using gyro doesn't work very well (using the DS4Windows). Is that because of the hardware? If the problem is software hopefully it will be better once this update is available.
 
One thing I was thinking about today is, what about mouse/KB controls? Will I ever be able to bind those to actions using the Steam "controller" interface?

Because that would be rather important and make the API even more useful (because then you can really unify your input handling).

I did ask them about that specifically. And I can't tell you what their response was... but they do know that's something people want.

We'll have to wait and see!
 

dsk1210

Member
I do apologise if this has been asked already but how good is the gyro in the ps4 controller. Does it feel as accurate as the steam controller?
 
This is amazing news. As a Steam Controller owner I've felt the software side of it is amazing but the hardware is not. I've always wanted to be able to use the config tool and overlay commands with other controllers and this opens the path for that. I personally use a non-standard controller for most gaming and if I could access the overlay commands like touch menus and radial menus it would be so awesome. The DS4 is also a great gamepad for doing this on, with it's touchpad and gyro. But I do hope they open it up to all gamepads.
 

Plagman

Neo Member
I hope to be proven wrong when I can get a real look at the API but it looks like input is completely based on polling for current controller state instead of event-based? That's a huge basic error.

It's possible to write a polling based API based on top of an event-based one that will behave identically to a straight polling API. But you can't go the other way without introducing the possibility of lost input. Someone pressing and releasing a button within a single frame may not register a button press for instance.

The API doesn't have events, it's very simple and polling-based. The calls are very fast so you can poll more once than every frame if you want, but once per frame should still be plenty. It's pretty standard, that's how people use XInput too. Definitely not a "huge basic error"..

The API isn't new with this BTW, it got released last year. The new additions are going to be tweaks like being able to resolve Origin IDs into on-disk glyph paths.
 
Top Bottom