Skip to content
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

Please change the control input #25

Closed
CrimsonFork opened this issue Aug 14, 2019 · 21 comments
Closed

Please change the control input #25

CrimsonFork opened this issue Aug 14, 2019 · 21 comments

Comments

@CrimsonFork
Copy link

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
Copy link
Owner

agateau commented Aug 15, 2019

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:

  • steering buttons on the side
  • accelerometer based

@CrimsonFork
Copy link
Author

CrimsonFork commented Aug 15, 2019 via email

@agateau
Copy link
Owner

agateau commented Aug 20, 2019

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

new-hud-buttons

@CrimsonFork
Copy link
Author

CrimsonFork commented Aug 20, 2019 via email

@CrimsonFork
Copy link
Author

CrimsonFork commented Aug 20, 2019 via email

@CrimsonFork
Copy link
Author

I forgot to add that it looks cool otherwise.

@agateau
Copy link
Owner

agateau commented Aug 21, 2019

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
Copy link
Author

CrimsonFork commented Aug 21, 2019

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
Copy link

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.
  • the first one, a vertical bar, occupies the height of the controls, representing acceleration/brake, and sits at the center of the second bar. (hereafter, "Blue" and "Blue bar")

    • the width of Blue represents the steer control's lower deadzone (minimum treshold before turning), which can be changed.
      • the default deadzone for turning should be 0, and with that, the Blue bar becomes just a vertical line.
  • the second one, a horizontal bar, occupies the width of the controls, representing the steer controls. sits at the center of the height of the first bar when idle. ("Orange", "Orange bar")

    • the height of Orange, represents the acceleration/brake control's lower deadzone (minimum treshold before accelerating or breaking), which may be changed.
      • the default deadzone for accelerating should be a couple of pixels. but no matter the default value, if it is kept at the default value, the height of the Orange bar should be a third of Blue's height.
  • whenever the player is controlling the car, Orange should always follow the touch,

    • the height of the Orange bar should follow the Y position of the touch, with its limits being the height of Blue;
    • whenever the player is turning, a bar should fill the Orange bar, starting from the center, up to the X position of the touch;
  • whenever the player controls the acceleration and brake ("Torque"), a blue rectangle should give the visual cue of the limits of this control. (the explanation now would probably be about how i imagine it rendering, 'cause idk how to explain better ^^')

    • two blue rectangles with Blue's width, occupying the first 1/3, and the third 1/3 of Blue's height, masked by Orange. that means that they will only be visible inside of the area of Orange, making it a faster visual cue for the limits of the vertical controls.
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
Copy link
Owner

agateau commented Sep 8, 2019

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

@Wilker-uwu
Copy link

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
Copy link
Author

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
Copy link

Wilker-uwu commented Sep 9, 2019

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
Copy link
Author

CrimsonFork commented Sep 9, 2019

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
Copy link

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

@Wilker-uwu
Copy link

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
Copy link
Owner

agateau commented Sep 14, 2019

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

@Obsidien
Copy link

Obsidien commented Sep 23, 2019

I like the current control input 😢, 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
Copy link
Owner

agateau commented Sep 24, 2019

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

@Obsidien
Copy link

Perfect then. 😃

@Wilker-uwu
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants