agateau / pixelwheels

A top-down retro racing game for PC (Linux, macOS, Windows) and Android.
https://agateau.com/projects/pixelwheels
Other
417 stars 60 forks source link

Please change the control input #25

Closed CrimsonFork closed 2 years ago

CrimsonFork commented 5 years ago

The game (or what's yet there of it) is fun so far, thanks for that, but the control scheme (Smartphone) is… not immersive. My suggestion would be to either use the gravity sensor for stirring and de-/accleration, or at least to have the buttons for stirring on their corresponding side of the screen. Maybe different options in the settings would be helpful. Speaking of options, one for reversing the stirring direction when going backwards would be cool as well.

agateau commented 5 years ago

I am not sure why you would want reversing the steering when going backwards: it's done this way to match how a steering wheel works.

I agree with the need for other input modes. I plan to add two:

CrimsonFork commented 5 years ago

I know very well that that's how a stirring wheel works, however, in my experience, especially with that rotation-fixed top-down view, it takes very much ressources to rethink why pushing the same button makes the car rotate in the different direction all out of the sudden.

That behavior makes perfect sence in an environment where the size of the wheels is relevant, which, in the given scenario, certainly isn't.

Also the fact that you aren't actively pushing forward in the first place makes it more difficult as well, which separates it more to the feeling of flying a drone that can rotate, than driving a ground based vehicle with respective physics.

Having said all that, I don't think that would have been an issue as much, if I wouldn't have to think about where the ←/→ buttons at all times in the first place. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.

agateau commented 5 years ago

Here is a screenshot of the upcoming new touch input control:

new-hud-buttons

CrimsonFork commented 5 years ago

Maybe consider a little more padding to the bottom? -- Sent from my Android device with K-9 Mail. Please excuse my brevity.

CrimsonFork commented 5 years ago

Also where is the backwards button? I think it's very much needed in some scenarios. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.

CrimsonFork commented 5 years ago

I forgot to add that it looks cool otherwise.

agateau commented 5 years ago

I tried adding a backward button in the middle between the left and right buttons, but it was really awkward to use. I ended connecting backward to "press both left and right together". This means you can't go backward and in a direction at the same time, but it felt better.

I am probably also going to add an "analog pad" or "slider" input control where you drag your left thumb left and right to steer and have a classic "brake" under your right thumb.

I experimented with an accelerometer-based input control, but I think it does not work. It does not map well to a top-down game. I'd be interested if any of you know of a top-down game with good accelerometer-based control.

CrimsonFork commented 5 years ago

Ok, so I have some crazy ideas.

  1. Instead of for stirring, use the acclerometer as a direction pointer which the car snaps to. Horizontal position is neutral, and everything else points to a direction. The only not janky use of an acclerometer I've seen so far is in those different variations of the thing where you control a marble, so, essentially, it's just that.

  2. One could use the volume buttons as sort of a shoulder trigger on most devices. But I think that only using either of those buttons would make sense, not assigning both to different functions. Imo a brake there makes the most sense.

  3. While not a top-down game per se, the side-scroller Geometry Dash has a very interesting way of controlling the kind of freeform Y-position modes. The Wave and Ship, while having different physics, are controlled by one button and generally go up when pressed and down when not. So, I realize that it'll probably be very unintuitive to get used to, but maybe it'll be actually useful, if th3 car stirrs left by default, there is a button [→↓(right-handed layout)] to stir right instead, a button to not stir above it [→] and a brake button [↓←].

Wilker-uwu commented 5 years ago

i would like to add to this topic :3

i have an idea for on-screen turn controls, and while it needs some polishing, i think it would be great to have this in the game.

the idea is that the turn should have the shape of two bars overlapping like a cross.
With all that said, here's a visual example. it is a sketch i tried to make to make it easier to understand somehow.

a visual example of the two bar controls

what do you think? \^w\^

also please reply if you have any questions \^\^

agateau commented 5 years ago

I am not sure I get it, but it feels like a virtual analog stick to me.

Wilker-uwu commented 5 years ago

it actually is, but i think it would avoid the confusion of, for instance, having a circle to represent two completely different kinds of controls (torque and direction) like in games such as SuperTuxKart, while still keeping them together in a single button.

the main problem i find with analog sticks for this is that it makes it hard to just find the point where you can turn to a direction completely while still keeping the acceleration. the result is that at many times you end up losing speed while turning. a gameplay screenshot of SuperTuxKart for reference

the idea is that the information of both controls are kept visible without having to limit it to a d-pad, for example.

CrimsonFork commented 5 years ago

I think that this is overcomplicated. Pretty much the same would be achieved with a translucent area that where x is stirring and y is de-/accleration, with 0 in the middle (or maybe ⅔ from top?) and autolock to x=50% and y=0% (from top).

Generally however, I am against any sort of analog input on a touchscreen, since one has no tactile feedback so it requires you to look directly at the controls, instead of your character. Personally, for me it doesn't feel anywhere near good on Replica Island, SuperTuxKart nor Minetest.

With binary input, like buttons, you may have less precise control, but, once you have memorized their position, you have tactile feedback (whether you're pressing) which is a much better flow for a fast-paced game.

On a side-note, Mindustry has an interesting control scheme, where you can move your view-port freely and your vehicle flies at it's speed to the center of the viewed scene. Though I don't think it'd fit Pixel Wheels.

Wilker-uwu commented 5 years ago

that's understandable.

but if you think about it though, it's just a rectangle-shaped analog stick, just like the one you have just described. in fact, you can actually make it just a rectangle, and it will still be just as easy as a d-pad, while keeping the precision of an analog stick, but without the confusion of a circle-shped one.

a rectangle-shaped driving control scheme. the red and blue lines inside of it intersects at 
the point where the touch happens.

as for Mindustry, that might require path tracing, while having to deal with the car stopping all the time depending in how fast the player moves the camera. not sure if it is a good idea.

edit: i've just remembered how bad i am at simplifying things lol
CrimsonFork commented 5 years ago

Don't sweat it, you just gotta try to think putside of the box sometimes. Eventually you'll notice that it's literally just a box. If we were to assemble your description physically I'm sure it'd be great.

The Mindustry example is just a side-note, in fact, it'd be really horrible to have to race like that.

But I've got two other ideas now

  1. What if we had a literal stirring wheel, presumeably auto-stirring to front, and moving only relatively to the finger, unlike a D-Pad would.

  2. What if we had a wheel thingy that could be either pointed to whereever the finger is relatively to it, or it's pointer can be rotated to show in a global direction, and the car snaps to that?

Zireael07 commented 5 years ago

The wheel thing is a good idea! I saw it done in Real Racing 3 as one of the steering options.

Wilker-uwu commented 5 years ago

in a thread at the SuperTuxKart forum (link) someone had shown this video (https://streamable.com/nd1as) of the upcoming steering wheel controls of the game, and i found it really good.

with that, a minor improvement that could polish the idea would be to have the center area of the wheel represent "neutral" or something, as in turning but not acc. or deacc., acting like a joystick deadzone, so you can easily change from front to reverse without having to release the finger from the screen.

what do you think? :3

agateau commented 5 years ago

I think a rectangular analog stick is doable, I will experiment with it.

Obsidien commented 5 years ago

I like the current control input :cry:, and I’d be missing the ability to control backward direction. Is there a way to keep it as an option, or is your code not structured for doing that?

Oh, and as a test, I’d also try just interverting the buttons: go backward and go left on the left of the side, and use gift and go wright on the right.

agateau commented 5 years ago

@Obsidien I am not removing the current control input: I am adding a new one.

Obsidien commented 5 years ago

Perfect then. :smiley:

Wilker-uwu commented 5 years ago

i don't think that a rectangular (or square-shaped?) analog stick would limit the ability for doing reverse driving