Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Rewired - Advanced Input for Unity

Discussion in 'Assets and Asset Store' started by guavaman, Sep 25, 2014.

  1. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    25,804
    Hi!

    Wondering what the best way to use the vibration feature is to get the effects of rumble felt in AAA games. I'd to read up on these things - never worked with rumble before, so any advice is welcome. Was thinking of parsing sound samples at editor time or something and converting it to something usable. Maybe animationcurve...
     
  2. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Hi,

    Rewired currently only exposes an amplitude value per motor (0-1 value) for vibration. I have thought of creating a vibration/FF effect file format, but haven't gotten around to that, partly because it would also need an editor, other FF format converters, audio file converters, etc. That would probably not happen until a more generic force feedback API is exposed for use with steering wheels, etc. AnimationCurve is a perfectly good way to handle it when amplitude is the only variable (frequency may also be available on some platforms). Just playback your curve calling Joystick.SetVibration with the current value. I would recommend that you limit your vibration update rate to 60 fps if your game is meant to be cross-platform (consoles). Rewired generally handles it for you automatically, but some platforms (and even some controllers on the same platform) don't take well to being hammered with output reports at very high frequencies.
     
    Last edited: May 7, 2017
    hippocoder likes this.
  3. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Very good information. It sounds like what people are reporting is similar what we are seeing, except I haven't heard anyone say the X axis (steering) doesn't work. It is indeed very odd that some users are seeing the clutch on the Y axis since all of Logitech's other wheels use the Sliders for the clutch with the Y axis being reserved for when the pedals are set to shared axis mode.

    Indeed. I would wager this is a driver issue. It wouldn't make any sense for there to be different models or firmware revisions that make the device not conform to Logitech's own standards.

    So many variables... Yes, Steam does a lot of DLL hooking voodoo which can cause many problems. The one way I know of to make almost all HID devices completely stop working is to enable Generic Gamepad support in the Big Picture mode options. This tries to turn every HID device attached into an XInput device, but it fails on most everything (flight sticks, wheels, etc.). The HID devices are hidden from the application and a non-working XInput device is exposed.

    Interesting. I believe what he means by "goes up off of the steering axis" is that it's bound to the Y axis. The Windows gamepad tool shows the X and Y axis as a 2D joystick axis. The wheel turn would be X and normally nothing would be bound to Y for Logitech's wheels unless shared pedal axes is enabled. This wheel, for some people, is binding the clutch to Y. For others, it's bound to Logitech's standard Slider 0 or Slider 1 (depending on if you're using Raw Input or Direct Input.)
     
  4. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    Thanks for the this update. That HAT fixes will be very helpful.

    I am probably one of the very few who actually liked the Atari Jaguar controller.
     
    guavaman likes this.
  5. Freznosis

    Freznosis

    Joined:
    Jul 16, 2014
    Posts:
    190
    @guavaman

    This is indeed a weird problem, so far I've told the testers to uninstall the drivers, run the cleaner that was mentioned in the above post, reinstall drivers and then send me their results. Will be waiting for their replies however so far changing the identifiers seems to work for almost everybody however it seems the clutch problem is still hit or miss for some people and I don't feel that can simply be changed since it works for some and doesn't for others. It seems this is all due to the negligence of Logitech and their PC driver development. :/

    I wonder how other games handle this problem since it isn't really, dare I say, "our" fault?
     
  6. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    This is definitely a very interesting case with the G29. I believe you mentioned earlier that you are using Direct Input right? Are all of your testers using the same version of Windows? Are they using USB2 or USB3 ports? Are all of your testers also using steam? Are all of your testers using the same Logitech driver version?

    http://support.logitech.com/en_us/product/g29-driving-force/downloads#

    When I just checked the latest driver was 8.92.67 (19-APR-2017).

    Since I do not have a later model Logitech wheel (G29 or G920) is it easy to check what version of the firmware it is running? If so are all of your users using running the same version of firmware?


    I saw this thread which was interesting reading on how other games attempt to handle it.

    https://forum.studio-397.com/index....-drivers-g920-has-firmware-fix-for-rf2.52173/

    This was also an interesting discussion.

    http://www.edracing.com/edr/Logitech_G29.php
     
    Last edited: May 8, 2017
  7. mespino

    mespino

    Joined:
    Nov 26, 2015
    Posts:
    15
    Hello,

    I have a weird behaviour. I think it is a bug but I will explain it, maybe it is a desired behaviour.

    I have two players, P1 and P2, and an action, AxisTest.
    I have created a keyboard map and I have mapped Up Arrow to the axis, and I have added the map to both players
    If I get the input when I press the Up arrow, it is 1.0 for both players, P1 and p2.

    Everything ok until here.

    Now, I have the same players, P1 and P2, and the same action, AxisTest
    I create a jostick map for a xbox 360, and I map AxisTest to the Right Trigger. I add the map to both player.

    If I press the Right Trigger, AxisTest is 1.0 for P1, but it is 0.0 for P2

    Now the interesting thing. If I change the order for the players. (P2 before P1), the value is 1.0 for P2 and 0.0 for P1.

    It seems as if the first player gets the input and avoid the others to take it.

    I could reproduce this with the jostick controller but I have the suspision that it is the same with custom controllers.

    I have tried it with the rewired latest version in the asset store.

    Please find attach and example

    Edit: I have read in the documentation that It is a desired behaviour.

    So I am going to explain my issue, maybe is a better aproach.

    My project should run I a very different kind of hardware.
    Depending on the hardware, I choose a Player, so the rest of the project can abstract of the hardware. This is why I have the same controller in two players, because at the same time, only one player will be used, depending on the hardware.

    Each player have keyboard maps, custom controllers, mouse and jostick.
    The players are very similar but I order of clearly I have splitted them


    with the right trigger 360 P1 before P2.png with the right trigger 360 P2 before P1.png with the up arrow keyboard.png
     

    Attached Files:

    Last edited: May 8, 2017
  8. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    @mesprino

    It sounds like you want a single controller to work for multiple Players. Read about Joystick Assignment in the Controllers documentation. The solution is simple -- assign the controllers yourself to all Players and don't use the joystick auto-assignment system. Rewired's default configuration is designed for the most common use case which does not include joystick sharing. The system can do it, but you have to script that part.

    I'm not understanding your description of what you want to do. Can you explain it more clearly, perhaps step by step?
     
  9. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    This is definitely not isolated to Logitech. For example, a huge number of Xbox One controller problems have existed and mutated over the last 1.5 years with continually broken Xbox One controller driver updates on Windows 10. Each change to the driver breaks something new. Even though it's not a problem with Rewired, people still expect it to just work, both gamers and developers alike, and I am the one they contact, so I have been continually finding workarounds, changing how things work, adding special case code, even rewriting an entire new native input system not based on the Raw Input API and accessing the device at an even lower level, and more to try to detect and fix the issues with various versions of the driver. Dependency issues are all just part of publishing any software on any platform unfortunately.

    From the looks of the posts on Logitech's forums, it doesn't sound like other games can handle it either. The YouTube review he posted showed that the clutch didn't work in Dirt Rally. I imagine Logitech's SDK may work correctly, I don't know. Sometimes there's nothing you can do about issues in dependencies. That's why the fairly large Known Issues page exists in Rewired's documentation.

    I am getting access to a G29 soon so I should be able to work with it and at least try to figure out why the driver returns the wrong axes sometimes. I may not be able to recreate it, but I will try.
     
    Last edited: May 8, 2017
  10. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Indeed. At this point it's just a game of detective playing Logitech tech support.

    I do believe firmware is a very likely possibility. It looks like Logitech released a firmware update for the G29 which added support for split pedals. That very likely means they didn't plan on having split pedal support initially. When they added it, they must have put them on the Y axis like all of their other wheels and moved the clutch to a slider, again like their other wheels. It's very possible all these users with the issues have owned the wheels since before the firmware update and have never updated them.
     
  11. jococo

    jococo

    Joined:
    Dec 15, 2012
    Posts:
    232
    I'm restoring an old 5.2 project that had Rewired.

    I'm updating project to 5.5.3 and want to update Rewired.

    What's the best process to clear out old version of Rewired so update is fine?
     
  12. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    The documentation on updating Rewired is located here:

    http://guavaman.com/projects/rewired/docs/Updating.html
     
    guavaman likes this.
  13. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    Rewired 1.1.2.0 is available on the asset store! Yea!
     
    guavaman likes this.
  14. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    Based on what I posted earlier it was a very interesting reading.

    http://www.edracing.com/edr/Logitech_G29.php

    David Tucker works for iRacing and got an early version of the G29 based on this section of the previously website.

    >>>>
    IMPORTANT UPDATE (Oct 2015)
    David's G29 has been identified as a pre-production model that used the G27 firmware and drivers.
    David was not aware he was testing a pre-production model.
    <<<<

    It will be interesting what you discover with regards to firmware differences are in the production G29 models.

    This was also interesting reading this Review which highlights some of the differences between what David found and his production version of G29.

    http://www.edracing.com/edr/G29-review.php
     
  15. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Very good info. Probably a useful tidbit from the 1st link:

    ------
    There are two versions of Logitechs software for wheels, the older Logitech Profiler version 5.10.127 and the newer Logitech Gaming Software version 8.74.80. You need the newer one, and make sure you have the latest version. There is also a firmware update hiding in the LGS software for this wheel, click on the gear icon... I don't know what it does, but you probably want to apply it.
    ------

    Even though it's referencing the G920, it probably applies to the G29 as well.
     
  16. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    @longroadhwy's advice is correct.

    Updating Rewired
     
  17. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Great!

    Be sure to read Updating Rewired before updating.

    1.1.2.0:

    Changes:
    - Nintendo Switch Joy Con controllers changed to map +/- buttons to Center 2 on the Dual Analog Gamepad Template.

    New Controller Definitions:
    - Atari Jaguar Gamepad

    Bug Fixes:
    - Fixed bad guid format in Racing Wheel Template for Logitech G920.
    - Fixed incorrect default UI submit string in RewiredStandaloneInputModule.cs introduced in 1.1.0.0.
    - Windows, Raw Input: Fixed incorrect hat values for certain rare devices.
    - Rewired Editor: Fixed bug where Custom Controllers with no Axes would prevent selecting another Custom Controller in the list.
    - Touch Controls: Fixed editor bug causing the displayed list of Axes and Buttons in the selected Touch Control to be incorrect or fail to display when Create Custom Controller enabled on the parent Touch Controller and the Custom Controller's id does not align with the index.
    - Logitech G29 definition: Fixed incorrect button indices for shifter buttons.
     
  18. mespino

    mespino

    Joined:
    Nov 26, 2015
    Posts:
    15
    Thx for your advise!!

    About my other question, what I mean is:

    My project has to work with several very different hardware inputs.

    To handle this very different hardware, I am using players to abstract the project from the input. Depending on the hardware, I choose one player or other.

    Do you think using players is the best way to handle very different hardware input?

     
    Last edited: May 9, 2017
  19. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    I don't see any advantage to using multiple Players vs a single Player. The entire Player construct exists partly to abstract input from multiple different hardware types. Keyboard, Mouse, Joystick, and Custom Controller inputs can all be handled by a single Player. You can assign as many Joysticks as you want to a Player and all of them will contribute to the input values of the Player. If you are not aware, you can change the Max Joysticks Per Player setting in the Rewired Input Manager and allow the system to auto assign all Joysticks to a single Player. This is documented on the Controllers page.

    If you need to know the hardware source of the input, there are two ways both outlined on the How To's page:

    http://guavaman.com/projects/rewired/docs/HowTos.html#get-contributing-input-sources
    http://guavaman.com/projects/rewired/docs/HowTos.html#last-used-controller
     
    Last edited: May 9, 2017
    mespino likes this.
  20. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    @FlaxenFlash @devotid @ModularBuilds

    Logitech G29 racing wheel firmware version question. The latest firmware version for the G29 I have seen is 89.0.25.

    NOTE: From what I recall the Logitech Profile tool: Has setting section under G29 that lists firmware version.

    Do you or your customers have the same firmware version for the G29 wheel?
     
  21. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    364
    I have not messed with this in a few weeks as I am buried on another project right now. I am going back to work on D Series Off Road this next week and I will let you know what I find out. :)

    I dont have a G29 But I know a few of my customers do. Imma a Thrustmaster guy. lol

    Kevin
     
  22. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    Thanks. We need to get as much input on the various firmware versions of the G29 floating around to get a better picture.
     
  23. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Hmm, the animation curve is an interesting idea. I wouldn't be surprised if AAA games do that sort of thing.

    I've done vibration on a couple of hobby games, and while I didn't do anything that fancy, I did end up creating a vibration "mixer" component that handled multiple things requesting vibration at the same time. That way if one thing is pulsing (like automatic weapon fire) and another thing is reacting to random collisions or whatnot, the mixer component could determine the final values to send for the left and right vibration motors.
     
    guavaman likes this.
  24. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    25,804
    I went with anim curves - it is fine. I would recommend updating the rumble value at a rate of 30fps or so - experiment to see.
     
    guavaman likes this.
  25. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    I like that idea. Combining animation curves and a mixer could make a pretty flexible system.
     
  26. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    That's a pretty sweet idea! Are you just talking about blending current and incoming effects, or is it more complicated than that (i.e. blending with priority, or something else entirely)?
    Indeed. I've just been using somewhat hard-coded values and some lerping/tweening if needed, but I hadn't thought of using AnimationCurves for vibration effects. Curves + a mixer sounds like a pretty nice combo -- I might have to revisit that at some point.
     
  27. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    In both games, I used a pretty simple system where each type of rumble effect (specific type of weapon, turbo boost, collision, etc) had its own entry in a dictionary with preset values for the starting and ending vibration amount, the time to apply the vibration, and an independent timer for each effect. Each entry also stores whether it applies to the left, right, or both motors.

    To start an effect, I just do something like: RumbleManager.Instance.Rumble(RumbleType.BeamFireTwinBarrel) to do a "fire and forget" type of thing, which starts the timer for that effect.

    I just lerp the start and end vibration values over the time of each effect (often the start and end is the same though). But yeah, replacing the lerp with specific animation curves for each effect might let you do some cooler stuff.

    I take the largest value of any "playing" effect for any given frame, and use that for the left and right vibration values. So it's just a way to handle any number of parallel vibration effects going at once. I don't think there's any need to apply blending or priorities, since simply taking the highest value per frame to me makes the most sense anyway (and works great).
     
  28. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    Thanks for elaborating! That's much simpler than I was imagining, and seems like it'd have the same net-result that prioritization or blending would achieve (although, in a much easier fashion!).
     
  29. crypt0

    crypt0

    Joined:
    May 25, 2015
    Posts:
    54
    Hi,
    I am using the TouchJoysticks and it works really well, but I have some trouble with radial area. Is it possible to get an square area like the a touch region but only as an joystick? Because, when I move the joystick to the maximum position on both axis, I get a maximum value of 0.7 on both axis, but I need 1.

    For example: If I have throttle and rudder on the same joystick.Now, I give full throttle and I want to give rudder too, I will lost throttle...

    I've searched in the docu and tested a little bit around but I can't find a solution...

    Cheers
     
  30. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    No, it is not possible to make the joystick have a square working range. Everything is based on a radius calculation. I will have to change the source code and add new logic to handle a square area.
     
  31. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    My simple method only supports simplistic "one shot" vibration effects (really good enough for what I'm doing so far), but I am curious what it would take for a more flexible approach. I suppose ideally you'd want something that supported looping (like the heart beat effect in the Uncharted games when low on health) and something that could hook into any arbitrary events. Some games even sync vibration with bass audio content, though that might be a lot of work.

    As far as the animation curve idea goes, you could have a public field on some class that's a List<AnimationCurve> to allow any number of curve presets, possibly to a GameObject dedicated to keeping your curves. I suppose you could even have a generic list of curves that could be used for any kind of thing in your game, maybe referenced by index. Then you could generate a list of enums or constants in a similar way that Rewired can generate a source file with action index values.
     
  32. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    It sounds like a full-fledged audio playback system that uses vibration files instead of audio files. You might even want to account for 3D spacial effects so, for example, vibration could get stronger as you near some large machine, etc. I think taking a cue from audio systems would be a very effective approach.
     
  33. crypt0

    crypt0

    Joined:
    May 25, 2015
    Posts:
    54
    Ok, pity that it does not work yet. Thanks
     
  34. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    I mainly used one-shot effects as well. Even "looped" effects (like your heartbeat example) could technically be repeating one-shots (and that's how I usually handle repeating effects).

    Indeed, although if you go that far you might as well set up the AnimationCurves into some kind of ScriptableObject or something and you'd have reusable, portable "vibration files" that you could load via Resources or something.

    I hadn't thought of it like this, but basing a vibration system off a basic audio system is an interesting idea. (Sounds are vibrations anyway!)

    Seems like it'd be a lot of work, but for more complicated uses it could be very, very effective. It'd make the spacial vibration example easier to handle for sure.
     
  35. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    You could also make a converter to convert audio files into vibration files by just sampling the volume at a fixed interval (30-60 fps). If the file is stereo, it could be converted into two files, one for each gamepad motor. You could even do real-time audio vibration by just passing in the current volume. You'd probably want to restrict it to only use the volume of certain sound effects though.
     
  36. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    Seems like it might be better to have an editor that can sample the audio file and apply it to a curve (or curves) for editing. I think audio files might be great for certain things (explosions, gunfire, etc.) but it might need some manual massaging to make for pleasant vibration effects, especially as some controller vibration motors are better than others.

    Which actually brings up a whole other topic of normalizing vibrations for a wide variety of controllers, but I don't really want to get into that. :)
     
  37. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Yeah, me neither. :/

    How would you even do that? Cap the amplitude on the ones that have more powerful motors? I don't think the users would like those results.
     
  38. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Hmm, it does sound like a similar type of thing, even down to the one-shot vs looping concept. I'm picturing a game like Horizon: Zero Dawn with large creatures stomping around. In terms of Unity, you could have an animation event whenever a large creature's foot comes down that sends events to an "impact" handler. That could trigger a distance-scaled sound effect (though you get that for free with any audio system), a one-shot distance-scaled vibration, and perhaps some screen shake and image effects like temporarily increased motion blur.

    For looped effects like running machinery, you could start and stop the vibration effects in the exact way you handle audio. In those cases, the triggering event could just be a trigger collider. One difference is that "pause" doesn't really work in a satisfying way. I had that initially, and trying to resume a vibration effect in the middle just doesn't physically work out very well. :)
     
  39. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    I had that thought about a second after posting. :) I suppose that would let you share them between projects too, right?
     
  40. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Even for weapon effects, I've found you have to play with the timing, and it doesn't really match up with the sound effects. Like I have a rapid fire weapon and the duration of the vibration is just a very quick 0.07 second pulse. Any longer and the motors spin up too much and the shots are no longer distinct.

    Though I admit it would be handy to somehow overlay the vibration curves onto the audio in terms of roughly matching the duration if you had something more elaborate.
     
  41. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    I like it. Makes me want to start working on a new asset. :p

    All of these things and more are the reason why Rewired doesn't have a Force Feedback system apart from setting vibration. I've thought of some of these things before and decided it's very a big job coming up with standards, file formats, editors, an API, all of which need to account for not only gamepad vibration with a variable number of motors (1-4+), but also FF steering wheels and sticks, and work consistently across platforms. Some would also want to describe FF in terms of effects like physics - ice, gravel, etc. Wheels and sticks also work differently as they can be used to apply force against the user's motions. I want to do it right, but haven't taken the time to really flesh out the requirements.

    Good observation about pausing.
     
  42. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    I hadn't thought of that. Resolution. The motors certainly have some latency too, both from the sending of the output report and from the time the motors take to ramp up to speed which would vary by device. You'd probably want start the vibration before the sound effect and visuals.
     
  43. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    For every obvious use case, there are a hundred more obscure use cases. I will try to add this to the next release if I can.
     
  44. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    I didn't want to get into it! :)

    I'm thinking of a case like the PS4 controller vs a 360 controller. The 360 controller seems to have stronger motors, while the PS4 controller has "smoother", but less aggressive motors. I think you'd have to do some per-controller detection with the ones that you know are the weaker motors and bump up the strength for those to get consistent effects.

    So you could either design your effects for the strongest controller you've got, and bump up the effects for softer motors, or start with the softest motors and clamp the stronger ones. I'm not even sure if this would be noticeable, or even worth it, but I have noticed a pretty wide disparity in terms of motor quality, especially on some cheaper, third-party controllers.

    Yeah, that's why relying strictly on the audio waves seems like it might make the vibrations too muddled. I think there will always have to be some hand-curated changes to the curves, especially as vibration is a very tactile thing that you have to play with to get it to "feel right".

    I don't think I've ever made a "looping" vibration effect in that I have a handler keep the effect playing. I'm pretty sure I've always used repeating one-shots, as it also makes more sense in that I start an effect by triggering a vibration event somewhere in my code. Repeatedly triggering an event is easier than setting up a looping handler, especially as it kind of does the same thing in the end.

    It seems like if you resumed a vibration effect you'd have to play a secondary effect first to ramp up the motors properly. I think the only time pause/resume would work well would be if you actually pause the entire game (i.e. for a pause screen) as the user would then have some kind of expectation for some abrupt stop/start in the vibrations.

    That was my thought. Having a library of common, generic use vibration effects across projects seemed appealing.

    Don't forget, I'm sure there'd be some expectation for the Force Feedback to work on mobile as well, which sounds like a completely different can of worms. Controllers are difficult enough. :)

    I'd definitely be interested in such an asset, but I totally get your hesitation. Running these theories through my head is confusing enough if I was making a system for myself -- making a generic, one-size-fits-all solution would be even more confusing and daunting.
     
  45. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    :D

    I guess it probably couldn't be automatic then because you'd run into situations where either you're wasting motor strength on stronger motors or maxing out weaker motors long before the full effect is expected. Yeah, it's complicated... It may be possible to do something PS4 vs Xbox 360, but when you start talking generics, it all breaks down on most platforms. On Windows, XInput devices cannot be queried for type so it's impossible to tell a real X360 pad vs an Xbone pad vs the million generics. Consoles are the same -- no way to tell a clone from a real pad on PS4 or Xbox One.

    True. So an audio file would just be a way to get started. Importing an audio file would just be a button on the FF file editor then.

    Yes, definitely. You could probably use an Animation Clip.

    Might as well throw all the VR stuff in there too. And how about the wristbands and body suits with vibration nodes, FF chairs, etc. :eek:

    Indeed it's a big topic that would need a lot of research, experimentation, and testing as well as writing native libraries on all platforms.
     
  46. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Yeah, that is understandable. I kind of like that Rewired just gives you a simple method to call and you can roll whatever you want on top of it.

    Actual "force feedback" in a steering wheel almost seems like a separate topic really. The hard-core racing sims like iRacing put a LOT of effort into that. It doesn't sound like something you can really make generic too easily. Do they still sell force feedback joysticks? I used to have one a long time ago. Worked well with the early MechWarrior games.

    I could see a gamepad-specific rumble asset that was focused on PS4 and Xbox One controllers with a few preset curves, the ability to create and share curves, that had a looping feature and distance-aware events as being pretty useful for a lot of games I would be working on. Maybe I'll take a crack at it one of these days.
     
  47. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,454
    The sell force feedback yokes not exactly cheap but available. Most on the X-plane forums seem to like the Brunner force feedback yoke. They have plugins for the most popular flight simulators X-plane, Prepared3D, etc.

    https://www.brunner-innovation.swiss/product/cls-e-yoke/

    Iris has force feedback yoke.

    https://vs3.irisdynamics.com/product/idl-20004-dragonflyvr-flight-yoke/

    They also have joysticks also. Magnetic Force Feedback Joysticks.

    http://vs4.irisdynamics.com/magnetic-force-feedback-joysticks/

    This joystick looks like very similar to a typical F-16 fighter style stick like CH FighterStick ... it does use Microsoft direct input API for force feedback or Iris's specific API. They also mentioned they can create custom firmware to support what you want.

    http://vs4.irisdynamics.com/wp-cont...ar-Actuator-Joystick-Datasheet-revision-0.pdf
     
    guavaman likes this.
  48. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    I would think so too, at least at the high end. At the low end, the Direct Input FF API as well as I/O kit and Linux (both based on DI's API) are used for both FF effects and basic gamepad vibration.

    I don't know but @longroadhwy will probably find one if they do. :p

    Yeah, I had the Microsoft Sidewinder Force Feedback Pro back in the day. I don't recall ever playing any games with it other than just whatever came with it for testing. Actually, I bought another recently when I added support for all the Sidewinders in Rewired. I didn't know it worked with the MechWarrior games. I never played much of any PC MW except the original. Loved that game.

    Honestly, that's probably all 99% of developers would want.
     
    Last edited: May 16, 2017
    LaneFox likes this.
  49. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    What did I tell ya? :confused: (He posted before I hit reply...)
     
  50. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,849
    Oh boy, yokes too. I didn't know about those. The Iris Dynamics stick very looks cool.