-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Add SDL Wii Remote + Nunchuk profiles #13965
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add SDL Wii Remote + Nunchuk profiles #13965
Conversation
@MayImilae We can go down the rabbit hole here :) I think you'd be pleased with these bindings. I've been making Mii's for like 30m using the IR controls on a joystick. |
b2583c1
to
9f5ff21
Compare
Shouldn't be absolute input for pointer on right stick? I mean the pointer will be more aligned to the screen area this way. But maybe I'm wrong. And could be uncomfortable. |
fbd7dd8
to
7a4369d
Compare
The problem with shipping defaults for Wii is that there is no way to make a single configuration for all games. Games do whatever the hell they want with the weird inputs available to them, and there is a TON of variation. There are patterns of course, but if you pick a single pattern and say all get this default, you'll be excluding hundreds if not thousands of games. And that's not even including differences in mapping preferences, it's just objectively, if you ship a single configuration it will not work with vast swaths of the Wii library. For example, this config will not work with sideways Wii Remote titles. New Super Mario Bros Wii, Kirby's Return to Dreamland, Sonic and the Secret Rings, etc etc. Some of these will let you use Wii Remote + Nunchuk or Classic Controller instead, but many don't. After all the Wii Remote is included with the system, so why would they have backups? They won't work with this config, and that's hundreds of games. This won't work with games that use the Classic Controller. Most Classic Controller games also work with other configurations (excluding Virtual Console and such), but the classic controller is closer to a traditional controller, and might give a better experience, but you are not including that here. Lots of users will want to use that capability. This will not work with "weird" motion control games. So like, Wii Sports and Wii Sports Resort, Monkey Ball Banana Blitz and it's upright remote weirdness, Just Dance, various golf and tennis games, Go Vacation, WarioWare, etc etc etc. That's a few hundred games too, many of which are the most unique of the Wii library. Supporting these would require unique profiles for single games, or even unique profiles for single minigames in single games. It's hell. I don't have total number for all of these, but are you ok with shipping a default that just doesn't work with hundreds of games in the Wii library? The only way to cover the library with defaults is to make profiles for common input types and then use GameINIs to set which profile to use on a game by game basis. That's tedious, laborious work. But that doesn't cover the really weird cases, like, how do you emulate holding a nunchuk and wii remote sideways and pointed at eachother and steering a jetski like it's a bicycle? I don't know! And how do we do games that switch between many zanny control styles, like Wii Sports Resort, Go Vacation, or heaven forbid Warioware? And that's not even getting into the bazillion variations that people like for the Wii Remote. Since it doesn't map cleanly, the user configurations out there are all over the place! If we ship one configuration as default, we'll get complaints. Is that better than forcing them to configure it manually? Maybe? This is the rabbit hole of Wii Remote defaults. I don't know how to solve this problem without either a bazillion hours and/or ignoring hundreds if not thousands of games with a default. I've thought about this problem a fair bit over the years, and this is what I think is the best way forward. The first is to ship profiles of the common types (Wii Remote / Wii Remote + Nunchuk, Sideways Wii Remote, Classic Controller) and not set any of them as a default, and let users pick what works for a game. It won't "just work" but it could allow them to just pick a profile and go, which is a lot faster than mapping on their own. This won't handle the zanny cases like WarioWare, but they at least have been introduced to where mapping is and can make mappings on their own from there. That's the easiest solution, and we could just stop there. That is my personal preference to be honest, but that is unambitious. The next step is where things get messy - spread these profiles of common controller types as defaults via GameINIs. This would require modifying our GameINI system so our per-game control defaults don't override a user's mapping, but it's possible. The downside is that it would take a lot of work, and there are still issues of not covering most of the library unless we have shipped a default for a game. It's a big job. It's possible to just add a default to all the known sideways wii remote and all the known classic controller games and then just set Wii Remote + Nunchuk as a generic default - we'll still be missing quite a few and can't cover zanny games, but that would cover the majority, as well as most popular games too. And more could be added over time. A complication is user preferences. Unlike the GameCube were the face button variations are fairly well known, I don't know common mappings for the Wii Remote. What you have here seems like a sane Wii Remote + Nunchuk setup to me (I appreciate B button on RT, a good touch) but users are weird and I've seen things. So some research would be required, such as scouring the forum and asking on discord and what not. Anyway, there's the infodump. I'm not against a default per se, but we need to think about and decide where the line of support will be. I'm not ok with promising default controls and then ignoring half the library, but I know that there are plenty of games that are just impossible to support with default controls. Where to draw the line? That has paralyzed us for a long time. |
Maybe we can define names for those different configs (upright, sideway, etc). And how many will be necessary. Three will cover most games? Five? Ten? And just leaving them there, for user selection, without making it mandatory. |
Just to be clear there isn't a default here, it's just a profile. |
I was playing Wii sports resort with the Wiimote + Nunchuk + Gyroscope profile after disconnecting the nunchuk. |
But @MayImilae the issue is, if we don't provide something for the user, it doesn't necessarily mean the user will be able to figure it out. It took me about an hour of research to make this Wiimote + Nunchuk profile, as I was referencing 3D Allstars, an actual Wii remote + Nunchuk and my Xbox and PS4 controller. When you disconnect the Nunchuk the profile becomes an upright Wii remote. And if you think it's useful, I could add a Sideways Wiimote as well. I could also add a classic controller profile. I think the advantage to these being stock profiles is that they serve as useful starting points should the user want to edit them. Overall I think it's really important to include these and it'll make it easier for users to play their Wii library without necessarily having a Wii remote. |
I'd recommend trying the profile. I spent a lot of time tuning the IR controls to feel natural, and over all I've found something which made navigating Wii menus feel fun and natural (especially with A and B being on Shoulder and Bumper, which is required to make grabbing Mii's comfortable, among other things) |
This is what I get for reviewing at 5 in the morning. Well that's good then, but it would be good to include profiles for Horizontal Wii Remote and Classic Controller as well. Both are at least pretty easy. |
Tested with my Dual Sense Edge (Steam turned off of course). I'll use playstation buttons to reference the physical controller being used since it's less confusing. I primarily tested the gyro versions. General
Wii Remote + Nunchuk Notes:
Sideways Wii Remote Notes:
Classic Controller Notes:
|
79d5f12
to
73ec415
Compare
|
Classic/Left Stick/Down = `Left Y-` | ||
Classic/Left Stick/Left = `Left X-` | ||
Classic/Left Stick/Right = `Left X+` | ||
Classic/Left Stick/Calibration = 100.00 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason we would want to set this to 100 instead of the default? (Idem for all the other Calibration
values)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
100 probably makes sense since this creates a perfect circle of radius 1. This is probably the closest thing to being correct for a typical "SDL Gamepad".
D-Pad/Down = `Pad S` | `Left Y-` | ||
D-Pad/Left = `Pad W` | `Left X-` | ||
D-Pad/Right = `Pad E` | `Left X+` | ||
IR/Dead Zone = 10. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason we would want to set this to 10 instead of the default? (Idem for all Dead Zone
values)
Wii Remote + Nunchuck Controls
Kinda depends on #13961
Basically
Which maps very closely to how you hold the Wii Remote + Nunchuck. I tested it and it works very well in Super Mario Galaxy, New Super Mario Bros, and Rhythm Heaven Fever. The Wii Pointer works very well with relative input + the auto hiding, I had to change the yaw range so that the sensitivity was the same in each axis.
The IR hides using
hold(`Right X+` + `Right X-` + `Right Y+` + `Right Y-` < 0.1, 5.0)
This makes playing games like Super Mario Galaxy much easier.
I had to change the relative FOV's for the relative IR in order to make the sensitivity feel even in both axis on a 16:9 monitor. The pointer can go off screen, but because the IR resets after 5 seconds it's not a big deal.