Scirra / Construct-feature-requests

A place to submit feature requests and suggestions for Construct.
https://www.construct.net
8 stars 1 forks source link

Expanding Gamepad Integration for Analog Stick Input #99

Open AppDude27 opened 5 months ago

AppDude27 commented 5 months ago

Reviewed guidelines

Checked for duplicate suggestions

Summary

Besides "CompareAxis", the gamepad object doesn't have a lot of documentation or support for analog stick controls. I think it would be great if Construct expanded gamepad integration for their gamepad object by including methods such as:

This would be very useful for GUI integrations like menu systems. With Construct 3D being more prevalent, this will also help the first person shooter template and 3D games in general get more support for controllers and handheld devices like Steam Deck, ROG Ally, Lenovo Legion Go, and MSI Claw.

Possible workarounds or alternatives

I do not know of any existing alternatives and workarounds other than what third party community members have created. In the unofficial Construct Discord community, some community members have proposed some solutions that involve "trigger only once" and using timers to check how long a person is holding a stick down for, but nothing like what I described up above.

Proposed solution

I honestly don't have a proposed solution for this. The Construct Developers could do the compare axis functionality for us behind the scenes and maybe package that into methods like "On Analog Stick Flick" and "On Analog Stick Held Down". I'm sorry I don't have more to contribute to this.

Why is this idea important?

Construct 3D is an amazing feature. More people are taking advantage of the 3D features that Construct 3 has to offer. Being able to utilize FPS games with a controller would make playing those games great on Steam Deck and other handheld consoles currently on the market. No longer do developers need to worry about putting their games on consoles when we can export to Windows and Linux based handhelds like Steam Deck, Rog Ally, Lenovo Legion Go, MSI Claw, etc etc.

Accessibility is another reason as well. Not everyone can play games with keyboard and mouse, and giving developers the ease of use for expanded analog stick functionality would make programming games with them much easier.

The documentation for CompareAxis on the C3 website is also not super filled out. There are also limited examples on the example browser that require heavy math and physics that aren't very easily explainable.

I recently played my indie game on a ROG ally with my analog stick functionality and my game felt magical. I then docked it to my TV with a bluetooth controller and the feeling was just pure wonder and amazement. Imagine teens/young adults/adults being able to spend less time learning the analog stick math/physics involves and giving them the opportunity to be able to just run a method like "on analog stick flick" or "on analog stick held down" to control their games and make the 3D games they've always wanted to make with ease?

Having an expanded list gamepad options would allow developers to avoid lots of time spent on trying to make sure their GUI's are working as expected. If I can chain together an input system that is compatible with keyboard "wasd" and a gamepad "d-pad" and an "analog stick", it would be great.

Additional remarks

Thank you for considering this as a feature to Construct 3. I have been a longtime C3 user and I think having a feature that expands upon existing functionality like gamepad expansion would be great and benefit all users on the platform.

NickR-Git commented 5 months ago

To expand upon this suggestion, a less XBox-specific implementation of ACEs would be appreciated. There's 9 axis and X number of buttons that the gamepad API can handle, and these vary by controller. While we can currently use expressions to access the state of these additional buttons and axis, it feels more like working around the available conditions and actions instead of taking advantage of them, in addition to not having analog button support by default.

Also, analog button support though conditions/actions would be appreciated, time has passed since gamepad support was added and this is a standard feature on a majority of modern controllers, both first and third party, in 2024.