So before the team I mentioned this idea on the Community Forums, but I figured I might as well post it here, especially now that I have a (decently) working system. As you know you control the microbe orientation by moving the mouse, which in the last version felt very awkward, and I felt it might feel better if I used A & D to turn left and right. Of course this potentially conflicts with different environments, so I’d like to break them down just to talk about them.
First we have to define our movement environments. I would say there are 3 basic forms. 2D (current microbe stage) 3D (ocean and flying creatures), and 3D constrained (most land animals and bottom-dwellers). Next there is the question of whether the movement is absolute or relative. Right now our microbes move relative to the orientation, ie. moving left will actually move you towards the right edge of the screen if you are facing downwards. If we create a pseudo-pod creature then it might make more sense to get rid of orientation and instead have absolute movements and rotation. That gives us six possibly different movement schematics.
How might these work using the mouse to determine orientation?
2D-relative = current control scheme
3D-relative = choose direction using mouse and w to move that way, s back, a left, d right, and space and left_shift/control for up and down relative to your up and down (for instance if you are upside down space would make you go towards the earth)
3D constrained-relative = Minecraft controls
2D-absolute = this would likely be very confusing as wasd would move you in a direction while the mouse simply rotates without any clear indication which direction you’re facing, then again maybe not
3D-absolute = wasd move you along the x and z axis with space and shift controlling movement along the y axis, mouse lets you look around
3D constrained-absolute = same as previous
Now with a keyboard based control scheme (at least as I envision it, the mouse is still useful)
2D-relative = w and s control forward and backward movement, a and d rotate left and right, q and e move left and right (in the way that a and d currently do), mouse is free for other things like targeting
3D-relative = w tilts forward, s tilts back, a rotates left, d rotates right, q moves left, e moves right, space moves up, shift moves down, and two other keys (perhaps f and b) move forward and back, meanwhile the mouse lets you look around without changing your orientation
3D constrained-relative same as previous but w moves forward and s back
2D-absolute = same as 2D relative but maybe switch q and e with a and d
3D-absolute = same as mouse controls
3D constrained-absolute = same as previous.
If you want to try the control scheme I created, here’s a link to my fork and branch that I created for it. https://github.com/trackman1997/Thrive/tree/alternative_control_scheme
The two files changed are player_microbe_control.h & player_microbe_control.cpp