Darksiders Warmastered Edition

Darksiders Warmastered Edition

View Stats:
peterthierolf  [developer] Dec 30, 2016 @ 1:16am
Steam Controller - design help wanted
I am struggling with the design for native Steam controller support. I asked the developer forums for help - but nothing so far.

As I know there are some Steam Controller Aficionados around here I hope to get support with specific questions.

Please *don't* list your recommendations for a default setup or the like here, I can not discuss everything and this would only delay getting Steam Controller support in.

Question :

Darksiders uses a Button (LB on a XB360 controller) to show up the wrath selection dialog. If that dialog is open, the face buttons (A,B,X,Y) are used to select a wrath power or potion. So this switches mode for these buttons that normally trigger attack moves and jumping.

Can you point me at a couple of games that do exactly this with full Steam Controller support ?

My problem is that I can't see how this is done in the Steam Controller Action Definition - so that there are Actions like 'Select Wrath 1' to 'Select Wrath 4' and at the same time there are Actions like 'Jump' and 'Attack'. So I need an example to look at.

I would also appreciate screenshots from the Steam Controller config screen where I see the different actions hooked - so I don't have to buy so many games...

Of course I also appreciate tips from coders that solved similar problems with their games :steamhappy:

< >
Showing 1-7 of 7 comments
Vepar Dec 30, 2016 @ 8:25am 
I only know of Warframe that has true native SC support.

But Warframe actually has something that i think is the same thing or at least simmilar.

ABXY buttons do standard actions (melee, reload, switch weapons etc.) but when the LB or RB (don't know which one) is pressed, the ABXY buttons change what they do to powers (spells). The on screen context menu appears to showcase this too with what button corresponds to what action.

On non native games you can do something like this with "mode shifting" which assigns one button that when pressed, will call up another set of bindings on a particular segment of the controller (such as the d-pad or ABXY or whatever).

So if you have for example keys 1,2,3,4 bound to ABXY, you can have 5,6,7,8 when LB is pressed and q,w,e,r when RB is pressed and so on. All on the same ABXY buttons.

Warframe has this se a bit differently though, simmilar effect but with activators.

For example:

http://imgur.com/pZkrcdX

This is the ABXY segment menu in the configuration in Warframe. Notice it has 2 actions bound to it, and LB toggles between them.

But when you open up one action to configure it (Y button in this case) you'll notice it has 2 "regular press" activators both doing different things.

Activator 1:
http://imgur.com/0hAbevO

Activator 2:
http://imgur.com/JSxjYjT

This is how the native support binding look like:
http://imgur.com/gBoTVFh

I'm not a coder or a programmer so i don't exactly know what you need to do to make this happen within the game but (and this may sound stupid from your point of view) you have i think several options with one thing you need to do first:

You need to make (somehow, again i'm not a programmer), in game actions appear in the configuration of the Steam controller. Not xinput bindings but in game actions. I'll explain why in a bit, and it's important for easier configuration.

You then have a few options:

1.) Bind normal ABXY bindings to those buttons, use LB as mode shift and then when LB is held down another set of ABXY bindings will be available and you bind wrath 1, wrath 2 (or whatever the second set needs to do, and whatever those are called in game) etc. to them. I haven't played the game in a while (the vanilla version) so i don't remember what's supposed to be the in game actions for ABXY when holding LB, magic i think, but whatever it is, you need to make it 4 separate bindable things.

2.) Use activators for regular press to have the first set, and long press (holding the button down for a bit) to activate second one bound to a particular button. So regular press X can be "attack", and long press X another action. This eliminates the need for mode shifting with LB but the game interface should somehow note thatso the player knows what's bound to long presses.

For maximum ease of binding it would be best to make all in game actions, regardless of how they're represented in the xinput scheme - separate and bindable. So if in xinput for "wrath ability 1" is LB+X you make it a single "keybind" called "wrath 1" or whatever you want to call it (preferrably the in game name of that ability). That way, if you have every single action (move, jump, attack wrath, camera) as a bindable key, you can use SC's own configurator to make an easy setup as i explained in example 1, because SC's configurator already has everything you need, and if you're doing native support, that's what the game will use anyway when it detects a Steam Controller, so basically you just need to make in game actions as keybinds. Then use the SC's configurator to mimic the game's layout.

The only "coding" you need to do (apart from keybinds) is make the game recognise and switch different action sets like "menu", "game", "aiming" or whatever action set you want to make. This is the key feature of native support, to make the game switch sets on its own according to the situation. While in the menu, it uses the menu set of commands, then when you start or load a game, it switches to the game commands etc. In non native games this is done by binding "switch set" to a button, but a native game has to do it automatically.

And the other thing that needs to be coded is make the game adapt to the user's configuration. If the contextual button is B by default and someone rebinds it to RG (right grip) for example, the on screeen prompt needs to reflect that and of course all other binds.

I hope i helped in some way and Happy Holidays! :steamhappy:
peterthierolf  [developer] Dec 30, 2016 @ 10:04am 
Thanks for the help. And its even a free-to-play game, so I don't have to spend my christmas Euros :steamhappy:

I know the correct way for steam would be to directly have the 'wrath1' and 'wrath2' actions, without the mode shifting thing, but this would blow the games UI. And you would still want to have some 'show wrath' action so you can bring up the wrath UI to see what is equipped.

I am installing warframe right now, hope to find the action configuration file in there in order to copy their setup for the Power(A/B/C/D/E) actions. This is exactly what I was looking for.

Another question you might be able to answer...

If I add native SC support, will that render all the Controller configs that people made already useless ? Or can you select for the game whether or not you want the native mapping or XInput / Mouse&Keyboard mapping ?
Vepar Dec 30, 2016 @ 10:19am 
Glad i could help! :steamhappy:

Yes, best way is to see it in action and see how they did it. Maybe there's a config file i don't know.

If you want to do it as it's now (the UI showing wrath abilities) then i think the mode shift option is the one you want. Then you can make the UI show wrath abilities when the mode shift button is held, and have a separate set of commands for wrath 1-4 on ABXY activate with mode shifted set.

And when you make a native config, i think the game will default to that once it's implemented, but users can still create their own config, rearrange in game action bindings and make their own configs regardless.

What will happen is, the native config will show up in recommended developer config part, but people can still use legacy config (xinput commands or keyboard and mouse commands), and all the previously made community config will still be available.

It just depends then what input SC will send to the game. Will it be native actions, xinput or KB/M. And i don't think anything is needed on your part to make the game accept that, xinput and KB/M is already proggramed in, so if a game detects xinput binding it'll use that (unless there's an on/off controller toggle for using a controller but i think Darksiders makes this automatic if i'm not mistaken).

The only thing that might cause problems is hybrid input then so be sure to enable that. Some people don't like the native "camera" binding and prefer mouse to control the camera, and i think Warframe uses mouse as default in the native config. Some people don't like camera because they say it's too senstive, idk, i'm fine with it as long as it works and i can adjust the sensitivity myself.

Once the native support is in, people with Steam controllers won't use xinput because there's no reason to so i don't think you need to worry aboutsimultanious xinput and native commands, but they might want mouse input instead of camera so bear that in mind. ;)
Last edited by Vepar; Dec 30, 2016 @ 10:21am
peterthierolf  [developer] Dec 30, 2016 @ 3:05pm 
Ok, I got it. Checked the configuration in Warframe. I haven't been aware of the fact that you can put arbitrary amounts of actions on a single button, so no real problem there.

The mouse camera part is actually the most complicated one because mouse+keyboard changes more than just that. The character moves differently then, strafe instead of turn based walking. Don't know what I will have to do to the original game's code.
Vepar Dec 30, 2016 @ 3:33pm 
Ah I see... That's why the game locks to either gamepad or KB/M. Why there's no hybrid input.

Well, if mouse (actual mouse input) is too much work to enable, then maybe just do the native "camera" input. I don't know what the difference is, but there is some difference. Maybe that way you can keep the movement gamepad style, because native movement command is analog anyway.

Just as long as it behaves like a trackpad camera should. Idk, do you have the Steam controller or are you doing this just in code? I'm asking because i honestly don't know, and i think you don't actually need the device to program this in.

If you do have the controller, play some Warframe and the way mouse works in Warframe is how camera works basically. Portal 2 has native support, and "camera" by default, if you have that, you can try looking up that configuration and see how it works in game too, but basically, just like a mouse.

Now, it there's any difference "under the hood" so to speak, i don't know.
peterthierolf  [developer] Dec 31, 2016 @ 2:25am 
I do have the controller, but have not used it at all outside of looking into the configuration. I don't think it is a good idea to just put in some code and let others do the testing.
However, I am in no position to do a great Steam Controller setup as I am not proficient with the controller.

I will put this in the game in steps. First get the actions working on the original gamepad code so the artists can start to put in the button icons, then fiddle with the camera code. I might be able to publish this in steps as well to gather some feedback.
Vepar Dec 31, 2016 @ 5:34am 
Well you don't really need to do some grand configurations, it's enough to have native support let it mimic xinput layout and have that reflected on the UI. The users will do the rest if they want. I'm sure someone will make a different configuration eventually, the point is to have it available so that we can configure it how we want. That's the point of the Steam controller, versatility and configurability.

And whenever you do put in support, be it in steps or at once, i have Darksiders installed and i'll test it out. :)
< >
Showing 1-7 of 7 comments
Per page: 1530 50

Date Posted: Dec 30, 2016 @ 1:16am
Posts: 7